Proses Synchronisasi: Masalah Bagian Kritis di OS
Apa itu Proses Synckronisasi?
Proses Synchronisasi adalah tugas mengoordinasikan pelaksanaan proses sedemikian rupa sehingga tidak ada dua proses yang dapat memiliki akses ke data dan sumber daya bersama yang sama.
Hal ini khususnya diperlukan dalam sistem multi-proses ketika beberapa proses berjalan bersama, dan lebih dari satu proses mencoba mendapatkan akses ke sumber daya atau data bersama yang sama pada saat yang bersamaan.
Hal ini dapat menyebabkan ketidakkonsistenan data yang dibagikan. Jadi perubahan yang dilakukan oleh satu proses belum tentu terlihat ketika proses lain mengakses data yang sama. Untuk menghindari jenis ketidakkonsistenan data ini, proses-proses perlu disinkronkan satu sama lain.
Bagaimana Prosesnya Synchronisasi Bekerja?
Misalnya, proses A mengubah data di lokasi memori sementara proses lain B mencoba membaca data dari sama lokasi memori. Ada kemungkinan besar data yang dibaca oleh proses kedua akan salah.
Bagian dari suatu Program
Berikut adalah empat elemen penting dari bagian kritis:
- Bagian Masuk: Ini adalah bagian dari proses yang menentukan masuknya proses tertentu.
- Bagian penting: Bagian ini memungkinkan satu proses untuk memasukkan dan memodifikasi variabel bersama.
- Bagian Keluar: Bagian Keluar memungkinkan proses lain yang menunggu di Bagian Masuk, untuk masuk ke Bagian Kritis. Ia juga memeriksa bahwa proses yang telah menyelesaikan eksekusinya harus dihapus melalui Bagian ini.
- Bagian Sisa: Semua bagian lain dari Kode, yang tidak termasuk dalam 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 daya data bersama yang diperlukan untuk diakses oleh proses lain.
- Entri ke bagian kritis ditangani oleh fungsi wait(), dan direpresentasikan sebagai P().
- Jalan keluar dari bagian kritis dikendalikan oleh fungsi signal(), yang direpresentasikan sebagai V().
Pada bagian kritis, hanya satu proses yang dapat dijalankan. Proses lain, yang menunggu untuk mengeksekusi bagian kritisnya, perlu menunggu hingga proses saat ini menyelesaikan eksekusinya.
Aturan Bagian Kritis
Bagian kritis harus menegakkan ketiga aturan tersebut:
- Pengecualian Bersama: Mutual Exclusion adalah jenis semaphore biner khusus yang digunakan untuk mengontrol akses ke sumber daya bersama. Ini mencakup mekanisme pewarisan prioritas untuk menghindari masalah inversi prioritas yang diperluas. Tidak lebih dari satu proses dapat dijalankan pada bagian kritisnya pada satu waktu.
- Kemajuan: Solusi ini digunakan ketika tidak ada seorang pun di bagian kritis, dan seseorang ingin masuk. Kemudian proses-proses yang tidak ada di bagian pengingatnya harus memutuskan siapa yang harus masuk, dalam waktu yang terbatas.
- Terikat Menunggu: Ketika suatu proses membuat permintaan untuk masuk ke bagian kritis, ada batasan tertentu tentang jumlah proses yang dapat masuk ke bagian kritisnya. Jadi, ketika batasnya tercapai, sistem harus mengizinkan permintaan proses untuk masuk ke bagian kritisnya.
Solusi Untuk Bagian Kritis
Dalam proses SyncKronisasinya, critical section memegang peranan utama sehingga permasalahan tersebut harus diselesaikan.
Berikut adalah beberapa metode yang banyak digunakan untuk menyelesaikan masalah bagian kritis.
Solusi Peterson
Solusi Peterson adalah solusi yang banyak digunakan untuk masalah bagian kritis. Algoritma ini dikembangkan oleh ilmuwan komputer Peterson sehingga dinamakan sebagai solusi Peterson.
Dalam solusi ini, ketika suatu proses dijalankan dalam keadaan kritis, maka proses lainnya hanya mengeksekusi sisa kode, dan hal sebaliknya dapat terjadi. Metode ini juga membantu memastikan bahwa hanya satu proses yang berjalan di bagian kritis pada waktu tertentu.
Example
PROCESS Pi FLAG[i] = true while( (turn != i) AND (CS is !free) ){ wait; } CRITICAL SECTION FLAG[i] = false turn = j; //choose another process to go to CS
- Asumsikan ada N proses (P1, P2,…PN) dan setiap proses pada suatu waktu harus masuk ke Critical Section
- Array FLAG[] berukuran N dipertahankan yang secara default salah. Jadi, setiap kali suatu proses perlu memasuki bagian kritis, ia harus menetapkan tandanya sebagai benar. Misalnya, Jika Pi ingin masuk maka akan disetel FLAG[i]=TRUE.
- Variabel lain yang disebut TURN menunjukkan nomor proses yang sedang menunggu untuk masuk ke CS.
- Proses yang masuk ke bagian kritis saat keluar akan mengubah TURN ke nomor lain dari daftar proses yang siap.
- Contoh: belokannya 2 lalu P2 masuk ke bagian Kritis dan saat keluar belokan=3 maka P3 keluar dari loop tunggu.
Syncperangkat keras kronisasi
Terkadang masalah Critical Section juga diselesaikan oleh perangkat keras. Beberapa sistem operasi menawarkan fungsi kunci di mana suatu Proses memperoleh kunci saat memasuki Critical Section dan melepaskan kunci setelah meninggalkannya.
Jadi ketika proses lain mencoba masuk ke bagian kritis, ia tidak akan bisa masuk karena terkunci. Ia hanya dapat melakukannya jika gratis dengan memperoleh kunci itu sendiri.
Kunci Mutex
Syncperangkat keras kronisasi bukanlah metode yang mudah untuk diterapkan bagi semua orang, sehingga metode perangkat lunak ketat yang dikenal sebagai Mutex Locks juga diperkenalkan.
Dalam pendekatan ini, di bagian entri kode, LOCK diperoleh atas sumber daya penting yang digunakan di dalam bagian kritis. Di bagian keluar kunci itu dilepaskan.
Semaphore Solusi
Semaphore hanyalah sebuah variabel yang non-negatif dan dibagi antar thread. Ini adalah algoritma atau solusi lain untuk masalah bagian kritis. Ini adalah mekanisme pensinyalan dan thread yang menunggu di semaphore, yang dapat diberi sinyal oleh thread lain.
Ia menggunakan dua operasi atom, 1) menunggu, dan 2) sinyal untuk sinkronisasi proses.
Example
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 wajib yang harus ditegakkan oleh bagian kritis adalah: 1) Pengecualian Bersama 2) Solusi proses 3) Penantian 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 ada orang yang 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.
- Permasalahan Critical Section juga dapat diatasi dengan melakukan sinkronisasi perangkat keras
- Syncperangkat keras kronisasi bukanlah metode yang mudah untuk diterapkan bagi semua orang, sehingga metode perangkat lunak ketat yang dikenal sebagai Mutex Locks juga diperkenalkan.
- Semaphore adalah algoritma atau solusi lain untuk masalah bagian kritis.