os211

Top 10 List of Week 07

  1. Synchronization in Linux
    Kita sudah sering mendengar kata synchronization dalam threads. Tapi sebenarnya mengapa synchronization ini penting? Ketika dua atau lebih thread perlu mengakses resources yang sama, mereka memerlukan beberapa cara untuk memastikan bahwa resources tersebut hanya akan digunakan oleh satu thread pada satu waktu. Proses ini yang dinamakan synchronization. Synchronization ini penting untuk menghindari konflik yang kemungkinan terjadi jika perlakuan kedua thread ini berbeda efeknya saat menggunakan shared resources tersebut. Seperti data yang tidak konsisten.
  2. Shared Memory and it’s importance
    Bayangkan dalam pengembangan suatu aplikasi, tim developer akan sering menggabungkan hampir semua hal dalam proyek mereka. Dalam artikel ini disebutkan bahwa penggunaan shared memory sangat membantu untuk aplikasi Web, serta untuk aplikasi yang sangat penting bagi keamanan dan modul otorisasi / otentikasi untuk server Web. Shared memory juga disebut sebagai bentuk IPC tercepat.
  3. How to determine a critical section
    Critical section/region adalah segmen kode yang dapat diakses oleh signal process pada titik waktu tertentu. Bagian ini terdiri dari sumber data bersama (shared memory) yang perlu diakses oleh proses lain. Karakteristik critical section berupa kode dimana hanya satu proses dapat dijalankan dalam satu titik waktu. Process lain, menunggu untuk mengeksekusi bagian kritisnya, perlu menunggu hingga process saat ini menyelesaikan eksekusinya.
  4. Shared Memory vs Message Passing
    Di atas sudah saya jelaskan mengenai shared memory. Lalu apa bedanya dengan message passing? well, message passing ini seperti namanya merupakan komunikasi antar thread dimana ada suatu objek yang di pass secara eksplisit. Message passing digunakan ketika threads tidak memiliki shared memory dan tidak dapat berbagi monitor atau semaphore atau variabel bersama lainnya untuk berkomunikasi.
  5. Avoiding race condition
    Race condition merupakan suatu bentuk konflik yang terjadi pada critical section. Istilah race condition bermula dari metafora bahwa thread balapan melewati critical section, dan bahwa hasil balapan tersebut berdampak pada hasil pelaksanaan critical section (misal 2 thread melakukan read/write pada variabel yang sama). Lalu ada dua tipe race condition yaitu Read-modify-write dan Check-then-act.
  6. Peterson’s Solution : Main Idea
    Seperti yang sudah dibahas sebelumnya, critical section ini merupakan kode yang sakral untuk dijaga penggunaannya. Nah Peterson’s Solution ini merupakan salah satu penangkal terjadinya hal-hal buruk di critical section. Peterson’s Solution ini memberikan deskripsi algoritmik yang baik untuk memecahkan masalah critical solution dengan membahas persyaratan mutual exclusion, progress, dan bounded waiting.
  7. Deadlock Prevention using Banker’s Algorithm
    Deadlock adalah situasi di mana sekumpulan process diblokir karena setiap process memegang resource dan menunggu resource berbeda yang akan diperoleh dari process lain. Banker’s Algorithm ini mensimulasikan sebelumnya alokasi untuk jumlah maksimum yang mungkin dari semua resources. Dengan ini, deadlock dapat dihindari. Process hanya meminta 1 resource dalam satu waktu. Permintaan dikabulkan hanya jika menghasilkan state yang aman (dalam algoritma). Jika permintaan menghasilkan status yang tidak aman, permintaan tersebut ditolak dan process terus menahan resource yang dimilikinya hingga permintaan tersebut dapat dipenuhi.
  8. Mutual Exclusion
    Intinya mutual exclusion ini menghentikan terjadinya race condition. Dengan cara memastikan bahwa akses concurrent tidak terjadi pada kedua thread dalam critical section masing-masing. Mutual exclusion akan mem-block thread-x yang akan mengakses critical sectionny x jika thread-y belum menyelesaikan critical section y.
  9. Another Deadlock Prevention Algorithm
    Dekker’s Algorithm menawarkan cara untuk memastikan bahwa program hanya dapat mengakses data bersama satu per satu. Jadi Dekker’s Algorithm ini juga upaya menghindari race condition dengan menggunakan mutual exclusion. Bedanya adalah, Dekker’s Algorithm ini digunakan jika intensitas pengaksesan shared memory kedua process itu berbeda. Sehingga jika process-a lebih sering mengakses shared memory dibanding process-b, maka ia tidak perlu menunggu gilirannya process-b dulu walaupun process-b tidak mengakses sama sekali. Process-a akan mengeluarkan signal sebelum ia akan mengakses shared memory dan hanya akan diberi akses jika signal processs lainnya tidak dinyalan.
  10. forking
    fork() dalam linux merupakan fungsi yang tujuannya membuat atau me-clone initial process. Jika fork() dipanggil (pada parent) berarti process tersebut sedang membuat (child) processes dengan id yang berbeda-beda. Forking ini dijalankan apabila kita ingin suatu (child) process mengeksekusi task yang berbeda disaat parent nya sibuk melakukan tasknya.