Critical Section
Pengertian Critical Section
Critical
Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya
bersama diakses. Terdiri dari: Entry Section: kode yang digunakan untuk masuk
ke dalam critical section.
Sebuah proses memiliki bagian dimana bagian ini akan melakukan akses dan manipulasi data. Bagian ini disebut dengan critical section. Ketika sebuah proses sedang dijalankan dalam critical section nya, tidak ada proses lain yang boleh dijalankan dalam critical section nya. Karena hal ini dapat memungkinkan terjadinya akses ke resources yang sama dalam waktu yang sama. Keadaan seperti ini disebut proses mutually exclusive. Oleh karena itu, diperlukan suatu mekanisme atau aturan agar proses sifat mutually exclusive dapat terpenuhi.
Sebuah proses memiliki bagian dimana bagian ini akan melakukan akses dan manipulasi data. Bagian ini disebut dengan critical section. Ketika sebuah proses sedang dijalankan dalam critical section nya, tidak ada proses lain yang boleh dijalankan dalam critical section nya. Karena hal ini dapat memungkinkan terjadinya akses ke resources yang sama dalam waktu yang sama. Keadaan seperti ini disebut proses mutually exclusive. Oleh karena itu, diperlukan suatu mekanisme atau aturan agar proses sifat mutually exclusive dapat terpenuhi.
Dengan
mengontrol variabel mana yang diubah baik didalam maupun diluar critical
section, concurrent access dapat dicegah. Critical section biasanya digunakan
saat program multithreading, dimana program tersebut terdiri dari banyak thread,
akan mengubah nilai dari variabel. Dalam hal ini critical section diperlukan
untuk melindungi variabel dari concurrent access yang dapat membuat nilai dari
variabel tersebut menjadi tidak konsisten.
bagaimana
critical section tersebut diimplementasikan didalam sistem operasi ?
Metode yang paling sederhana adalah dengan
mencegah adanya thread lain yang mengubah variabel yang sedang digunakan dalam
critical section. Selain itu, system call yang dapat menyebabkan context switch
juga dihindari. Jika scheduler meng- interrupt proses yang sedang mengakses
critical section nya, maka scheduler akan membiarkan proses tersebut
menyelesaikan critical section nya atau menghentikannya sementara untuk memberi
kesempatan bagi proses lain untuk menjalankan critical section nya. Proses yang
sedang berada dalam critical section nya dijalankan secara mutually exclusive.
Contoh 22.1.
Critical section
do{
critical section
}while(1)
Critical
Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu
waktu
Exit
Section: akhir dari critical section, mengizinkan proses lain
Remainder
Section: kode istirahat setelah masuk ke critical section
Solusi yang
diberikan harus memuaskan permintaaan berikut:
· Mutual exclution
· Mutual exclution
· Deadlock
free
· Starvation
free
Pendekatan
yang mungkin untuk solusi proses sinkronisasi
. Solusi
Piranti lunak (Software solution)
· Tanpa
Sinkronisasi.
· Dengan
Sinkronisasi.
· Low-level
primitives: semaphore
· High-level
primitives: monitors
Tidak ada komentar:
Posting Komentar