Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah punca kebuntuan di Linux?
Sebab kebuntuan dalam Linux adalah: 1. Kebuntuan disebabkan oleh persaingan untuk sumber yang tidak tersedia 2. Kebuntuan disebabkan oleh persaingan untuk sumber yang boleh digunakan 3. Kebuntuan disebabkan oleh urutan kemajuan proses yang tidak betul (proses berjalan Semasa proses, perintah meminta dan mengeluarkan sumber adalah tidak sesuai, mengakibatkan kebuntuan proses).
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.
1 Konsep kebuntuan:
Jika setiap proses (atau utas) dalam kumpulan proses (atau utas) sedang Menunggu peristiwa yang hanya boleh dicetuskan oleh proses lain (atau utas) dalam kumpulan proses, kemudian kumpulan proses (atau utas) buntu (Deadlock).
2. Punca kebuntuan:
(1) Kebuntuan disebabkan oleh persaingan untuk sumber tidak boleh didahulukan
Contohnya: kebuntuan disebabkan apabila berkongsi fail
Terdapat dua proses P1 dan P2 dalam sistem, kedua-duanya sedang bersedia untuk menulis dua fail F1 dan F2. Kedua-dua ini adalah sumber boleh guna semula dan tidak boleh didahulukan. Jika proses P1 membuka F1 pada masa yang sama, proses P2 membuka fail F2 Apabila P1 ingin membuka F2, ia disekat kerana F2 sudah diduduki Apabila P2 ingin membuka 1, ia disekat kerana F1 sudah diduduki masa, tidak akan ada sambungan tanpa wayar. Menunggu terus membentuk kebuntuan.
(2) Kebuntuan disebabkan oleh persaingan untuk sumber boleh guna
Contohnya: kebuntuan yang disebabkan oleh komunikasi proses
Terdapat tiga proses P1, P2 dan P3 dalam sistem m1, m2 dan m3 ialah 3 sumber boleh guna. Di satu pihak, proses P1 menjana mesej m1 dan menghantarnya ke P2, dan sebaliknya, ia menerima mesej m3 daripada P3. Di satu pihak, proses P2 menjana mesej m2 dan menghantarnya ke P3, dan sebaliknya, ia menerima mesej m1 daripada P1. Begitu juga, proses P3 di satu pihak menjana mesej m3 dan menghantarnya ke P1, dan sebaliknya menerima mesej m2 daripada P2.
Jika ketiga-tiga proses mula-mula menghantar mesej yang dijana oleh mereka sendiri dan kemudian menerima mesej daripada orang lain, mereka boleh berjalan dengan lancar tanpa menyebabkan jalan buntu Walau bagaimanapun, jika ketiga-tiga proses mula-mula menerima mesej daripada orang lain tanpa Jika mesej dijana, ia akan menunggu selama-lamanya, mengakibatkan kebuntuan.
(3) Susunan kemajuan proses yang tidak betul menyebabkan kebuntuan: Semasa proses berjalan, perintah meminta dan melepaskan sumber adalah tidak sesuai, mengakibatkan kebuntuan proses.
Dalam rajah di atas, jika anda mara dalam susunan lengkung 1, kedua-dua proses boleh diselesaikan dengan lancar jika anda mara dalam susunan lengkung 2, kedua-dua proses boleh diselesaikan dengan lancar; jika anda maju dalam susunan lengkung 3, , kedua-dua proses itu boleh diselesaikan dengan jayanya; jika ia maju dalam susunan lengkung 4, kedua-dua proses akan memasuki kawasan tidak selamat D. Pada masa ini, P1 mengekalkan sumber R1 dan P2 mengekalkan sumber R2 Sistem berada dalam keadaan tidak selamat Jika anda teruskan ke hadapan, jalan buntu mungkin berlaku.
3. Syarat yang diperlukan untuk kebuntuan
(1) Syarat pengecualian bersama . Sumber yang diminta oleh proses (benang) hanya boleh diduduki oleh satu proses (benang) kunci dalam tempoh masa.
(2) Minta dan tahan syarat. Satu proses (benang) sudah menduduki sekurang-kurangnya satu sumber, tetapi permintaan sumber baharu dibuat, dan sumber itu diduduki oleh proses lain (benang).
(3) Syarat bukan pendahuluan (non-deprivable condition). Sumber yang diperoleh melalui proses (benang) tidak boleh didahulukan sebelum ia digunakan.
(4) Keadaan menunggu gelung (loop waiting condition). Apabila kebuntuan berlaku, mesti ada proses (benang) - rantaian sumber yang bulat.
4. Pengelakan kebuntuan, pencegahan dan penyelesaian
Pengelakan kebuntuan adalah langkah terakhir untuk mengelakkan kebuntuan semasa operasi sistem berlaku.
Tiga syarat pertama berlakunya kebuntuan ialah syarat-syarat yang diperlukan untuk berlakunya kebuntuan, iaitu syarat-syarat yang mesti dipenuhi untuk berlakunya kebuntuan daripada wujudnya ketiga-tiga syarat ini , kebuntuan pasti akan berlaku, maka selagi logiknya, kebuntuan boleh dielakkan dengan mengelak syarat keempat.
Idea asas pengelakan kebuntuan: Sistem secara dinamik menyemak setiap permintaan sumber yang dikeluarkan oleh proses yang boleh dipenuhi oleh sistem, dan memutuskan sama ada untuk memperuntukkan sumber berdasarkan hasil semakan jika sistem berkemungkinan untuk melakukannya kebuntuan selepas peruntukan, kemudian Tidak ditetapkan;
(1) Kaedah yang biasa digunakan untuk mengelakkan kebuntuan:
1. Peruntukan sumber yang teratur
2 kaedah mengelakkan kebuntuan, proses dibenarkan untuk memohon sumber secara dinamik, tetapi sebelum memperuntukkan sumber, sistem harus terlebih dahulu mengira keselamatan sumber yang diperuntukkan Jika peruntukan tidak akan menyebabkan sistem memasuki keadaan tidak selamat, peruntukkannya, jika tidak tunggu.
(2) Pencegahan kebuntuan:
1. Pemusnahan keadaan "tidak boleh dipisahkan": Apabila proses menduduki sumber dan kemudian memohon untuk sumber lain tetapi tidak dapat memenuhinya, ia akan keluar dari sumber yang diduduki asal.
Strategi ini rumit dan mahal untuk dilaksanakan. Kerana sumber dilucutkan secara paksa selepas digunakan untuk tempoh masa, ia akan menyebabkan peringkat kerja sebelumnya gagal.
2. Musnahkan syarat "permintaan dan tahan": pakai strategi peruntukan sumber sekali statik, iaitu, memohon semua sumber sebelum proses berjalan, jalankan jika berpuas hati, jika tidak tunggu, supaya ia tidak akan diduduki dan dipohon.
3. Musnahkan syarat "mutual exclusion": Strategi ini hampir mustahil kerana keeksklusifan bersama sumber ditentukan oleh sifatnya sendiri.
4. Musnahkan keadaan "menunggu bulat": nomborkan semua sumber dalam sistem secara berurutan Prinsip umum ialah sumber yang lebih jarang dan lebih jarang mempunyai bilangan yang lebih besar. Apabila proses memohon sumber, ia mesti mengikut urutan nombor sumber dengan ketat, jika tidak, sistem tidak akan memperuntukkannya. Iaitu, proses hanya boleh memohon sumber dengan nombor yang lebih besar apabila ia memperoleh sumber dengan nombor yang lebih kecil apabila mengeluarkan sumber, ia harus dilakukan dalam susunan nombor menurun.
(3) Kaedah untuk menyelesaikan kebuntuan:
Pada masa ini terdapat dua kaedah, satu untuk mengelakkan kebuntuan berlaku; akan diselesaikan kemudian.
Terdapat 4 kaedah khusus:
1. Elakkan jalan buntu daripada berlaku dengan menetapkan had ketat tertentu untuk memusnahkan keadaan kebuntuan, tetapi kaedah ini akan membawa kepada penggunaan sumber sistem yang rendah
2. Elakkan kebuntuan. Dalam proses pengagihan sumber dinamik, beberapa kaedah digunakan untuk menghalang sistem daripada memasuki keadaan tidak selamat dan mengelakkan kebuntuan. Pendekatan ini mencapai penggunaan sumber yang lebih tinggi dengan mengorbankan kekangan yang lebih lemah.
3. Kesan jalan buntu. Benarkan kebuntuan berlaku semasa operasi sistem Dengan menyediakan mekanisme pengesanan dalam sistem, ia dapat mengesan dengan segera sama ada kebuntuan benar-benar berlaku, menentukan dengan tepat proses dan sumber yang berkaitan dengan kebuntuan, dan kemudian mengambil langkah-langkah untuk melegakan kebuntuan.
4. Lepaskan kebuntuan. Ini ialah ukuran yang seiring dengan pengesanan kebuntuan dan digunakan untuk membebaskan proses daripada keadaan kebuntuan.
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah punca kebuntuan di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!