Perbedaan utama antara kebuntuan dan kelaparan adalah hubungan sebab dan akibat di antara mereka; Kebuntuanlah yang menyebabkan kelaparan. Perbedaan lain yang menarik antara jalan buntu dan kelaparan adalah bahwa jalan buntu adalah masalah sementara kelaparan bisa, kadang-kadang, membantu keluar dari jalan buntu. Dalam dunia komputer, ketika menulis sebuah program komputer akan ada lebih dari satu proses / utas yang secara bersamaan akan berjalan satu demi satu untuk memenuhi layanan yang diperlukan untuk program tersebut. Oleh karena itu, untuk memiliki sistem yang adil, programmer harus memastikan bahwa semua proses / utas akan menerima atau mendapatkan akses yang cukup ke sumber daya yang mereka butuhkan. Jika tidak, akan ada jalan buntu, dan itu akan menyebabkan kelaparan nanti. Secara umum, sistem yang adil tidak mengandung deadlock atau kelaparan. Kebuntuan dan kelaparan akan terjadi terutama ketika banyak utas bersaing untuk sumber daya yang terbatas.
Jalan buntu adalah suatu kondisi yang terjadi ketika dua utas atau proses menunggu satu sama lain untuk menyelesaikan tugas. Mereka hanya akan menutup telepon tetapi tidak pernah berhenti atau menyelesaikan tugas mereka. Dalam ilmu komputer, kebuntuan bisa dilihat di mana-mana. Dalam database transaksi, ketika dua proses masing-masing dalam transaksi sendiri memperbarui dua baris informasi yang sama tetapi dalam urutan yang berlawanan, akan menyebabkan kebuntuan. Dalam pemrograman bersamaan, kebuntuan dapat terjadi ketika dua tindakan yang saling bersaing akan menunggu satu sama lain untuk maju. Dalam sistem telekomunikasi, kebuntuan dapat terjadi karena kehilangan atau kerusakan sinyal.
Saat ini, kebuntuan adalah salah satu masalah utama dalam sistem multiprosesing dan komputasi paralel. Sebagai solusinya, sistem penguncian disebut sinkronisasi proses diimplementasikan untuk perangkat lunak maupun perangkat keras.
Dari kamus ilmu kedokteran, kelaparan adalah hasil dari kekurangan nutrisi yang dibutuhkan untuk pemeliharaan kehidupan. Demikian pula, dalam ilmu komputer, kelaparan adalah masalah yang ditemui ketika beberapa utas atau proses menunggu sumber yang sama, yang disebut jalan buntu.
Untuk keluar dari jalan buntu, salah satu proses atau utas harus menyerah atau memutar kembali agar utas atau proses lainnya dapat menggunakan sumber daya. Jika ini terus menerus terjadi dan proses atau utas yang sama harus menyerah atau memutar balik setiap kali sambil membiarkan proses atau utas lainnya menggunakan sumber daya, maka proses atau utas yang dipilih, yang digulung kembali akan mengalami situasi yang disebut kelaparan. Karena itu, untuk keluar dari jalan buntu, kelaparan adalah salah satu solusinya. Karena itu, terkadang kelaparan disebut semacam livelock. Ketika ada banyak proses atau utas prioritas tinggi, proses atau utas prioritas rendah akan selalu mengalami kebuntuan.
Mungkin ada banyak kelaparan seperti kelaparan pada sumber daya dan kelaparan di CPU. Ada banyak contoh umum tentang kelaparan. Mereka adalah masalah pembaca-penulis dan masalah makan filsuf, yang lebih terkenal. Ada lima filsuf diam yang duduk di meja bundar dengan mangkuk spageti. Garpu ditempatkan di antara masing-masing pasangan filsuf yang berdekatan. Setiap filsuf harus secara bergantian berpikir dan makan. Namun, seorang filsuf hanya bisa makan spageti ketika ia memiliki garpu kiri dan kanan.
“Filsuf Makan”
• Dalam kebuntuan, kedua utas atau proses akan menunggu satu sama lain dan keduanya tidak melanjutkan.
• Dalam kelaparan, ketika dua atau lebih utas atau proses menunggu sumber yang sama, satu akan mundur dan membiarkan yang lain menggunakan sumber daya terlebih dahulu dan selanjutnya utas kelaparan atau proses akan mencoba lagi. Karenanya, semua utas atau proses bagaimanapun akan melanjutkan.
• Dalam kebuntuan, kedua utas / proses prioritas tinggi, serta utas / proses prioritas rendah, akan saling menunggu tanpa batas. Tidak pernah berakhir.
• Tetapi, dalam kelaparan, yang berprioritas rendah akan menunggu atau memutar kembali tetapi yang berprioritas tinggi akan dilanjutkan.
• Kebuntuan adalah menunggu bundar.
• Kelaparan adalah sejenis livelock dan terkadang membantu keluar dari jalan buntu.
• Kebuntuan menyebabkan kelaparan, tetapi kelaparan tidak menyebabkan kebuntuan.
• Kebuntuan akan terjadi karena saling pengecualian, tahan dan tunggu, tidak ada preemption atau menunggu bundar.
• Kelaparan terjadi karena kelangkaan sumber daya, pengelolaan sumber daya yang tidak terkendali, dan prioritas proses.
Ringkasan:
Jalan buntu dan kelaparan adalah beberapa masalah yang terjadi karena ras data dan kondisi ras yang terjadi selama pemrograman serta implementasi perangkat keras. Dalam kebuntuan, dua utas akan saling menunggu tanpa batas tanpa mengeksekusi sementara, dalam kelaparan, satu utas akan memutar kembali dan membiarkan utas lainnya menggunakan sumber daya. Kebuntuan akan menyebabkan kelaparan sedangkan kelaparan akan membantu utas untuk keluar dari kebuntuan.
Gambar: