WHO
entry section - Code
that requests permission to enter its critical section.
critical section - Section of code where shared data is
accessed.
exit section - Code that is run after exiting the critical section
bahagian kemasukan - Kod yang meminta kebenaran untuk memasuki bahagian kritikalnya.
seksyen kritikal
- Seksyen kod di mana data yang dikongsi diakses.
bahagian keluar
- Kod yang dijalankan selepas keluar bahagian kritikal
WHAT
Part of program that access shared variable.
eg: modifying count from previous bounded buffer problem
eg: one-lane bridges during construction
Sebahagian daripada program yang mengakses pembolehubah bersama.
contohnya: mengubahsuai kiraan dari masalah penampan yang terkurung sebelumnya
contohnya: jambatan satu lorong semasa pembinaan
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 tersebut mutually
exclusive. Oleh karena itu, diperlukan suatu mekanisme atau aturan agar proses
sifat mutually exclusive dapat terpenuhi.
WHEN
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.
WHY
Mutual Exclusion -
“One at a time.”
If process Pi is executing in its critical section, then no
other processes can be executing in their critical sections.
“no two
threads can simultaneously execute their code in critical section”
Pengecualian Bersama - "Satu demi satu."
Sekiranya proses Pi dilaksanakan dalam bahagian kritikal, maka tidak ada proses lain yang boleh dilaksanakan di bahagian kritikal mereka.
"Tidak ada dua benang secara serentak boleh melaksanakan kod mereka dalam seksyen kritikal"
Progress - “no
unnecessary waiting.” -- liveness
If no process is executing in its critical section and there
exist some processes that wish to enter their critical section, then the
selection of the processes that will enter the critical section next cannot be
postponed indefinitely
“no
thread running outside its critical section may block another thread.”
Proofing:for two process P0 and P1 : If P1 didnt wait to enter CS, P0 can enter as
many times as it wants
Kemajuan -
"tidak ada yang tidak perlu menunggu." - liveness Sekiranya tiada
proses melaksanakan dalam seksyen kritikal dan terdapat beberapa proses yang
ingin memasukkan seksyen kritikal, maka pemilihan proses yang akan memasuki
bahagian kritis seterusnya tidak dapat ditangguhkan selama-lamanya
"Tiada benang yang berjalan di luar bahagian kritikalnya
boleh menyekat benang lain."
Pembuktian: untuk dua proses P0 dan P1: Jika P1 tidak
menunggu untuk memasuki CS, P0 boleh masuk sebanyak yang ia inginkan
HOW
Four different approaches Empat
pendekatan yang berbeza
1.
Software-defined approaches, Pendekatan yang
ditakrifkan oleh perisian
Peterson algorithm : alternation and flag /
Algoritma Peterson: penggantian dan bendera
2.
Support from the OS
Semaphore, monitor
3.
Hardware support
Special instructions : TestAndSet , Swap / Arahan khas: TestAndSet, Pertukaran
4.
Support from the programming language / Sokongan
dari bahasa pengaturcaraan
ADA rendezvous / ADA pertemuan
To avoid a race condition, the execution of CS must be
mutually exclusive - if one process access the data , no other process can
access it
Untuk mengelakkan keadaan perlumbaan, pelaksanaan CS harus saling eksklusif -
jika satu proses mengakses data, tidak ada proses lain yang dapat mengaksesnya
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 memerlukan 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.
http://agustriadi17.blogspot.com/2011/03/critical-section.html