Cicak Bin Kadal
Top 10 List of Week 07
Annisa Devi Nurmalasari --- Tangerang

Top 10 List of Week 07

  1. Process Synchronization: Critical Section Problem in OS
    Suatu task yang mengkoordinasikan proses di mana tidak ada dua proses yang mengakses resources yang sama sehingga tidak akan terjadi inkonsistensi shared data disebut Process Synchronization. Sementara critical section merupakan segmen dari code yang bisa diakses oleh sinyal dari proses pada waktu tertentu di mana di dalam critical section, hanya ada satu proses yang dapat dieksekusi, sementara proses lain menunggu hingga proses saat ini selesai dijalankan. Situs ini menjelaskan elemen, rules, hingga solusi singkat terkait critical section.

  2. What is a Race Condition?
    Race condition adalah kondisi di mana perilaku program bergantung pada timing yang relatif atau interleaving dari multithread/proccess. Situs ini menggambarkan contoh jelas terkait Race Condition, yaitu 2 proses transfer dari A ke B yang dilakukan secara bersamaan. Selain itu, situs ini juga memberitahu beberapa pattern Race Condition yang sering muncul. Untuk contoh transfer tadi merupakan check-then-act pattern (yang paling sering muncul) dan pattern lainnya seperti Read-Modify-Write. Situs ini juga menjelaskan pendekatan apa yang diperlukan untuk menghadapi Race Condition.

  3. Race Condition vs. Data Race
    Jika race condition merupakan urutan waktu dari proses mempengaruhi kebenaran program, data race terjadi ketika ada dua akses memori, di mana keduanya menargetkan lokasi yang sama atau akses dikerjakan secara concurrently oleh dua threads atau tidak dibaca atau bukan operasi sinkronisasi. Situs ini memberikan 4 contoh fungsi, yang setiap fungsi nya bisa mengandung atau tidak mengandung race condition atau data race.

  4. Lock Variable
    Lock Variable merupakan mekanisme sinkronisasi yang paling simple dan bisa digunakan untuk lebih dari dua proses. Pada mekanisme ini, terdapat lock variable yang bisa bernilai 0 (critical section kosong) atau 1 (critical section diisi). Proses yang mau masuk ke critical section melakukan cek terhadap nilai lock. Jika nilai lock 0, proses akan set lock menjadi 1 dan masuk ke critical section, jika 1 maka akan menunggu. Ada suatu problem di mana ada lebih dari satu proses melihat kekosongan dan memasukin critical section sehingga mekanisme ini tidak memenuhi kondisi “mutual exclusion”.

  5. Test Set Lock Mechanism | Operating System
    Karena pada Lock Variable dimungkinkan ada lebih dari satu proses yang masuk ke critical section, maka TSL Instruction menyediakan solusi di mana kita bisa load nilai variabel lock ke local register R0, setelah memasukan nilai ke register, kita set nilai variabel lock menjadi satu. Proses pertama yang masuk ke TSL instruksi selalu memasuki critical section terlebih dahulu dan proses lainnya tidak diizinkan memasuki critical section hingga proses pertama keluar. Walaupun ada preemption, proses lain tetap tidak bisa tereksekusi di critical section.

  6. Peterson’s Algorithm in Process Synchronization
    Algoritma Peterson menggunakan dua variabel, yaitu array boolean dengan panjang 2 (flag) dan variabel turn. Inisialisasi kedua flag dengan false, lalu ketika salah satu proses misalnya j ingin mengeksekusi critical section maka flag dengan index j diset menjadi true dan set turn dengan proses lainnya (i). Artinya, proses yang akan melakukan eksekusi mengizinkan proses lainnya untuk jalan terlebih dahulu dan proses pertama terjadi busy waiting. Setelah proses j selesai, set flag j menjadi false, demikian pula sebaliknya.

  7. Introduction to Semaphores
    Semaphore merupakan variabel yang hanya bisa diisi dengan nilai positif integer, shared value dari banyak threads, dengan operasi wait dan signal. Wait (P(S)) merupakan operasi mengurangi nilai S dan operasi ini membantu control task entry ke critical section. Signals (V(S)) merupakan operasi menambahkan nilai S dan membantu control task exit dari critical section. Situs ini juga menjabarkan properti-properti, tipe yang terdiri dari Binary dan Counting, contoh penggunaan, hingga keuntungan kerugian dari semaphore.

  8. What is Deadlock and what are its four necessary conditions?
    Deadlock merupakan situasi di mana ada dua proses atau lebih yang saling menunggu satu sama lain. Sebagai contoh, proses 1 sedang mengakses resource 1 dan menunggu resource 2. Pada waktu yang sama, proses 2 sedang mengakses resource 2 dan menunggu resource 1. Hal ini akan menimbulkan infinite waiting karena tidak ada satu proses pun yang meninggalkan resource nya. Situs ini juga menjelaskan bahwa ada 4 kondisi yang menimbulkan kondisi Deadlock ini, di antaranya mutex, hold and wait, No preemption, dan circular wait.

  9. Methods for Handling Deadlocks
    Situs ini menjabarkan beberapa method untuk menghandle deadlocks. Beberapa method tersebut di antaranya deadlock detection, deadlock prevention yang terdiri dari wait-die dan wound-wait scheme, deadlock avoidance yang menggunakan wait for graph, dan ostrich algorithm yang mengasumsikan bahwa deadlock tidak akan pernah muncul dan system akan direboot jika hal tersebut muncul.

  10. Deadlock, Starvation, and Livelock
    Karena saya sering bertemu dengan kata starvation ketika membaca artikel mengenai deadlock maka saya mencari perbedaan antara deadlock, starvation, sekaligus livelock. Ketika deadlock merupakan kondisi di mana kedua proses saling menunggu satu sama lain atau berada di waiting state, livelock muncul ketika ada dua atau lebih proses yang secara terus-menerus mengulangi interaksi yang sama sebagai respons dari perubahan proses lain tanpa melakukan pekerjaan yang berguna. Sementara starvation erat kaitannya dengan kedua hal tersebut. Pada starvation, terjadi request ke resource secara terus menerus sehingga perlu ditentukan siapa yang bisa mengakses resource dan kapan. Hal ini juga dapat menimbulkan beberapa proses tidak akan pernah dilayani.


© 2021-2021 --- Annisa Devi Nurmalasari --- File Revision: 0030---05-Mar-2021.