Process Synchronization
Synchronization adalah sebauh proses di mana sistem itu saling membagikan resources-nya sehingga terjadilah concurrent access untuk membagikan data yang dikendalikan. Akibat dari synchronization ini adalah dapat meminimalisir inkonsistensi data.
Race Condition
Suatu kondisi di mana ada banyak proses yang mengeksekusi kode yang sama atau mengakses memori yang sama atau shared variables apapun sehingga ada kemungkinan untuk output atau value dari shared variable-nya itu salah.
Critical Section Problem
Segmen kode di mana mempunyai akses ke shared variables dan harus dieksekusi sebagai atomic action. Oleh karena itu, hanya satu proses saja yang boleh mengeksekusi critical section.
Semaphores
Semaphores adalah suatu mekanisme signaling dan sebuah thread di mana jika hal ini menunggu di semaphore, maka akan diberi sinyal oleh thread lain untuk bisa dijalankan..
Mutex lock
Sebuah lock yang di set sebelum menggunakan shared resource dan dilepaskan setelah menggunakannya. Hal ini memastikan sinkronisasi akses kepada shared resource di dalam kode.
Deadlock
Sebuah situasi yang terjadi di operating system ketika suatu proses masuk sedang berada dalam mode menunggu karena ada proses lain yang sedang menunggu tetapi meng-holding resources yang dibutuhkan.
Deadlock Characterization
Terdapat 4 kondisi pada deadlock characterization, yaitu Mutual exclusion, Hold and wait, No preemption, dan Circular wait. Terdapat diagram yang membantu menggambarkan cara kerja masing-masing kondisi.
Deadlock Handling Strategies
Ada 4 strategi penanganan untuk deadlock, yaitu Deadlock Ignorance, Deadlock prevention, Deadlock avoidance, Deadlock detection and recovery.
Peterson’s Algorithm
Peterson’s Algorithm is used to synchronize two processes. It uses two variables, a bool array flag of size 2 and an int variable turn to accomplish it.
In the solution i represents the Consumer and j represents the Producer. Initially the flags are false. When a process wants to execute it’s critical section, it sets it’s flag to true and turn as the index of the other process. This means that the process wants to execute but it will allow the other process to run first. The process performs busy waiting until the other process has finished it’s own critical section.
After this the current process enters it’s critical section and adds or removes a random number from the shared buffer. After completing the critical section, it sets it’s own flag to false, indication it does not wish to execute anymore.
Banker’s Algorithm
Merupakan algoritma resource allocation dan deadlock avoidance yang menguji keamanan dengan mensimulasikan alokasi untuk jumlah maksimum yang telah ditentukan sebelumnya dari semua sumber daya, kemudian membuat pemeriksaan “status-s” untuk menguji kemungkinan aktivitas, sebelum memutuskan apakah alokasi perlu dilanjutkan.