Welcome

This is my blog Jangan lupa subscribe dan jadikan saya femes dengan anda menjadi follower saya.

Link Kedua

ini post kedua

Saturday, 24 November 2018

Review - Critical section





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