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
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
Semaphore, monitor
3.
Hardware support
Special instructions : TestAndSet , Swap / Arahan khas: TestAndSet, Pertukaran
Special instructions : TestAndSet , Swap / Arahan khas: TestAndSet, Pertukaran
4.
Support from the programming language / Sokongan
dari bahasa pengaturcaraan
ADA rendezvous / ADA pertemuan
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.
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