Critical Section

Apa itu Critical Section? 


Critical Section adalah bagian dari program yang mencoba mengakses sumber daya bersama. Sumber daya itu bisa berupa sumber daya komputer apa pun, seperti lokasi memori, struktur data, CPU, atau perangkat IO apa pun.

Critical Section tidak dapat dieksekusi oleh lebih dari satu proses pada saat yang sama; sistem operasi menghadapi tantangan dalam mengizinkan dan mencegah proses memasuki Critical Section.
Masalah Critical Section digunakan untuk membuat satu set protokol yang memastikan bahwa kondisi Race antar proses tidak pernah terjadi.
Tugas utama kami adalah memecahkan masalah Critical Section untuk menyinkronkan proses kooperatif. Kita harus memberikan solusi yang memungkinkan terpenuhinya kondisi berikut.

Persyaratan Mekanisme Sinkronisasi

Primary

1. Mutual Exclusion
Pengecualian bersama harus menjadi bagian dari solusi kita. Yang dimaksud dengan Mutual Exclusion adalah jika satu proses dieksekusi di dalam critical section, proses lainnya tidak boleh memasukinya.


2. Progress
Kemajuan menyiratkan bahwa jika satu proses tidak perlu dieksekusi ke bagian kritis, itu tidak boleh mencegah proses lain melakukannya.

Secondary

1. Bounded Waiting
Kita harus dapat memprediksi berapa lama waktu yang dibutuhkan untuk setiap proses untuk mencapai bagian kritis. Proses tidak boleh ditunda tanpa batas waktu sebelum memasuki bagian kritis.

2. Architectural Neutrality
Mekanisme kita harus alami secara struktural. Ini berarti bahwa jika solusi kami bekerja dengan baik pada satu arsitektur, itu juga harus bekerja pada yang lain.

Contoh Masalah Critical Section

Mari kita perhatikan contoh bank klasik, contoh ini sangat mirip dengan contoh yang telah kita lihat di atas.
- Mari kita pertimbangkan skenario di mana uang ditarik dari bank oleh kasir (melalui
cek) dan ATM pada saat yang bersamaan.
- Pertimbangkan akun yang memiliki saldo 10.000. Mari kita pertimbangkan bahwa, ketika
seorang kasir menarik uang, dibutuhkan 2 detik untuk memperbarui saldo di akun.
- Dimungkinkan untuk menarik 7000 dari kasir dan dalam waktu pembaruan saldo 2 detik
juga menarik sejumlah 6000 dari ATM.
- Dengan demikian, jumlah uang yang ditarik menjadi lebih besar dari saldo rekening
bank.

Hal ini terjadi karena dua penarikan terjadi pada saat yang bersamaan. Dalam kasus bagian kritis, hanya satu penarikan yang dapat dilakukan dan dapat menyelesaikan masalah in

Solusi untuk Masalah Critical Section

Solusi yang dikembangkan untuk bagian kritis harus memiliki sifat-sifat berikut, - Jika suatu proses masuk ke critical section, maka tidak ada proses lain yang boleh
masuk ke critical section. Ini disebut saling mengesampingkan. - Jika suatu proses berada di critical section dan proses lain datang, maka proses baru
harus menunggu sampai proses pertama keluar dari critical section. Dalam kasus seperti
itu, proses yang menunggu untuk memasuki bagian kritis tidak boleh menunggu dalam
waktu yang tidak terbatas. Ini disebut kemajuan. - Jika suatu proses ingin masuk ke dalam critical section, maka harus ada waktu tertentu
agar proses tersebut dapat dibuat menunggu. Properti ini disebut menunggu terbatas. - Solusinya harus independen dari arsitektur sistem. Ini disebut netralitas
Beberapa solusi berbasis perangkat lunak untuk masalah bagian kritis adalah solusi Peterson, semaphore, monitor. Beberapa solusi berbasis perangkat keras untuk masalah bagian kritis melibatkan instruksi atom seperti TestAndSet, bandingkan dan tukar, Buka Kunci dan Kunci.
Reference :

Komentar

Postingan populer dari blog ini

WINDOWS OS

DOS OS