Pengertian Critical Section
Critical Section adalah dengan mendesain sebuah protokol di mana proses-proses
dapat menggunakannya secara bersama-sama. Setiap proses harus ‘meminta izin’
untuk memasuki critical section-nya. Bagian dari kode yang mengimplementasikan
izin ini disebut entry section. Akhir dari critical section itu
disebut exit section. Bagian kode selanjutnya disebut remainder
section.
Struktur
umum dari proses Pi yang memiliki segmen critical section adalah :
Solusi
dari masalah critical section harus memenuhi tiga syarat berikut:
1.
Mutual Exclusion.
Jika
suatu proses sedang menjalankan critical section-nya, maka proses-proses
lain tidak dapat menjalankan critical section mereka. Dengan kata lain,
tidak ada dua proses yang berada dicritical section pada saat yang
bersamaan.
2.
Terjadi kemajuan (progress).
Jika
tidak ada proses yang sedang menjalankan critical section-nya dan ada
proses-proses lain yang ingin masuk ke critical section, maka hanya
proses-proses yang yang sedang berada dalamentry section saja yang dapat
berkompetisi untuk mengerjakan critical section.
3.
Ada batas waktu tunggu (bounded waiting).
Jika
seandainya ada proses yang sedang menjalankan critical section, maka
proses lain memiliki waktu tunggu yang ada batasnya untuk
menjalankan critical section -nya, sehingga dapat dipastikan bahwa
proses tersebut dapat mengakses critical section-nya (tidak mengalamistarvation:
proses seolah-olah berhenti, menunggu request akses ke critical
sectiondiperbolehkan).
Solusi
Untuk Dua Proses
Ada
dua jenis solusi masalah critical section, yaitu:
1.
Solusi perangkat lunak.
Dengan
menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada
asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang
bukan nol.
2.
Solusi perangkat keras.
Tergantung
pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan
interupsi atau dengan mengunci suatu variabel tertentu
A.
Penjadwalan Preemptive
- Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:
- Berubah dari running ke waiting state.
- Berubah dari running ke ready state.
- Berubah dari waiting ke ready state.
- Dihentikan.
Penjadwalan Preemptive mempunyai
arti kemampuan sistem operasi untuk memberhentikan sementara proses yang sedang
berjalan untuk memberi ruang kepada proses yang prioritasnya lebih tinggi.
Penjadwalan ini bisa saja termasuk penjadwalan proses atau M/K.
Penjadwalan Preemptivememungkinkan sistem untuk lebih bisa menjamin bahwa
setiap proses mendapat sebuah slice waktu operasi. Dan juga membuat
sistem lebih cepat merespon terhadap event dari luar (contohnya
seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu atau beberapa
proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan
yaitu sistem lebih responsif daripada sistem yang memakai penjadwalan Non
Preemptive.
Dalam
waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses
yang memilikiBurst M/K yang sangat lama disebut I/O Bound, dan proses
yang memiliki Burst CPU yang sangat lama disebutCPU Bound. Terkadang
juga suatu sistem mengalami kondisi yang disebut busywait, yaitu saat
dimana sistem menunggu request input(seperti disk, keyboard,
atau jaringan). Saat busywait tersebut, proses tidak melakukan
sesuatu yang produktif, tetapi tetap memakan resource dari CPU.
Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.
Dengan
kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang
menyela proses yang sedang berjalan dan memaksa sistem untuk menentukan proses
mana yang akan dieksekusi selanjutnya.
Penjadwalan
nomor 1 dan 4 bersifat Non Preemptive sedangkan
lainnya Preemptive. Penjadwalan yang biasa digunakan sistem operasi dewasa
ini biasanya bersifat Preemptive. Bahkan beberapa penjadwalan sistem
operasi, contohnya Linux 2.6, mempunyai
kemampuan Preemptive terhadap system call-nya (preemptible
kernel). Windows 95, Windows XP, Linux, Unix, AmigaOS, MacOS X, dan
Windows NTadalah beberapa contoh sistem operasi yang menerapkan
penjadwalan Preemptive.
Lama
waktu suatu proses diizinkan untuk dieksekusi dalam
penjadwalan Preemptive disebut time slice/quantum. Penjadwalan
berjalan setiap satu satuan time slice untuk memilih proses mana yang
akan berjalan selanjutnya. Bila time slice terlalu pendek maka
penjadwal akan memakan terlalu banyak waktu proses, tetapi bila time
sliceterlau lama maka memungkinkan proses untuk tidak dapat merespon
terhadapevent dari luar secepat yang diharapkan.
B.
Penjadwalan Non Preemptive
Penjadwalan Non
Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak
pernah melakukan context switch dari proses yang sedang berjalan ke
proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak bisa
di-interupt.
Penjadwalan Non
Preemptive terjadi ketika proses hanya:
1. Berjalan
dari running state sampai waiting state.
2. Dihentikan.
Ini
berarti CPU menjaga proses sampai proses itu pindah ke waiting
state ataupun dihentikan (proses tidak diganggu). Metode ini digunakan
oleh Microsoft Windows 3.1 dan Macintosh. Ini adalah metode yang dapat
digunakan untuk platformshardware tertentu, karena tidak memerlukan
perangkat keras khusus (misalnyatimeryang digunakan untuk meng interupt pada
metode penjadwalan Preemptive).
Sumber :
http://agustriadi17.blogspot.com/2011/03/critical-section.html
http://muhammadmiftahpratama.blogspot.com/p/criticalsection-adalah-segmen-kode-d.html
0 Komentar