Rabu, 24 Oktober 2018

Pengertian Critical Section

Critical Section
Critical Section adalah bagian dari suatu proses yang akan melakukan akses dan manipulasi data. Ketika sebuah proses sedang dijalankan dalam critical section nya, tidak ada proses lain yang boleh dijalankan dalam critical section tersebut, karena akan menyebabkan keadaan mutually exclusive. Mutually exclusive yakni keadaan terjadinya akses resources yang sama di saat yang bersamaan. Mutually exclusive memerlukan kondisi tertentu agar dapat terpenuhi.
Critical section biasanya digunakan saat program multithreading, dimana program tersebut terdiri dari banyak thread, akan mengubah nilai dari variabel. Dalam hal ini critical sectiondiperlukan untuk melindungi variabel dari concurrent access (pengaksesan program di saat yang bersamaan) yang dapat membuat nilai dari variabel tersebut menjadi tidak konsisten.
Seperti yang telah kita ketahui bahwa proses dapat bekerja sendiri (independent process) dan juga dapat bekerja bersama proses-proses yang lain (cooperating process). Pada umumnya ketika proses saling bekerjasama (cooperating process) maka proses-proses tersebut akan saling berbagi data. Pada saat proses-proses berbagi data, ada kemungkinan bahwa data yang dibagi secara bersama itu akan menjadi tidak konsisten dikarenakan adanya kemungkinan proses-proses tersebut melakukan akses secara bersamaan yang menyebabkan data tersebut berubah, hal ini dikenal dengan istilah Race Condition.
Bagaimana menghindari race conditions? Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.

Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak enggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions.

Oleh karena itu, dibutuhkan solusi yang tepat untuk menghindari munculnya Race Condition. Solusi tersebut harus memenuhi ketiga syarat berikut:
·         Mutual Exclusion
·         Progress
·         Bounded Waiting

Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
I.             Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
II.          Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
III.       Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
IV.       Tidak ada proses yang menunggu selamamya untuk masuk critical section

Ada dua jenis solusi untuk memecahkan masalah critical section, yaitu.
1.      Solusi Perangkat Lunak. Solusi ini menggunakan algoritma-algoritma untuk mengatasi masalah critical section.
2.      Solusi Perangkat Keras. Solusi ini tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi, mengunci suatu variabel tertentu atau menggunakan instruksi level mesin seperti tes dan set.


Tidak ada komentar:

Posting Komentar

Link Syntax Bootstrap

https://hackerthemes.com/bootstrap-cheatsheet/#alert-dismissible