Penyegerakan Proses: Masalah Bahagian Kritikal dalam OS

Isi kandungan:

Anonim

Apa itu Penyegerakan Proses?

Proses Penyegerakan adalah tugas mengkoordinasikan pelaksanaan proses dengan cara yang tidak ada dua proses yang dapat mengakses data dan sumber yang sama.

Ia sangat diperlukan dalam sistem multi-proses ketika beberapa proses berjalan bersama, dan lebih dari satu proses cuba mendapatkan akses ke sumber atau data bersama yang sama pada masa yang sama.

Ini boleh menyebabkan ketidakkonsistenan data yang dikongsi. Jadi perubahan yang dibuat oleh satu proses tidak semestinya tercermin ketika proses lain mengakses data bersama yang sama. Untuk mengelakkan jenis data yang tidak konsisten ini, prosesnya perlu diselaraskan antara satu sama lain.

Dalam tutorial sistem operasi ini, anda akan belajar:

  • Apa itu Penyegerakan Proses?
  • Bagaimana Penyegerakan Proses Berfungsi?
  • Bahagian Program
  • Apakah Masalah Bahagian Kritikal?
  • Peraturan untuk Bahagian Kritikal
  • Penyelesaian Kepada Bahagian Kritikal

Bagaimana Penyegerakan Proses Berfungsi?

Sebagai contoh, proses A mengubah data di lokasi memori sementara proses B yang lain berusaha membaca data dari lokasi memori yang sama . Terdapat kemungkinan besar bahawa data yang dibaca oleh proses kedua akan salah.

Bahagian Program

Berikut adalah empat elemen penting dari bahagian kritikal:

  • Bahagian Kemasukan: Ini adalah sebahagian daripada proses yang menentukan kemasukan proses tertentu.
  • Bahagian Kritikal: Bahagian ini membolehkan satu proses memasuki dan mengubah pemboleh ubah bersama.
  • Bahagian Keluar: Bahagian Keluar membolehkan proses lain yang sedang menunggu di Bahagian Masuk, masuk ke Bahagian Kritikal. Ini juga memeriksa bahawa proses yang menyelesaikan pelaksanaannya harus dihapus melalui Bahagian ini.
  • Bahagian Sisa: Semua bahagian lain dari Kod, yang tidak terdapat di Bahagian Kritikal, Masuk, dan Keluar, dikenali sebagai Bahagian Sisa.

Apakah Masalah Bahagian Kritikal?

Bahagian kritikal adalah segmen kod yang dapat diakses oleh proses isyarat pada titik waktu tertentu. Bahagian ini terdiri daripada sumber data bersama yang diperlukan untuk diakses oleh proses lain.

  • Kemasukan ke bahagian kritikal dikendalikan oleh fungsi tunggu (), dan ditunjukkan sebagai P ().
  • Jalan keluar dari bahagian kritikal dikendalikan oleh fungsi signal (), yang diwakili sebagai V ().

Di bahagian kritikal, hanya satu proses yang dapat dilaksanakan. Proses lain, yang menunggu untuk melaksanakan bahagian kritikalnya, perlu menunggu sehingga proses semasa menyelesaikan pelaksanaannya.

Peraturan untuk Bahagian Kritikal

Bahagian kritikal mesti menegakkan ketiga-tiga peraturan:

  • Saling Pengecualian: Pengecualian Bersama adalah jenis semaphore binari khas yang digunakan untuk mengawal akses ke sumber yang dikongsi. Ini merangkumi mekanisme pewarisan keutamaan untuk mengelakkan masalah penyimpangan keutamaan yang diperpanjang. Tidak lebih daripada satu proses dapat dilaksanakan dalam bahagian kritikal dalam satu masa.
  • Kemajuan: Penyelesaian ini digunakan apabila tidak ada orang yang berada di bahagian kritikal, dan seseorang menginginkannya. Kemudian proses-proses tersebut yang tidak ada di bahagian peringatan mereka harus memutuskan siapa yang harus masuk, dalam waktu yang terbatas.
  • Bound Waiting: Apabila proses membuat permintaan untuk masuk ke bahagian kritikal, ada had khusus mengenai jumlah proses yang dapat masuk ke bahagian kritikal mereka. Oleh itu, apabila hadnya tercapai, sistem mesti membenarkan permintaan proses masuk ke bahagian kritikalnya.

Penyelesaian Kepada Bahagian Kritikal

Dalam Proses Penyegerakan, bahagian kritikal memainkan peranan utama sehingga masalah itu mesti diselesaikan.

Berikut adalah beberapa kaedah yang digunakan secara meluas untuk menyelesaikan masalah bahagian kritikal.

Penyelesaian Peterson

Penyelesaian Peterson adalah penyelesaian yang banyak digunakan untuk masalah bahagian kritikal. Algoritma ini dikembangkan oleh saintis komputer Peterson sebab itulah ia dinamakan sebagai penyelesaian Peterson.

Dalam penyelesaian ini, apabila proses dijalankan dalam keadaan kritis, maka proses yang lain hanya menjalankan kod yang lain, dan sebaliknya dapat terjadi. Kaedah ini juga membantu memastikan bahawa hanya satu proses berjalan di bahagian kritikal pada waktu tertentu.

Contohnya

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
  • Andaikan ada proses N (P1, P2,… PN) dan setiap proses pada suatu ketika memerlukan memasuki Bahagian Kritikal
  • Susunan FLAG [] berukuran N dikekalkan yang secara lalai palsu. Jadi, setiap kali proses memerlukan memasuki bahagian kritikal, ia harus menetapkan benderanya sebagai benar. Sebagai contoh, Jika Pi ingin memasukkannya, ia akan menetapkan FLAG [i] = TRUE.
  • Pemboleh ubah lain yang disebut TURN menunjukkan nombor proses yang sedang menunggu untuk memasuki CS.
  • Proses yang memasuki bahagian kritikal semasa keluar akan mengubah TURN ke nombor lain dari senarai proses siap.
  • Contoh: giliran adalah 2 kemudian P2 memasuki bahagian kritikal dan semasa keluar giliran = 3 dan oleh itu P3 keluar dari gelung tunggu.

Perkakasan Penyegerakan

Beberapa kali masalah Bahagian Kritikal juga diselesaikan dengan perkakasan. Beberapa sistem operasi menawarkan fungsi kunci di mana Proses memperoleh kunci ketika memasuki bahagian Kritikal dan melepaskan kunci setelah meninggalkannya.

Oleh itu, apabila proses lain cuba memasuki bahagian kritikal, proses tersebut tidak akan dapat masuk kerana terkunci. Ia hanya boleh dilakukan sekiranya percuma dengan mendapatkan kunci itu sendiri.

Kunci Mutex

Perkakasan penyegerakan bukan kaedah mudah untuk dilaksanakan untuk semua orang, jadi kaedah perisian ketat yang dikenali sebagai Mutex Locks juga diperkenalkan.

Dalam pendekatan ini, di bahagian kemasukan kod, LOCK diperoleh daripada sumber kritikal yang digunakan di dalam bahagian kritikal. Di bahagian keluar yang kunci dilepaskan.

Penyelesaian Semaphore

Semaphore hanyalah pemboleh ubah yang tidak negatif dan dikongsi antara utas. Ini adalah algoritma atau penyelesaian lain untuk masalah bahagian kritikal. Ini adalah mekanisme isyarat dan utas yang menunggu di semaphore, yang dapat ditandakan oleh utas lain.

Ia menggunakan dua operasi atom, 1) menunggu, dan 2) isyarat untuk penyegerakan proses.

Contohnya

WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;

Ringkasan:

  • Penyegerakan proses adalah tugas mengkoordinasikan pelaksanaan proses dengan cara yang tidak ada dua proses yang dapat mengakses data dan sumber yang sama.
  • Empat elemen bahagian kritikal adalah 1) Bahagian kemasukan 2) Bahagian kritikal 3) Bahagian keluar 4) Bahagian peringatan
  • Bahagian kritikal adalah segmen kod yang dapat diakses oleh proses isyarat pada titik waktu tertentu.
  • Tiga peraturan mustahak yang mesti ditegakkan oleh bahagian kritikal adalah: 1) Pengecualian Bersama 2) Penyelesaian proses 3) Penantian terikat
  • Mutual Exclusion adalah jenis semaphore binari khas yang digunakan untuk mengawal akses ke sumber yang dikongsi.
  • Penyelesaian proses digunakan apabila tidak ada yang berada di bahagian kritikal, dan seseorang mahu.
  • Dalam penyelesaian menunggu terikat, setelah proses membuat permintaan untuk masuk ke bahagian kritisnya, ada batasan untuk berapa banyak proses lain yang dapat masuk ke bahagian kritisnya.
  • Penyelesaian Peterson adalah penyelesaian yang banyak digunakan untuk masalah bahagian kritikal.
  • Masalah Bahagian Kritikal juga diselesaikan dengan penyegerakan perkakasan
  • Perkakasan penyegerakan bukanlah kaedah mudah untuk dilaksanakan untuk semua orang, jadi kaedah perisian ketat yang dikenali sebagai Mutex Locks juga diperkenalkan.
  • Semaphore adalah algoritma atau penyelesaian lain untuk masalah bahagian kritikal.