Lompat ke isi

Deadlock: Perbedaan antara revisi

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Maintenance script (bicara | kontrib)
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28962195; atribusi sumber disertakan.
 
Maintenance script (bicara | kontrib)
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi
 
Baris 1: Baris 1:
Dalam komputasi serentak, '''kebuntuan''' adalah setiap situasi di mana tidak ada anggota dari beberapa kelompok entitas yang dapat melanjutkan karena masing-masing entitas menunggu anggota lain, termasuk dirinya sendiri, untuk mengambil tindakan, seperti mengirim pesan atau, lebih umum, melepaskan kunci. Kebuntuan adalah masalah umum dalam sistem [[multipengolahan]], [[komputasi paralel]], dan [[Komputasi terdistribusi|sistem terdistribusi]], karena dalam konteks ini sistem sering kali menggunakan kunci [[perangkat lunak]] atau [[perangkat keras]] untuk menengahi sumber daya bersama dan menerapkan sinkronisasi proses.
[[File:Process_deadlock.svg|thumb|right|280px|Kedua proses tersebut membutuhkan sumber daya untuk melanjutkan eksekusi. ''P1'' memerlukan tambahan sumber daya ''R1'' dan memiliki sumber daya ''R2'', ''P2'' memerlukan tambahan sumber daya ''R2'' dan memiliki ''R1'' ; tidak ada proses yang dapat dilanjutkan]]


Dalam [[sistem operasi]], kebuntuan terjadi ketika suatu [[Proses (komputasi)|proses]] atau [[Utas (komputer)|utas]] memasuki keadaan menunggu karena sumber daya sistem yang diminta ditahan oleh proses menunggu lainnya, yang kemudian menunggu sumber daya lain ditahan oleh proses menunggu lainnya. Jika suatu proses tetap tidak dapat mengubah keadaannya [[Tanpa Batas Waktu|tanpa batas waktu]] karena sumber daya yang diminta sedang digunakan oleh proses lain yang sedang menunggu, maka sistem dikatakan mengalami kebuntuan.
Dalam komputasi serentak, '''kebuntuan''' adalah setiap situasi di mana tidak ada anggota dari beberapa kelompok entitas yang dapat melanjutkan karena masing-masing entitas menunggu anggota lain, termasuk dirinya sendiri, untuk mengambil tindakan, seperti mengirim pesan atau, lebih umum, melepaskan kunci.<ref>George Coulouris. [https://archive.org/details/distributedsyste0000coul_e0z4 Distributed Systems Concepts and Design]. Pearson. 2012. hlm. [https://archive.org/details/distributedsyste0000coul_e0z4/page/716 716]. ISBN 978-0-273-76059-7.</ref> Kebuntuan adalah masalah umum dalam sistem [[multipengolahan]], [[komputasi paralel]], dan [[Komputasi terdistribusi|sistem terdistribusi]], karena dalam konteks ini sistem sering kali menggunakan kunci [[perangkat lunak]] atau [[perangkat keras]] untuk menengahi sumber daya bersama dan menerapkan sinkronisasi proses.<ref>David Padua. [https://books.google.com/books?id=Hm6LaufVKFEC&q=deadlock&pg=PA524 Encyclopedia of Parallel Computing]. Springer. 2011. hlm. 524. ISBN 9780387097657.</ref>


Dalam sistem komunikasi, kebuntuan terjadi terutama karena hilangnya atau rusaknya sinyal, bukan karena perebutan sumber daya.
Dalam [[sistem operasi]], kebuntuan terjadi ketika suatu [[Proses (komputasi)|proses]] atau [[Utas (komputer)|utas]] memasuki keadaan menunggu karena sumber daya sistem yang diminta ditahan oleh proses menunggu lainnya, yang kemudian menunggu sumber daya lain ditahan oleh proses menunggu lainnya.<ref>Babak Falsafi. ''Encyclopedia of Parallel Computing''. Springer US. 2011. hlm. 524–527. doi:10.1007/978-0-387-09766-4_282. ISBN 978-0-387-09765-7.</ref> Jika suatu proses tetap tidak dapat mengubah keadaannya [[Tanpa Batas Waktu|tanpa batas waktu]] karena sumber daya yang diminta sedang digunakan oleh proses lain yang sedang menunggu, maka sistem dikatakan mengalami kebuntuan.<ref>Abraham Silberschatz. [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Operating System Principles]. Wiley-India. 2006. hlm. 237. ISBN 9788126509621.</ref>


Dalam sistem komunikasi, kebuntuan terjadi terutama karena hilangnya atau rusaknya sinyal, bukan karena perebutan sumber daya.<ref>G. Michael Schneider. [https://books.google.com/books?id=gQK0pJONyhgC&q=deadlock+signal+lost&pg=PA271 Invitation to Computer Science]. Cengage Learning. 2009. hlm. 271. ISBN 978-0324788594.</ref>


== Kondisi yang diperlukan secara individu dan kondisi yang cukup secara bersama untuk terjadinya kebuntuan ==
== Kondisi yang diperlukan secara individu dan kondisi yang cukup secara bersama untuk terjadinya kebuntuan ==
Situasi kebuntuan pada suatu sumber daya hanya dapat muncul jika seluruh kondisi berikut terjadi secara bersamaan dalam suatu sistem:
Situasi kebuntuan pada suatu sumber daya hanya dapat muncul jika seluruh kondisi berikut terjadi secara bersamaan dalam suatu sistem:<ref>Abraham Silberschatz. [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Operating System Principles]. Wiley-India. 2006. hlm. 239. ISBN 9788126509621.</ref>


# ''Pengecualian bersama :'' Setidaknya satu sumber daya harus disimpan dalam mode yang tidak dapat dibagikan; artinya, hanya satu proses pada satu waktu yang dapat menggunakan sumber daya tersebut. Jika tidak, proses tidak akan dicegah untuk menggunakan sumber daya bila diperlukan. Hanya satu proses yang dapat menggunakan sumber daya pada waktu tertentu.
# ''Pengecualian bersama :'' Setidaknya satu sumber daya harus disimpan dalam mode yang tidak dapat dibagikan; artinya, hanya satu proses pada satu waktu yang dapat menggunakan sumber daya tersebut.<ref>''Operating System Concepts''. Wiley. 2012. hlm. 319. ISBN 978-1-118-06333-0.</ref> Jika tidak, proses tidak akan dicegah untuk menggunakan sumber daya bila diperlukan. Hanya satu proses yang dapat menggunakan sumber daya pada waktu tertentu.<ref>[http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock]. ''nob.cs.ucdavis.edu''.</ref>
# ''Tahan dan tunggu'' atau ''simpan sumber daya:'' suatu proses saat ini memegang setidaknya satu sumber daya dan meminta sumber daya tambahan yang ditahan oleh proses lain.
# ''Tahan dan tunggu'' atau ''simpan sumber daya:'' suatu proses saat ini memegang setidaknya satu sumber daya dan meminta sumber daya tambahan yang ditahan oleh proses lain.
# ''Tidak ada perubahan siaran :'' sumber daya hanya dapat dilepaskan secara sukarela oleh proses yang memegangnya.
# ''Tidak ada perubahan siaran :'' sumber daya hanya dapat dilepaskan secara sukarela oleh proses yang memegangnya.
# ''Tungguan melingkar:'' setiap proses harus menunggu sumber daya yang ditahan oleh proses lain, yang pada gilirannya menunggu proses pertama melepaskan sumber daya tersebut. Secara umum, ada [[Himpunan (matematika)|serangkaian]] proses menunggu, ''P'' = { ''P'' <sub>1</sub>, ''P'' <sub>2</sub>, ..., ''P'' <sub>''N''</sub> }, sehingga ''P'' <sub>1</sub> menunggu sumber daya yang dimiliki oleh ''P'' <sub>2</sub>, ''P'' <sub>2</sub> menunggu sumber daya yang dimiliki oleh ''P'' <sub>3</sub> dan seterusnya hingga ''PN'' menunggu sumber daya <sub>''dimiliki''</sub> oleh ''P'' <sub>1</sub>.
# ''Tungguan melingkar:'' setiap proses harus menunggu sumber daya yang ditahan oleh proses lain, yang pada gilirannya menunggu proses pertama melepaskan sumber daya tersebut. Secara umum, ada [[Himpunan (matematika)|serangkaian]] proses menunggu, ''P'' = { ''P'' <sub>1</sub>, ''P'' <sub>2</sub>, ..., ''P'' <sub>''N''</sub> }, sehingga ''P'' <sub>1</sub> menunggu sumber daya yang dimiliki oleh ''P'' <sub>2</sub>, ''P'' <sub>2</sub> menunggu sumber daya yang dimiliki oleh ''P'' <sub>3</sub> dan seterusnya hingga ''PN'' menunggu sumber daya <sub>''dimiliki''</sub> oleh ''P'' <sub>1</sub>.<ref>Abraham Silberschatz. [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Operating System Principles]. Wiley-India. 2006. hlm. 237. ISBN 9788126509621. Silberschatz, Abraham (2006). [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems ''Operating System Principles''] (7th ed.). Wiley-India. p. 237. ISBN 9788126509621 . [https://web.archive.org/web/20220125085137/https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Archived] from the original on 25 January 2022 . Retrieved 16 October 2020 .</ref><ref>K. Shibu. [https://books.google.com/books?id=8hfn4gwR90MC&q=%22waiting+for+a+resource%22&pg=PA446 Intro To Embedded Systems]. Tata McGraw-Hill Education. 2009. hlm. 446. ISBN 9780070145894.</ref>


Keempat kondisi ini dikenal sebagai ''kondisi Coffman'' dari uraian pertamanya dalam artikel tahun 1971 oleh Edward G. Coffman,
Keempat kondisi ini dikenal sebagai ''kondisi Coffman'' dari uraian pertamanya dalam artikel tahun 1971 oleh Edward G. Coffman,<ref>K. Shibu. [https://books.google.com/books?id=8hfn4gwR90MC&q=%22waiting+for+a+resource%22&pg=PA446 Intro To Embedded Systems]. Tata McGraw-Hill Education. 2009. hlm. 446. ISBN 9780070145894.</ref>


Meskipun kondisi ini cukup untuk menghasilkan kebuntuan pada sistem sumber daya contoh tunggal, kondisi ini hanya menunjukkan kemungkinan kebuntuan pada sistem yang memiliki banyak contoh sumber daya.
Meskipun kondisi ini cukup untuk menghasilkan kebuntuan pada sistem sumber daya contoh tunggal, kondisi ini hanya menunjukkan kemungkinan kebuntuan pada sistem yang memiliki banyak contoh sumber daya.<ref>[https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html Operating Systems: Deadlocks]. ''www.cs.uic.edu''.</ref>


== Penanganan kebuntuan ==
== Penanganan kebuntuan ==
Kebanyakan sistem operasi saat ini tidak dapat mencegah kebuntuan. Ketika kebuntuan terjadi, sistem operasi yang berbeda meresponsnya dengan cara non-standar yang berbeda. Sebagian besar pendekatan bekerja dengan mencegah terjadinya salah satu dari empat kondisi umum, terutama yang keempat. Pendekatan utama adalah sebagai berikut.
Kebanyakan sistem operasi saat ini tidak dapat mencegah kebuntuan.<ref>Abraham Silberschatz. [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Operating System Principles]. Wiley-India. 2006. hlm. 237. ISBN 9788126509621.</ref> Ketika kebuntuan terjadi, sistem operasi yang berbeda meresponsnya dengan cara non-standar yang berbeda. Sebagian besar pendekatan bekerja dengan mencegah terjadinya salah satu dari empat kondisi umum, terutama yang keempat.<ref>Brian L. Stuart. [https://books.google.com/books?id=B5NC5-UfMMwC&q=coffman+conditions&pg=PA112 Principles of operating systems]. Cengage Learning. 2008. hlm. 446. ISBN 9781418837693.</ref> Pendekatan utama adalah sebagai berikut.


=== Mengabaikan kebuntuan ===
=== Mengabaikan kebuntuan ===
Dalam pendekatan ini diasumsikan bahwa kebuntuan tidak akan pernah terjadi. Ini juga merupakan penerapan [[Algoritma Ostrich|algoritma Burung Unta]]. Pendekatan ini awalnya digunakan oleh [[MINIX]] dan [[Unix|UNIX]]. Hal ini digunakan ketika interval waktu antara terjadinya kebuntuan besar dan kehilangan data yang terjadi setiap kali dapat ditoleransi.
Dalam pendekatan ini diasumsikan bahwa kebuntuan tidak akan pernah terjadi. Ini juga merupakan penerapan [[Algoritma Ostrich|algoritma Burung Unta]].<ref>Brian L. Stuart. [https://books.google.com/books?id=B5NC5-UfMMwC&q=coffman+conditions&pg=PA112 Principles of operating systems]. Cengage Learning. 2008. hlm. 446. ISBN 9781418837693.</ref><ref>Andrew S. Tanenbaum. [https://books.google.com/books?id=l6sDRvKvCQ0C&q=Tanenbaum+ostrich&pg=PA177 Distributed Operating Systems]. Pearson Education. 1995. hlm. 117. ISBN 9788177581799.</ref> Pendekatan ini awalnya digunakan oleh [[MINIX]] dan [[Unix|UNIX]].<ref>K. Shibu. [https://books.google.com/books?id=8hfn4gwR90MC&q=%22waiting+for+a+resource%22&pg=PA446 Intro To Embedded Systems]. Tata McGraw-Hill Education. 2009. hlm. 446. ISBN 9780070145894.</ref> Hal ini digunakan ketika interval waktu antara terjadinya kebuntuan besar dan kehilangan data yang terjadi setiap kali dapat ditoleransi.


Mengabaikan kebuntuan dapat dilakukan dengan aman jika kebuntuan secara formal terbukti tidak pernah terjadi. Contohnya adalah kerangka RTIC.
Mengabaikan kebuntuan dapat dilakukan dengan aman jika kebuntuan secara formal terbukti tidak pernah terjadi. Contohnya adalah kerangka RTIC.<ref>[https://rtic.rs/0.5/book/en/ Preface - Real-Time Interrupt-driven Concurrency].</ref>


=== Pemeriksaan ===
=== Pemeriksaan ===
Di bawah deteksi kebuntuan, kebuntuan diperbolehkan terjadi. Kemudian keadaan sistem diperiksa untuk mendeteksi telah terjadi kebuntuan dan selanjutnya diperbaiki. Algoritma digunakan untuk melacak alokasi sumber daya dan status proses, lalu memutar kembali dan memulai ulang satu atau lebih proses untuk menghilangkan kebuntuan yang terdeteksi. Memeriksa kebuntuan yang telah terjadi dapat dilakukan dengan mudah karena sumber daya yang telah dikunci dan/atau diminta oleh setiap proses diketahui oleh penjadwal sumber daya sistem operasi.
Di bawah deteksi kebuntuan, kebuntuan diperbolehkan terjadi. Kemudian keadaan sistem diperiksa untuk mendeteksi telah terjadi kebuntuan dan selanjutnya diperbaiki. Algoritma digunakan untuk melacak alokasi sumber daya dan status proses, lalu memutar kembali dan memulai ulang satu atau lebih proses untuk menghilangkan kebuntuan yang terdeteksi. Memeriksa kebuntuan yang telah terjadi dapat dilakukan dengan mudah karena sumber daya yang telah dikunci dan/atau diminta oleh setiap proses diketahui oleh penjadwal sumber daya sistem operasi.<ref>Andrew S. Tanenbaum. [https://books.google.com/books?id=l6sDRvKvCQ0C&q=Tanenbaum+ostrich&pg=PA177 Distributed Operating Systems]. Pearson Education. 1995. hlm. 117. ISBN 9788177581799.</ref>


Setelah kebuntuan terdeteksi, kebuntuan dapat diperbaiki dengan menggunakan salah satu metode berikut:
Setelah kebuntuan terdeteksi, kebuntuan dapat diperbaiki dengan menggunakan salah satu metode berikut:


# ''Penghentian proses:'' satu atau lebih proses yang terlibat dalam kebuntuan dapat dibatalkan. Seseorang dapat memilih untuk membatalkan semua [[Proses (komputasi)|proses]] bersaing yang terlibat dalam kebuntuan tersebut. Hal ini memastikan bahwa kebuntuan diselesaikan dengan pasti dan cepat.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#x5B; ''<nowiki>kutipan diperlukan</nowiki>'' &#x5D;</sup> Namun biayanya tinggi karena sebagian perhitungan akan hilang. Atau, seseorang dapat memilih untuk membatalkan satu proses pada satu waktu hingga kebuntuan teratasi. Pendekatan ini mempunyai overhead yang tinggi karena setelah setiap pembatalan suatu algoritma harus menentukan apakah sistem masih dalam kebuntuan.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#x5B; ''<nowiki>kutipan diperlukan</nowiki>'' &#x5D;</sup> Beberapa faktor harus dipertimbangkan saat memilih kandidat untuk penghentian, seperti prioritas dan usia proses.
# ''Penghentian proses:'' satu atau lebih proses yang terlibat dalam kebuntuan dapat dibatalkan. Seseorang dapat memilih untuk membatalkan semua [[Proses (komputasi)|proses]] bersaing yang terlibat dalam kebuntuan tersebut. Hal ini memastikan bahwa kebuntuan diselesaikan dengan pasti dan cepat.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#x5B; ''<nowiki>kutipan diperlukan</nowiki>'' &#x5D;</sup> Namun biayanya tinggi karena sebagian perhitungan akan hilang. Atau, seseorang dapat memilih untuk membatalkan satu proses pada satu waktu hingga kebuntuan teratasi. Pendekatan ini mempunyai overhead yang tinggi karena setelah setiap pembatalan suatu algoritma harus menentukan apakah sistem masih dalam kebuntuan.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#x5B; ''<nowiki>kutipan diperlukan</nowiki>'' &#x5D;</sup> Beberapa faktor harus dipertimbangkan saat memilih kandidat untuk penghentian, seperti prioritas dan usia proses.
# ''Perubahan siar'' ''sumber daya:'' sumber daya yang dialokasikan ke berbagai proses dapat didahulukan secara berturut-turut dan dialokasikan ke proses lain hingga kebuntuan terpecahkan.<sup class="noprint Inline-Template" style="white-space:nowrap;">&#x5B; ''[[wikipedia:Pemastian|verifikasi gagal]]'' &#x5D;</sup>
# ''Perubahan siar'' ''sumber daya:'' sumber daya yang dialokasikan ke berbagai proses dapat didahulukan secara berturut-turut dan dialokasikan ke proses lain hingga kebuntuan terpecahkan.<ref>[https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.2/lsf_admin/resource_preemption_about.html IBM Knowledge Center]. ''www.ibm.com''.</ref><sup class="noprint Inline-Template" style="white-space:nowrap;">&#x5B; ''[[wikipedia:Pemastian|verifikasi gagal]]'' &#x5D;</sup>


=== Pencegahan ===
=== Pencegahan ===
Pencegahan kebuntuan bekerja dengan mencegah terjadinya salah satu dari empat kondisi Coffman.
Pencegahan kebuntuan bekerja dengan mencegah terjadinya salah satu dari empat kondisi Coffman.


* Menghapus kondisi ''saling pengecualian'' berarti tidak ada proses yang memiliki akses eksklusif ke sumber daya. Hal ini terbukti mustahil bagi sumber daya yang tidak dapat dikumpulkan. Namun bahkan dengan sumber daya yang terbatas, kebuntuan masih bisa terjadi. Algoritma yang menghindari saling pengecualian disebut algoritma sinkronisasi nirhalang.
* Menghapus kondisi ''saling pengecualian'' berarti tidak ada proses yang memiliki akses eksklusif ke sumber daya. Hal ini terbukti mustahil bagi sumber daya yang tidak dapat dikumpulkan. Namun bahkan dengan sumber daya yang terbatas, kebuntuan masih bisa terjadi. Algoritma yang menghindari saling pengecualian disebut algoritma sinkronisasi nirhalang.
* Kondisi ''tunggu dan tahan'' atau ''simpanan sumber daya'' dapat dihilangkan dengan mewajibkan proses untuk meminta semua sumber daya yang diperlukan sebelum memulai (atau sebelum memulai serangkaian operasi tertentu). Pengetahuan tingkat lanjut ini sering kali sulit dipenuhi dan, dalam kasus apa pun, merupakan penggunaan sumber daya yang tidak efisien. Cara lain adalah dengan mengharuskan proses meminta sumber daya hanya jika tidak ada sumber daya; Pertama, mereka harus melepaskan semua sumber daya yang mereka miliki saat ini sebelum meminta semua sumber daya yang mereka perlukan dari awal. Hal ini juga sering kali tidak praktis. Hal ini terjadi karena sumber daya mungkin dialokasikan dan tidak digunakan dalam jangka waktu lama. Selain itu, suatu proses yang membutuhkan sumber daya populer mungkin harus menunggu tanpa batas waktu, karena sumber daya tersebut mungkin selalu dialokasikan ke suatu proses, sehingga mengakibatkan kekurangan sumber daya . (Algoritma ini, seperti serialisasi token, dikenal sebagai ''algoritma semua atau tidak sama sekali'' .)
* Kondisi ''tunggu dan tahan'' atau ''simpanan sumber daya'' dapat dihilangkan dengan mewajibkan proses untuk meminta semua sumber daya yang diperlukan sebelum memulai (atau sebelum memulai serangkaian operasi tertentu). Pengetahuan tingkat lanjut ini sering kali sulit dipenuhi dan, dalam kasus apa pun, merupakan penggunaan sumber daya yang tidak efisien. Cara lain adalah dengan mengharuskan proses meminta sumber daya hanya jika tidak ada sumber daya; Pertama, mereka harus melepaskan semua sumber daya yang mereka miliki saat ini sebelum meminta semua sumber daya yang mereka perlukan dari awal. Hal ini juga sering kali tidak praktis. Hal ini terjadi karena sumber daya mungkin dialokasikan dan tidak digunakan dalam jangka waktu lama. Selain itu, suatu proses yang membutuhkan sumber daya populer mungkin harus menunggu tanpa batas waktu, karena sumber daya tersebut mungkin selalu dialokasikan ke suatu proses, sehingga mengakibatkan kekurangan sumber daya .<ref>Abraham Silberschatz. [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Operating System Principles]. Wiley-India. 2006. hlm. 244. ISBN 9788126509621.</ref> (Algoritma ini, seperti serialisasi token, dikenal sebagai ''algoritma semua atau tidak sama sekali'' .)
* Kondisi ''tanpa perubahan siaran'' juga mungkin sulit atau tidak mungkin dihindari karena suatu proses harus mampu memiliki sumber daya untuk jangka waktu tertentu, atau hasil pemrosesan mungkin tidak konsisten atau mungkin terjadi deraan. Namun, ketidakmampuan untuk menerapkan perubahan siaran dapat mengganggu algoritma ''prioritas''. Perubahan siaran dari sumber daya yang "terkunci" umumnya menyiratkan baik-belakang, dan harus dihindari karena biaya bubungan-nya sangat mahal. Algoritma yang memungkinkan perubahsiaran mencakup algoritma bebas kunci dan bebas tunggu serta kontrol konkurensi optimis. Jika suatu proses mempunyai beberapa sumber daya dan meminta beberapa sumber daya lain yang tidak dapat segera dialokasikan padanya, maka kondisi tersebut dapat dihilangkan dengan melepaskan semua sumber daya yang ada pada proses tersebut.
* Kondisi ''tanpa perubahan siaran'' juga mungkin sulit atau tidak mungkin dihindari karena suatu proses harus mampu memiliki sumber daya untuk jangka waktu tertentu, atau hasil pemrosesan mungkin tidak konsisten atau mungkin terjadi deraan. Namun, ketidakmampuan untuk menerapkan perubahan siaran dapat mengganggu algoritma ''prioritas''. Perubahan siaran dari sumber daya yang "terkunci" umumnya menyiratkan baik-belakang, dan harus dihindari karena biaya bubungan-nya sangat mahal. Algoritma yang memungkinkan perubahsiaran mencakup algoritma bebas kunci dan bebas tunggu serta kontrol konkurensi optimis. Jika suatu proses mempunyai beberapa sumber daya dan meminta beberapa sumber daya lain yang tidak dapat segera dialokasikan padanya, maka kondisi tersebut dapat dihilangkan dengan melepaskan semua sumber daya yang ada pada proses tersebut.
* Kondisi terakhir adalah kondisi ''menunggu melingkar''. Pendekatan yang menghindari menunggu melingkar termasuk menonaktifkan interupsi selama bagian penting dan menggunakan hierarki untuk menentukan [[Himpunan terurut parsial|pengurutan sebagian]] sumber daya. Jika tidak ada hierarki yang jelas, bahkan alamat memori sumber daya telah digunakan untuk menentukan pengurutan dan sumber daya diminta dalam urutan pencacahan yang meningkat. Solusi Dijkstra juga bisa digunakan.
* Kondisi terakhir adalah kondisi ''menunggu melingkar''. Pendekatan yang menghindari menunggu melingkar termasuk menonaktifkan interupsi selama bagian penting dan menggunakan hierarki untuk menentukan [[Himpunan terurut parsial|pengurutan sebagian]] sumber daya. Jika tidak ada hierarki yang jelas, bahkan alamat memori sumber daya telah digunakan untuk menentukan pengurutan dan sumber daya diminta dalam urutan pencacahan yang meningkat.<ref>Abraham Silberschatz. [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Operating System Principles]. Wiley-India. 2006. hlm. 237. ISBN 9788126509621. Silberschatz, Abraham (2006). [https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems ''Operating System Principles''] (7th ed.). Wiley-India. p. 237. ISBN 9788126509621 . [https://web.archive.org/web/20220125085137/https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems Archived] from the original on 25 January 2022 . Retrieved 16 October 2020 .</ref> Solusi Dijkstra juga bisa digunakan.


=== Penghindaran kebuntuan ===
=== Penghindaran kebuntuan ===
Mirip dengan pencegahan kebuntuan, pendekatan penghindaran kebuntuan memastikan bahwa kebuntuan tidak akan terjadi dalam suatu sistem. Istilah "penghindaran kebuntuan" tampaknya sangat mirip dengan "pencegahan kebuntuan" dalam konteks linguistik, tetapi keduanya sangat jauh berbeda dalam konteks penanganan kebuntuan. Penghindaran kebuntuan tidak memaksakan kondisi apa pun seperti yang terlihat dalam pencegahan tetapi, di sini setiap permintaan sumber daya dianalisis secara cermat untuk melihat apakah permintaan tersebut dapat dipenuhi dengan aman tanpa menyebabkan kebuntuan.
Mirip dengan pencegahan kebuntuan, pendekatan penghindaran kebuntuan memastikan bahwa kebuntuan tidak akan terjadi dalam suatu sistem. Istilah "penghindaran kebuntuan" tampaknya sangat mirip dengan "pencegahan kebuntuan" dalam konteks linguistik, tetapi keduanya sangat jauh berbeda dalam konteks penanganan kebuntuan. Penghindaran kebuntuan tidak memaksakan kondisi apa pun seperti yang terlihat dalam pencegahan tetapi, di sini setiap permintaan sumber daya dianalisis secara cermat untuk melihat apakah permintaan tersebut dapat dipenuhi dengan aman tanpa menyebabkan kebuntuan.


Penghindaran kebuntuan mengharuskan sistem operasi diberikan informasi tambahan terlebih dahulu mengenai sumber daya mana yang akan diminta dan digunakan oleh suatu proses selama masa pakainya. Algoritma penghindaran kebuntuan menganalisis setiap permintaan dengan memeriksa bahwa tidak ada kemungkinan terjadinya kebuntuan di masa depan jika sumber daya yang diminta dialokasikan. Kelemahan dari pendekatan ini adalah diperlukannya informasi terlebih dahulu mengenai bagaimana sumber daya akan diminta di masa depan. Salah satu algoritma penghindaran kebuntuan yang paling banyak digunakan adalah algoritma Banker .
Penghindaran kebuntuan mengharuskan sistem operasi diberikan informasi tambahan terlebih dahulu mengenai sumber daya mana yang akan diminta dan digunakan oleh suatu proses selama masa pakainya. Algoritma penghindaran kebuntuan menganalisis setiap permintaan dengan memeriksa bahwa tidak ada kemungkinan terjadinya kebuntuan di masa depan jika sumber daya yang diminta dialokasikan. Kelemahan dari pendekatan ini adalah diperlukannya informasi terlebih dahulu mengenai bagaimana sumber daya akan diminta di masa depan. Salah satu algoritma penghindaran kebuntuan yang paling banyak digunakan adalah algoritma Banker .<ref>[https://www.electronicsmind.com/2022/01/deadlock-avoidance-algorithms-in-operating-system.html Deadlock Avoidance Algorithms in Operating System (OS)]. ''Electronics Mind''. 26 January 2022.</ref>


== Kebukaan ==
== Kebukaan ==
''Kebukaan'' mirip dengan kebuntuan hanya saja keadaan proses yang terlibat dalam kebukaan terus berubah satu sama lain, tidak ada yang mengalami kemajuan.
''Kebukaan'' mirip dengan kebuntuan hanya saja keadaan proses yang terlibat dalam kebukaan terus berubah satu sama lain, tidak ada yang mengalami kemajuan.


Istilah ini diciptakan oleh [[Edward A. Ashcroft]] dalam makalah tahun 1975 sehubungan dengan pemeriksaan sistem pemesanan maskapai penerbangan. Kebukaaan adalah kasus khusus kekurangan sumber daya ; definisi umum hanya menyatakan bahwa proses tertentu tidak berjalan.
Istilah ini diciptakan oleh [[Edward A. Ashcroft]] dalam makalah tahun 1975 <ref>E.A. Ashcroft. ''Proving assertions about parallel programs''. ''Journal of Computer and System Sciences''. 1975. Vol. 10. hlm. 110–135. doi:10.1016/S0022-0000(75)80018-3.</ref> sehubungan dengan pemeriksaan sistem pemesanan maskapai penerbangan.<ref>Y. S. Kwong. ''Semantics of Concurrent Computation''. 1979. Vol. 70. hlm. 172–190. doi:10.1007/BFb0022469. ISBN 3-540-09511-X.</ref> Kebukaaan adalah kasus khusus kekurangan sumber daya ; definisi umum hanya menyatakan bahwa proses tertentu tidak berjalan.<ref>James H. Anderson. [http://citeseer.ist.psu.edu/anderson01sharedmemory.html Shared-memory mutual exclusion: Major research trends since 1986]. 2001.</ref>


Kebukaan adalah risiko dengan beberapa [[algoritma]] yang mendeteksi dan memulihkan dari ''kebuntuan''. Jika lebih dari satu proses mengambil tindakan, [[Deadlock detection algorithm|algoritma pendeteksi kebuntuan]] dapat dipicu berulang kali. Hal ini dapat dihindari dengan memastikan bahwa hanya satu proses (dipilih secara sewenang-wenang atau berdasarkan prioritas) yang mengambil tindakan.
Kebukaan adalah risiko dengan beberapa [[algoritma]] yang mendeteksi dan memulihkan dari ''kebuntuan''. Jika lebih dari satu proses mengambil tindakan, [[Deadlock detection algorithm|algoritma pendeteksi kebuntuan]] dapat dipicu berulang kali. Hal ini dapat dihindari dengan memastikan bahwa hanya satu proses (dipilih secara sewenang-wenang atau berdasarkan prioritas) yang mengambil tindakan.<ref>Dieter Zöbel. ''The Deadlock problem: a classifying bibliography''. ''ACM SIGOPS Operating Systems Review''. October 1983. Vol. 17 (4). hlm. 6–15. doi:10.1145/850752.850753.</ref>


== Referensi ==
== Referensi ==
<references />


== Sumber dan atribusi ==


Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Deadlock&oldid=28962195 Wikipedia bahasa Indonesia], revisi 28962195 (2026-02-15T01:34:49Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.


== Sumber dan atribusi ==
<!-- WIKI_UNISSULA_PRESENTATION_V4 -->
 
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Deadlock&oldid=28962195 Wikipedia bahasa Indonesia], revisi 28962195 (2026-02-15T01:34:49Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.

Revisi terkini sejak 23 Agustus 2026 04.15

Kedua proses tersebut membutuhkan sumber daya untuk melanjutkan eksekusi. P1 memerlukan tambahan sumber daya R1 dan memiliki sumber daya R2, P2 memerlukan tambahan sumber daya R2 dan memiliki R1 ; tidak ada proses yang dapat dilanjutkan

Dalam komputasi serentak, kebuntuan adalah setiap situasi di mana tidak ada anggota dari beberapa kelompok entitas yang dapat melanjutkan karena masing-masing entitas menunggu anggota lain, termasuk dirinya sendiri, untuk mengambil tindakan, seperti mengirim pesan atau, lebih umum, melepaskan kunci.[1] Kebuntuan adalah masalah umum dalam sistem multipengolahan, komputasi paralel, dan sistem terdistribusi, karena dalam konteks ini sistem sering kali menggunakan kunci perangkat lunak atau perangkat keras untuk menengahi sumber daya bersama dan menerapkan sinkronisasi proses.[2]

Dalam sistem operasi, kebuntuan terjadi ketika suatu proses atau utas memasuki keadaan menunggu karena sumber daya sistem yang diminta ditahan oleh proses menunggu lainnya, yang kemudian menunggu sumber daya lain ditahan oleh proses menunggu lainnya.[3] Jika suatu proses tetap tidak dapat mengubah keadaannya tanpa batas waktu karena sumber daya yang diminta sedang digunakan oleh proses lain yang sedang menunggu, maka sistem dikatakan mengalami kebuntuan.[4]

Dalam sistem komunikasi, kebuntuan terjadi terutama karena hilangnya atau rusaknya sinyal, bukan karena perebutan sumber daya.[5]

Kondisi yang diperlukan secara individu dan kondisi yang cukup secara bersama untuk terjadinya kebuntuan

Situasi kebuntuan pada suatu sumber daya hanya dapat muncul jika seluruh kondisi berikut terjadi secara bersamaan dalam suatu sistem:[6]

  1. Pengecualian bersama : Setidaknya satu sumber daya harus disimpan dalam mode yang tidak dapat dibagikan; artinya, hanya satu proses pada satu waktu yang dapat menggunakan sumber daya tersebut.[7] Jika tidak, proses tidak akan dicegah untuk menggunakan sumber daya bila diperlukan. Hanya satu proses yang dapat menggunakan sumber daya pada waktu tertentu.[8]
  2. Tahan dan tunggu atau simpan sumber daya: suatu proses saat ini memegang setidaknya satu sumber daya dan meminta sumber daya tambahan yang ditahan oleh proses lain.
  3. Tidak ada perubahan siaran : sumber daya hanya dapat dilepaskan secara sukarela oleh proses yang memegangnya.
  4. Tungguan melingkar: setiap proses harus menunggu sumber daya yang ditahan oleh proses lain, yang pada gilirannya menunggu proses pertama melepaskan sumber daya tersebut. Secara umum, ada serangkaian proses menunggu, P = { P 1, P 2, ..., P N }, sehingga P 1 menunggu sumber daya yang dimiliki oleh P 2, P 2 menunggu sumber daya yang dimiliki oleh P 3 dan seterusnya hingga PN menunggu sumber daya dimiliki oleh P 1.[9][10]

Keempat kondisi ini dikenal sebagai kondisi Coffman dari uraian pertamanya dalam artikel tahun 1971 oleh Edward G. Coffman,[11]

Meskipun kondisi ini cukup untuk menghasilkan kebuntuan pada sistem sumber daya contoh tunggal, kondisi ini hanya menunjukkan kemungkinan kebuntuan pada sistem yang memiliki banyak contoh sumber daya.[12]

Penanganan kebuntuan

Kebanyakan sistem operasi saat ini tidak dapat mencegah kebuntuan.[13] Ketika kebuntuan terjadi, sistem operasi yang berbeda meresponsnya dengan cara non-standar yang berbeda. Sebagian besar pendekatan bekerja dengan mencegah terjadinya salah satu dari empat kondisi umum, terutama yang keempat.[14] Pendekatan utama adalah sebagai berikut.

Mengabaikan kebuntuan

Dalam pendekatan ini diasumsikan bahwa kebuntuan tidak akan pernah terjadi. Ini juga merupakan penerapan algoritma Burung Unta.[15][16] Pendekatan ini awalnya digunakan oleh MINIX dan UNIX.[17] Hal ini digunakan ketika interval waktu antara terjadinya kebuntuan besar dan kehilangan data yang terjadi setiap kali dapat ditoleransi.

Mengabaikan kebuntuan dapat dilakukan dengan aman jika kebuntuan secara formal terbukti tidak pernah terjadi. Contohnya adalah kerangka RTIC.[18]

Pemeriksaan

Di bawah deteksi kebuntuan, kebuntuan diperbolehkan terjadi. Kemudian keadaan sistem diperiksa untuk mendeteksi telah terjadi kebuntuan dan selanjutnya diperbaiki. Algoritma digunakan untuk melacak alokasi sumber daya dan status proses, lalu memutar kembali dan memulai ulang satu atau lebih proses untuk menghilangkan kebuntuan yang terdeteksi. Memeriksa kebuntuan yang telah terjadi dapat dilakukan dengan mudah karena sumber daya yang telah dikunci dan/atau diminta oleh setiap proses diketahui oleh penjadwal sumber daya sistem operasi.[19]

Setelah kebuntuan terdeteksi, kebuntuan dapat diperbaiki dengan menggunakan salah satu metode berikut:

  1. Penghentian proses: satu atau lebih proses yang terlibat dalam kebuntuan dapat dibatalkan. Seseorang dapat memilih untuk membatalkan semua proses bersaing yang terlibat dalam kebuntuan tersebut. Hal ini memastikan bahwa kebuntuan diselesaikan dengan pasti dan cepat.[ kutipan diperlukan ] Namun biayanya tinggi karena sebagian perhitungan akan hilang. Atau, seseorang dapat memilih untuk membatalkan satu proses pada satu waktu hingga kebuntuan teratasi. Pendekatan ini mempunyai overhead yang tinggi karena setelah setiap pembatalan suatu algoritma harus menentukan apakah sistem masih dalam kebuntuan.[ kutipan diperlukan ] Beberapa faktor harus dipertimbangkan saat memilih kandidat untuk penghentian, seperti prioritas dan usia proses.
  2. Perubahan siar sumber daya: sumber daya yang dialokasikan ke berbagai proses dapat didahulukan secara berturut-turut dan dialokasikan ke proses lain hingga kebuntuan terpecahkan.[20][ verifikasi gagal ]

Pencegahan

Pencegahan kebuntuan bekerja dengan mencegah terjadinya salah satu dari empat kondisi Coffman.

  • Menghapus kondisi saling pengecualian berarti tidak ada proses yang memiliki akses eksklusif ke sumber daya. Hal ini terbukti mustahil bagi sumber daya yang tidak dapat dikumpulkan. Namun bahkan dengan sumber daya yang terbatas, kebuntuan masih bisa terjadi. Algoritma yang menghindari saling pengecualian disebut algoritma sinkronisasi nirhalang.
  • Kondisi tunggu dan tahan atau simpanan sumber daya dapat dihilangkan dengan mewajibkan proses untuk meminta semua sumber daya yang diperlukan sebelum memulai (atau sebelum memulai serangkaian operasi tertentu). Pengetahuan tingkat lanjut ini sering kali sulit dipenuhi dan, dalam kasus apa pun, merupakan penggunaan sumber daya yang tidak efisien. Cara lain adalah dengan mengharuskan proses meminta sumber daya hanya jika tidak ada sumber daya; Pertama, mereka harus melepaskan semua sumber daya yang mereka miliki saat ini sebelum meminta semua sumber daya yang mereka perlukan dari awal. Hal ini juga sering kali tidak praktis. Hal ini terjadi karena sumber daya mungkin dialokasikan dan tidak digunakan dalam jangka waktu lama. Selain itu, suatu proses yang membutuhkan sumber daya populer mungkin harus menunggu tanpa batas waktu, karena sumber daya tersebut mungkin selalu dialokasikan ke suatu proses, sehingga mengakibatkan kekurangan sumber daya .[21] (Algoritma ini, seperti serialisasi token, dikenal sebagai algoritma semua atau tidak sama sekali .)
  • Kondisi tanpa perubahan siaran juga mungkin sulit atau tidak mungkin dihindari karena suatu proses harus mampu memiliki sumber daya untuk jangka waktu tertentu, atau hasil pemrosesan mungkin tidak konsisten atau mungkin terjadi deraan. Namun, ketidakmampuan untuk menerapkan perubahan siaran dapat mengganggu algoritma prioritas. Perubahan siaran dari sumber daya yang "terkunci" umumnya menyiratkan baik-belakang, dan harus dihindari karena biaya bubungan-nya sangat mahal. Algoritma yang memungkinkan perubahsiaran mencakup algoritma bebas kunci dan bebas tunggu serta kontrol konkurensi optimis. Jika suatu proses mempunyai beberapa sumber daya dan meminta beberapa sumber daya lain yang tidak dapat segera dialokasikan padanya, maka kondisi tersebut dapat dihilangkan dengan melepaskan semua sumber daya yang ada pada proses tersebut.
  • Kondisi terakhir adalah kondisi menunggu melingkar. Pendekatan yang menghindari menunggu melingkar termasuk menonaktifkan interupsi selama bagian penting dan menggunakan hierarki untuk menentukan pengurutan sebagian sumber daya. Jika tidak ada hierarki yang jelas, bahkan alamat memori sumber daya telah digunakan untuk menentukan pengurutan dan sumber daya diminta dalam urutan pencacahan yang meningkat.[22] Solusi Dijkstra juga bisa digunakan.

Penghindaran kebuntuan

Mirip dengan pencegahan kebuntuan, pendekatan penghindaran kebuntuan memastikan bahwa kebuntuan tidak akan terjadi dalam suatu sistem. Istilah "penghindaran kebuntuan" tampaknya sangat mirip dengan "pencegahan kebuntuan" dalam konteks linguistik, tetapi keduanya sangat jauh berbeda dalam konteks penanganan kebuntuan. Penghindaran kebuntuan tidak memaksakan kondisi apa pun seperti yang terlihat dalam pencegahan tetapi, di sini setiap permintaan sumber daya dianalisis secara cermat untuk melihat apakah permintaan tersebut dapat dipenuhi dengan aman tanpa menyebabkan kebuntuan.

Penghindaran kebuntuan mengharuskan sistem operasi diberikan informasi tambahan terlebih dahulu mengenai sumber daya mana yang akan diminta dan digunakan oleh suatu proses selama masa pakainya. Algoritma penghindaran kebuntuan menganalisis setiap permintaan dengan memeriksa bahwa tidak ada kemungkinan terjadinya kebuntuan di masa depan jika sumber daya yang diminta dialokasikan. Kelemahan dari pendekatan ini adalah diperlukannya informasi terlebih dahulu mengenai bagaimana sumber daya akan diminta di masa depan. Salah satu algoritma penghindaran kebuntuan yang paling banyak digunakan adalah algoritma Banker .[23]

Kebukaan

Kebukaan mirip dengan kebuntuan hanya saja keadaan proses yang terlibat dalam kebukaan terus berubah satu sama lain, tidak ada yang mengalami kemajuan.

Istilah ini diciptakan oleh Edward A. Ashcroft dalam makalah tahun 1975 [24] sehubungan dengan pemeriksaan sistem pemesanan maskapai penerbangan.[25] Kebukaaan adalah kasus khusus kekurangan sumber daya ; definisi umum hanya menyatakan bahwa proses tertentu tidak berjalan.[26]

Kebukaan adalah risiko dengan beberapa algoritma yang mendeteksi dan memulihkan dari kebuntuan. Jika lebih dari satu proses mengambil tindakan, algoritma pendeteksi kebuntuan dapat dipicu berulang kali. Hal ini dapat dihindari dengan memastikan bahwa hanya satu proses (dipilih secara sewenang-wenang atau berdasarkan prioritas) yang mengambil tindakan.[27]

Referensi

  1. George Coulouris. Distributed Systems Concepts and Design. Pearson. 2012. hlm. 716. ISBN 978-0-273-76059-7.
  2. David Padua. Encyclopedia of Parallel Computing. Springer. 2011. hlm. 524. ISBN 9780387097657.
  3. Babak Falsafi. Encyclopedia of Parallel Computing. Springer US. 2011. hlm. 524–527. doi:10.1007/978-0-387-09766-4_282. ISBN 978-0-387-09765-7.
  4. Abraham Silberschatz. Operating System Principles. Wiley-India. 2006. hlm. 237. ISBN 9788126509621.
  5. G. Michael Schneider. Invitation to Computer Science. Cengage Learning. 2009. hlm. 271. ISBN 978-0324788594.
  6. Abraham Silberschatz. Operating System Principles. Wiley-India. 2006. hlm. 239. ISBN 9788126509621.
  7. Operating System Concepts. Wiley. 2012. hlm. 319. ISBN 978-1-118-06333-0.
  8. ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock. nob.cs.ucdavis.edu.
  9. Abraham Silberschatz. Operating System Principles. Wiley-India. 2006. hlm. 237. ISBN 9788126509621. Silberschatz, Abraham (2006). Operating System Principles (7th ed.). Wiley-India. p. 237. ISBN 9788126509621 . Archived from the original on 25 January 2022 . Retrieved 16 October 2020 .
  10. K. Shibu. Intro To Embedded Systems. Tata McGraw-Hill Education. 2009. hlm. 446. ISBN 9780070145894.
  11. K. Shibu. Intro To Embedded Systems. Tata McGraw-Hill Education. 2009. hlm. 446. ISBN 9780070145894.
  12. Operating Systems: Deadlocks. www.cs.uic.edu.
  13. Abraham Silberschatz. Operating System Principles. Wiley-India. 2006. hlm. 237. ISBN 9788126509621.
  14. Brian L. Stuart. Principles of operating systems. Cengage Learning. 2008. hlm. 446. ISBN 9781418837693.
  15. Brian L. Stuart. Principles of operating systems. Cengage Learning. 2008. hlm. 446. ISBN 9781418837693.
  16. Andrew S. Tanenbaum. Distributed Operating Systems. Pearson Education. 1995. hlm. 117. ISBN 9788177581799.
  17. K. Shibu. Intro To Embedded Systems. Tata McGraw-Hill Education. 2009. hlm. 446. ISBN 9780070145894.
  18. Preface - Real-Time Interrupt-driven Concurrency.
  19. Andrew S. Tanenbaum. Distributed Operating Systems. Pearson Education. 1995. hlm. 117. ISBN 9788177581799.
  20. IBM Knowledge Center. www.ibm.com.
  21. Abraham Silberschatz. Operating System Principles. Wiley-India. 2006. hlm. 244. ISBN 9788126509621.
  22. Abraham Silberschatz. Operating System Principles. Wiley-India. 2006. hlm. 237. ISBN 9788126509621. Silberschatz, Abraham (2006). Operating System Principles (7th ed.). Wiley-India. p. 237. ISBN 9788126509621 . Archived from the original on 25 January 2022 . Retrieved 16 October 2020 .
  23. Deadlock Avoidance Algorithms in Operating System (OS). Electronics Mind. 26 January 2022.
  24. E.A. Ashcroft. Proving assertions about parallel programs. Journal of Computer and System Sciences. 1975. Vol. 10. hlm. 110–135. doi:10.1016/S0022-0000(75)80018-3.
  25. Y. S. Kwong. Semantics of Concurrent Computation. 1979. Vol. 70. hlm. 172–190. doi:10.1007/BFb0022469. ISBN 3-540-09511-X.
  26. James H. Anderson. Shared-memory mutual exclusion: Major research trends since 1986. 2001.
  27. Dieter Zöbel. The Deadlock problem: a classifying bibliography. ACM SIGOPS Operating Systems Review. October 1983. Vol. 17 (4). hlm. 6–15. doi:10.1145/850752.850753.

Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 28962195 (2026-02-15T01:34:49Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.