Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Deadlock dan Starvation di OS

Deadlock dan Starvation keduanya adalah kondisi di mana proses meminta sumber daya telah lama tertunda. Meskipun kebuntuan dan kelaparan keduanya berbeda satu sama lain dalam banyak aspek. Deadlock adalah suatu kondisi di mana tidak ada proses yang diproses, dan masing-masing menunggu sumber daya yang telah diperoleh oleh proses lainnya. Di sisi lain, dalam Kelaparan, proses dengan prioritas tinggi terus menggunakan sumber daya mencegah proses prioritas rendah untuk memperoleh sumber daya. Mari kita bahas beberapa perbedaan lagi antara jalan buntu dan kelaparan dengan bantuan tabel perbandingan yang ditunjukkan di bawah ini.

Grafik perbandingan

Dasar untuk perbandinganJalan buntuKelaparan
DasarJalan buntu adalah di mana tidak ada proses dilanjutkan, dan diblokir.Kelaparan adalah tempat proses berprioritas rendah diblokir, dan proses berprioritas tinggi berlangsung.
Kondisi yang timbulTerjadinya mutual mutual, Hold and wait, No preemption dan Circular menunggu secara bersamaan.Penegakan prioritas, pengelolaan sumber daya yang tidak terkendali.
Nama lainTunggu melingkar.Lifelock.
Sumber dayaDi jalan buntu, sumber daya yang diminta diblokir oleh proses lainnya.Dalam kelaparan, sumber daya yang diminta terus digunakan oleh proses prioritas tinggi.
PencegahanMenghindari saling pengecualian, tahan dan tunggu, dan bundar menunggu dan memungkinkan preemption.Penuaan

Definisi Deadlock

Deadlock adalah situasi di mana beberapa proses dalam CPU bersaing untuk sumber daya terbatas yang tersedia dalam CPU. Di sini, setiap proses memegang sumber daya dan menunggu untuk mendapatkan sumber daya yang dimiliki oleh beberapa proses lainnya. Semua proses menunggu sumber daya secara melingkar. Pada gambar di bawah ini, Anda dapat melihat bahwa Proses P1 telah memperoleh sumber daya R2 yang diminta oleh proses P2 dan Proses P1 meminta sumber daya R1 yang lagi-lagi dipegang oleh R2. Jadi proses P1 dan P2 membentuk jalan buntu.

Deadlock adalah masalah umum dalam sistem operasi multiprosesing, sistem terdistribusi, dan juga dalam sistem komputasi paralel. Ada empat kondisi yang harus terjadi secara bersamaan untuk meningkatkan kondisi kebuntuan, yaitu saling pengecualian, tahan dan menunggu, tidak ada preemption, dan menunggu melingkar.

  • Pengecualian bersama: Hanya satu proses pada satu waktu yang dapat menggunakan sumber daya jika proses lain meminta sumber daya yang sama, harus menunggu sampai proses menggunakan sumber daya melepaskannya.
  • Tahan dan Tunggu: Suatu proses harus memegang sumber daya dan menunggu untuk mendapatkan sumber daya lain yang dimiliki oleh beberapa proses lainnya.
  • Tanpa Preemption: Proses memegang sumber daya tidak dapat dicegah. Proses memegang sumber daya harus melepaskan sumber daya secara sukarela ketika telah menyelesaikan tugasnya.
  • Circular wait: Proses harus menunggu sumber daya secara melingkar. Misalkan kita memiliki tiga proses {P0, P1, P2}. P0 harus menunggu sumber daya yang dimiliki oleh P1; P1 harus menunggu untuk mendapatkan sumber daya yang dimiliki oleh proses P2, dan P2 harus menunggu untuk mendapatkan proses yang dimiliki oleh P0.

Meskipun ada beberapa aplikasi yang dapat mendeteksi program yang mungkin menemui jalan buntu. Tetapi sistem operasi tidak pernah bertanggung jawab untuk mencegah kebuntuan. Merupakan tanggung jawab programmer untuk merancang program bebas kebuntuan. Ini dapat dilakukan dengan menghindari kondisi di atas yang diperlukan untuk terjadinya kebuntuan

Definisi Kelaparan

Kelaparan dapat didefinisikan sebagai ketika suatu proses meminta sumber daya dan sumber daya itu telah digunakan secara terus-menerus oleh proses-proses lainnya, maka proses permintaan itu menghadapi kelaparan. Dalam kelaparan, suatu proses siap untuk mengeksekusi menunggu CPU mengalokasikan sumber daya. Tetapi proses tersebut harus menunggu tanpa batas waktu karena proses-proses lain terus-menerus memblokir sumber daya yang diminta.

Masalah kelaparan umumnya terjadi dalam algoritma penjadwalan prioritas . Dalam algoritma penjadwalan prioritas, proses dengan prioritas yang lebih tinggi selalu dialokasikan sumber daya, mencegah proses prioritas yang lebih rendah dari mendapatkan sumber daya yang diminta.

Penuaan bisa menyelesaikan masalah kelaparan. Penuaan secara bertahap meningkatkan prioritas proses yang telah lama menunggu sumber daya. Penuaan mencegah proses dengan prioritas rendah untuk menunggu sumber daya tanpa batas.

Perbedaan utama antara kebuntuan dan kelaparan di OS

  1. Dalam kebuntuan, tidak ada proses yang berjalan untuk eksekusi, setiap proses akan diblokir menunggu sumber daya yang diperoleh oleh proses lain. Di sisi lain, kelaparan adalah suatu kondisi di mana proses-proses yang memiliki prioritas lebih tinggi diizinkan untuk memperoleh sumber daya secara terus-menerus dengan mencegah proses-proses dengan prioritas rendah untuk memperoleh sumber daya yang mengakibatkan pemblokiran tak terbatas dari proses-proses berprioritas rendah.
  2. Kebuntuan muncul ketika empat kondisi saling pengecualian, tahan dan tunggu, tidak ada preemption, dan menunggu melingkar terjadi secara bersamaan. Namun, kelaparan terjadi ketika prioritas proses telah ditegakkan saat mengalokasikan sumber daya, atau ada manajemen sumber daya yang tidak terkendali dalam sistem.
  3. Jalan buntu sering disebut dengan nama menunggu melingkar, sedangkan kelaparan disebut kunci hidup .
  4. Di Deadlock sumber daya diblokir oleh proses sedangkan, dalam kelaparan, proses terus digunakan oleh proses dengan prioritas tinggi.
  5. Jalan buntu dapat dicegah dengan menghindari kondisi seperti saling pengecualian, Tahan dan tunggu, dan menunggu melingkar dan dengan memungkinkan preemption dari proses yang memegang sumber daya untuk waktu yang lama. Di sisi lain, kelaparan bisa dicegah dengan penuaan .

Kesimpulan:

Deadlock dan Starvation menunda eksekusi proses dengan memblokirnya. Di satu sisi di mana kebuntuan dapat menyebabkan proses kelaparan, dan di sisi lain kelaparan bisa membuat proses keluar dari kebuntuan.

Top