Proses Sinkronisasi: Masalah Bagian Kritis di OS

Daftar Isi:

Anonim

Apa itu Sinkronisasi Proses?

Proses Sinkronisasi adalah tugas mengkoordinasikan pelaksanaan proses sedemikian rupa sehingga tidak ada dua proses yang dapat memiliki akses ke data dan sumber daya bersama yang sama.

Ini secara khusus diperlukan dalam sistem multi-proses ketika beberapa proses berjalan bersama, dan lebih dari satu proses mencoba untuk mendapatkan akses ke sumber daya atau data bersama yang sama pada waktu yang sama.

Hal ini dapat menyebabkan ketidakkonsistenan data yang dibagikan. Jadi perubahan yang dibuat oleh satu proses tidak serta merta tercermin ketika proses lain mengakses data bersama yang sama. Untuk menghindari jenis data yang tidak konsisten ini, proses perlu disinkronkan satu sama lain.

Dalam tutorial sistem operasi ini, Anda akan mempelajari:

  • Apa itu Sinkronisasi Proses?
  • Bagaimana Proses Sinkronisasi Bekerja?
  • Bagian dari Program
  • Apa itu Masalah Bagian Kritis?
  • Aturan untuk Bagian Kritis
  • Solusi Untuk Bagian Kritis

Bagaimana Proses Sinkronisasi Bekerja?

Misalnya, proses A mengubah data di lokasi memori sementara proses B lain mencoba membaca data dari lokasi memori yang sama . Ada kemungkinan besar bahwa data yang dibaca pada proses kedua akan salah.

Bagian dari Program

Di sini, empat elemen penting dari bagian kritis:

  • Bagian Entri: Ini adalah bagian dari proses yang memutuskan masuknya proses tertentu.
  • Bagian Kritis: Bagian ini memungkinkan satu proses untuk masuk dan memodifikasi variabel bersama.
  • Bagian Keluar: Bagian Keluar memungkinkan proses lain yang menunggu di Bagian Entri, untuk masuk ke Bagian Kritis. Ia juga memeriksa bahwa proses yang menyelesaikan eksekusinya harus dihapus melalui Bagian ini.
  • Bagian Sisa: Semua bagian lain dari Kode, yang tidak berada di Bagian Kritis, Masuk, dan Keluar, dikenal sebagai Bagian Sisa.

Apa itu Masalah Bagian Kritis?

Bagian kritis adalah segmen kode yang dapat diakses oleh proses sinyal pada titik waktu tertentu. Bagian ini terdiri dari sumber data bersama yang perlu diakses oleh proses lain.

  • Entri ke bagian kritis ditangani oleh fungsi wait (), dan direpresentasikan sebagai P ().
  • Keluar dari bagian kritis dikendalikan oleh fungsi signal (), yang direpresentasikan sebagai V ().

Di bagian kritis, hanya satu proses yang dapat dijalankan. Proses lain, menunggu untuk mengeksekusi bagian kritisnya, perlu menunggu hingga proses saat ini menyelesaikan eksekusinya.

Aturan untuk Bagian Kritis

Bagian penting harus menegakkan ketiga aturan:

  • Mutual Exclusion: Mutual Exclusion adalah jenis khusus semaphore biner yang digunakan untuk mengontrol akses ke sumber daya bersama. Ini mencakup mekanisme pewarisan prioritas untuk menghindari masalah inversi prioritas yang diperpanjang. Tidak lebih dari satu proses yang dapat dijalankan di bagian kritisnya pada satu waktu.
  • Kemajuan: Solusi ini digunakan ketika tidak ada orang di bagian kritis, dan seseorang ingin masuk. Kemudian proses yang tidak ada di bagian pengingat mereka harus memutuskan siapa yang harus masuk, dalam waktu yang terbatas.
  • Bound Waiting: Ketika suatu proses membuat permintaan untuk masuk ke bagian kritis, ada batasan khusus tentang jumlah proses yang dapat masuk ke bagian kritisnya. Jadi, ketika batas tercapai, sistem harus mengizinkan permintaan ke proses untuk masuk ke bagian kritisnya.

Solusi Untuk Bagian Kritis

Dalam Proses Sinkronisasi, bagian kritis memegang peran utama sehingga masalah harus segera diselesaikan.

Berikut adalah beberapa metode yang banyak digunakan untuk memecahkan masalah bagian kritis.

Peterson Solution

Solusi Peterson adalah solusi yang banyak digunakan untuk masalah bagian kritis. Algoritma ini dikembangkan oleh seorang ilmuwan komputer Peterson, itulah mengapa dinamai sebagai solusi Peterson.

Dalam solusi ini, ketika suatu proses dijalankan dalam keadaan kritis, maka proses lain hanya mengeksekusi sisa kode, dan sebaliknya bisa terjadi. Metode ini juga membantu memastikan bahwa hanya satu proses yang berjalan di bagian kritis pada waktu tertentu.

Contoh

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
  • Asumsikan ada N proses (P1, P2,… PN) dan setiap proses pada beberapa titik waktu harus masuk ke Bagian Kritis
  • Larik FLAG [] dengan ukuran N dipertahankan yang secara default salah. Jadi, setiap kali proses memerlukan untuk masuk ke bagian kritis, itu harus menyetel benderanya sebagai true. Misalnya, jika Pi ingin memasukkannya maka BENDERA [i] = BENAR.
  • Variabel lain yang disebut TURN menunjukkan nomor proses yang saat ini ingin masuk ke CS.
  • Proses yang masuk ke bagian kritis saat keluar akan mengubah TURN ke nomor lain dari daftar proses yang siap.
  • Contoh: belok adalah 2 kemudian P2 masuk ke bagian Kritis dan saat keluar belok = 3 dan oleh karena itu P3 keluar dari loop tunggu.

Perangkat Keras Sinkronisasi

Beberapa kali masalah Bagian Kritis juga diselesaikan oleh perangkat keras. Beberapa sistem operasi menawarkan fungsionalitas kunci di mana Proses memperoleh kunci saat memasuki bagian Kritis dan melepaskan kunci setelah meninggalkannya.

Jadi ketika proses lain mencoba masuk ke bagian kritis, itu tidak akan bisa masuk karena terkunci. Ini hanya dapat dilakukan jika gratis dengan memperoleh kunci itu sendiri.

Kunci Mutex

Perangkat keras sinkronisasi bukanlah metode sederhana untuk diterapkan untuk semua orang, sehingga metode perangkat lunak yang ketat yang dikenal sebagai Mutex Locks juga diperkenalkan.

Dalam pendekatan ini, di bagian entri kode, KUNCI diperoleh dari sumber daya penting yang digunakan di dalam bagian kritis. Di bagian keluar kunci itu dilepaskan.

Solusi Semaphore

Semaphore hanyalah variabel yang non-negatif dan dibagikan di antara utas. Ini adalah algoritma atau solusi lain untuk masalah bagian kritis. Ini adalah mekanisme pensinyalan dan utas yang menunggu di semaphore, yang dapat ditandai oleh utas lain.

Ini menggunakan dua operasi atom, 1) menunggu, dan 2) sinyal untuk sinkronisasi proses.

Contoh

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

Ringkasan:

  • Sinkronisasi proses adalah tugas mengoordinasikan pelaksanaan proses sedemikian rupa sehingga tidak ada dua proses yang dapat memiliki akses ke data dan sumber daya bersama yang sama.
  • Empat elemen bagian kritis adalah 1) Bagian Masuk 2) Bagian Kritis 3) Bagian Keluar 4) Bagian Pengingat
  • Bagian kritis adalah segmen kode yang dapat diakses oleh proses sinyal pada titik waktu tertentu.
  • Tiga aturan yang harus diterapkan oleh bagian kritis adalah: 1) Pengecualian Reksa 2) Solusi proses 3) Menunggu terikat
  • Mutual Exclusion adalah jenis semaphore biner khusus yang digunakan untuk mengontrol akses ke sumber daya bersama.
  • Solusi proses digunakan ketika tidak ada orang di bagian kritis, dan seseorang ingin masuk.
  • Dalam solusi menunggu terikat, setelah suatu proses membuat permintaan untuk masuk ke bagian kritisnya, ada batasan berapa banyak proses lain yang bisa masuk ke bagian kritisnya.
  • Solusi Peterson adalah solusi yang banyak digunakan untuk masalah bagian kritis.
  • Masalah Bagian Kritis juga diselesaikan dengan sinkronisasi perangkat keras
  • Perangkat keras sinkronisasi bukanlah metode sederhana untuk diterapkan untuk semua orang, jadi metode perangkat lunak ketat yang dikenal sebagai Mutex Locks juga diperkenalkan.
  • Semaphore adalah algoritma atau solusi lain untuk masalah bagian kritis.