Perbedaan antara kebuntuan dan kelaparan | Deadlock vs Starvation

Anonim

Deadlock vs Starvation

Perbedaan utama antara kebuntuan dan kelaparan adalah hubungan sebab dan akibat antara keduanya; Ini adalah kebuntuan yang menyebabkan kelaparan. Perbedaan lain yang menarik antara kebuntuan dan kelaparan adalah bahwa kebuntuan adalah masalah sementara kelaparan bisa, terkadang, membantu untuk keluar dari jalan buntu. Di dunia komputer, saat menulis program komputer akan ada lebih dari satu proses / thread yang nantinya akan berjalan satu demi satu demi memenuhi layanan yang dibutuhkan untuk program. Oleh karena itu, agar memiliki sistem yang adil, pemrogram harus memastikan bahwa semua proses / benang akan menerima atau mendapatkan akses yang cukup terhadap sumber daya yang mereka butuhkan. Jika tidak, akan ada kebuntuan, dan akan mengakibatkan kelaparan nanti. Umumnya, sistem yang adil tidak mengandung kebuntuan atau kelaparan. Kebuntuan dan kelaparan akan terjadi terutama ketika banyak benang bersaing untuk sumber daya yang terbatas.

Apa itu Deadlock?

Sebuah kebuntuan adalah suatu kondisi yang terjadi ketika dua benang atau proses menunggu satu sama lain untuk menyelesaikan tugas . Mereka hanya akan menutup telepon tapi tidak pernah berhenti atau menyelesaikan tugas mereka. Dalam ilmu komputer, kebuntuan bisa dilihat kemana-mana. Dalam database transaksi, ketika dua proses masing-masing dalam transaksi sendiri memperbarui dua baris informasi yang sama namun dalam urutan yang berlawanan, akan menyebabkan kebuntuan. Dalam pemrograman bersamaan, kebuntuan bisa terjadi ketika dua aksi bersaing akan saling menunggu untuk dilanjutkan. Dalam sistem telekomunikasi, kebuntuan bisa terjadi akibat kehilangan atau korupsi sinyal.

Saat ini, kebuntuan merupakan salah satu masalah utama dalam sistem multiprocessing dan komputasi paralel. Sebagai solusi, sistem penguncian yang disebut proses sinkronisasi diimplementasikan untuk perangkat lunak dan perangkat keras.

Apa itu Kelaparan?

Dari kamus ilmu kedokteran, kelaparan adalah akibat dari kekurangan nutrisi yang parah atau total yang dibutuhkan untuk pemeliharaan kehidupan. Demikian pula, dalam ilmu komputer, kelaparan adalah masalah yang dihadapi ketika banyak benang atau proses menunggu sumber daya yang sama, yang disebut kebuntuan .

Agar bisa keluar dari jalan buntu, salah satu proses atau benang harus menyerah atau memutar kembali sehingga benang atau proses lainnya dapat menggunakan sumber daya. Jika ini terus terjadi dan proses atau thread yang sama harus menyerah atau memutar kembali setiap saat sambil membiarkan proses atau benang lain menggunakan sumber daya, maka proses atau benang yang dipilih, yang digulung kembali akan mengalami situasi yang disebut kelaparan.Oleh karena itu, agar bisa keluar dari jalan buntu, kelaparan adalah salah satu solusi . Oleh karena itu, terkadang kelaparan disebut sejenis livelock . Bila ada banyak proses atau benang prioritas tinggi, proses prioritas atau benang yang lebih rendah akan selalu kelaparan dalam kebuntuan.

Ada banyak kelaparan seperti kelaparan pada sumber daya dan yang kelaparan di CPU . Ada banyak contoh umum tentang kelaparan. Mereka adalah masalah pembaca pembaca dan masalah filsuf makan, yang lebih terkenal. Ada lima filsuf bisu yang duduk di meja bundar dengan mangkuk spaghetti. Forks ditempatkan di antara masing-masing pasangan filsuf yang berdekatan. Setiap filsuf harus bergantian berpikir dan makan. Namun, seorang filsuf hanya bisa makan spaghetti saat ia memiliki garpu kiri dan kanan.

The "Dining Philosophers"

Apa perbedaan antara Deadlock dan Starvation?

• Proses:

• Dalam kebuntuan, dua benang atau proses akan saling menunggu dan keduanya tidak maju ke depan.

• Dalam kelaparan, ketika dua atau lebih benang atau proses menunggu sumber daya yang sama, seseorang akan memutar kembali dan membiarkan yang lain menggunakan sumber daya terlebih dahulu dan selanjutnya benang atau proses yang kelaparan akan dicoba lagi. Oleh karena itu, semua benang atau proses bagaimanapun akan dilanjutkan.

• Dalam kebuntuan, kedua benang / proses prioritas tinggi, serta benang / proses dengan prioritas rendah, akan menunggu satu sama lain secara tak terbatas. Tidak pernah berakhir.

• Tapi, dalam kelaparan, prioritas rendah akan menunggu atau mundur tapi prioritas tertinggi akan dilanjutkan.

• Waiting or Lock:

• Kebuntuan adalah menunggu melingkar. Kelaparan adalah sejenis livelock dan terkadang membantu keluar dari jalan buntu.

• Kebuntuan menyebabkan kelaparan, namun kelaparan tidak menyebabkan kebuntuan.

• Penyebab:

• Kebuntuan akan terjadi karena saling mengesampingkan, menahan dan menunggu, tidak menunggu preemption atau melingkar.

• Kelaparan terjadi karena kelangkaan sumber daya, pengelolaan sumber daya yang tidak terkontrol, dan prioritas proses.

Ringkasan:

Kebuntuan vs Kelaparan

Kebuntuan dan kelaparan adalah beberapa masalah yang terjadi karena data ras dan kondisi balapan yang terjadi selama pemrograman serta penerapan perangkat keras. Dalam kebuntuan, dua benang akan terus menunggu satu sama lain tanpa mengeksekusi sementara, dalam kelaparan, satu benang akan berputar kembali dan membiarkan benang lainnya menggunakan sumbernya. Sebuah kebuntuan akan menyebabkan kelaparan sedangkan kelaparan akan membantu sebuah thread untuk keluar dari jalan buntu.

Gambar Courtesy:

Komputer oleh Steve Jurvetson dari Menlo Park, AS (CC BY 2. 0)

The "Filsuf Makan" oleh Bdesham (CC BY-SA 3. 0)