os211

Top 10 List of Week 07

1. Process Synchronization: Critical Section Problem in OS

Pada multi-process system, ketika ada beberapa proses yang berjalan bersamaan dan lebih dari satu proses mencoba untuk mengakses resource atau data yang sama secara bersamaan, maka dapat terjadi inconsistency data. Oleh karena itu, proses-proses tersebut perlu disinkronkan satu sama lain. Untuk teman-teman yang ingin mengetahui bagaimana proses sinkronisasi bekerja dan apa itu critical section, menurut saya website ini memiliki penjelasan yang cukup baik.

2. Peterson’s Algorithm for Critical Section Problem

Critical section problem membutuhkan solusi untuk menyinkronkan proses yang berbeda. Solusi tersebut harus memenuhi kondisi diantaranya mutual exclusion, progress, dan bounded waiting. Pada video tersebut dijelaskan algoritma Peterson yang memenuhi ketiga kondisi ini.

3. Setuid, Setgid, and Sticky Bits in Linux

Pada Linux file permission, terdapat istilah setuid, setgid, dan sticky bit yang digunakan untuk mengizinkan pengguna tertentu untuk menjalankan suatu program tertentu. Permission yang ditetapkan pada file menentukan apa yang pengguna dapat baca, tulis maupun jalankan pada file. Website tersebut juga menjelaskan pengertian masing-masing istilah tersebut dan bagaimana mengaturnya pada Linux.

4. Deadlock

Deadlock merupakan situasi yang terjadi ketika suatu proses memasuki waiting state karena waiting process lain yang menahan resource yang diminta. Terjadinya deadlock dapat dideteksi oleh resource scheduler. Dalam website ini kita bisa mengetahui beberapa metode yang dapat digunakan untuk mengatasi deadlock yang terdeteksi serta hal lainnya tentang deadlock seperti kekurangan dan kelebihannya.

5. Banker’s Algorithm

Banker’s algorithm dapat digunakan untuk mencegah terjadinya deadlock. Algoritma ini memeriksa semua kemungkinan kegiatan sebelum menentukan apakah alokasi harus dilanjutkan atau tidak. Pada website tersebut terdapat contoh penerapan banker’s algorithm. Dapat kita lihat juga bahwa pada algoritma ini menggunakan notasi-notasi seperti available, max, allocation, dan need.

6. Bounded Buffer Problem

Secara singkat bounded buffer problem merupakan masalah yang terjadi ketika terdapat 2 proses: producer (mencoba memasukkan data ke dalam slot buffer yang kosong) dan consumer (mencoba untuk menghapus data dari slot yang terisi di buffer). kedua proses tersebut tidak akan menghasilkan keluaran yang diharapkan jika dijalankan secara bersamaan sehingga perlu ada cara agar producer dan consumer bekerja secara mandiri.

7. Readers Writer Problem

Readers writer problem merupakan masalah sinkronisasi yang bisa menyebabkan data tidak konsisten ketika ada lebih dari satu thread mengakses data yang sama pada satu waktu. Oleh karena itu, ketika ada writer yang ingin menulis ke resource harus menunggu sampai tidak ada readers yang sedang mengakses resource tersebut.

8. Dining Philosophers Problem

Masalah klasik lainnya dalam sinkronisasi adalah dining philosopher problem. Menurut saya problem ini cukup unik karena dimisalkan dengan adanya philosopher yang ceritanya sedang makan pada meja bundar. Pada link tersebut, masalah ini diatasi dengan menggunakan semaphore.

9. Resource Allocation Graph

Berapa banyak proses yang ada di sistem, banyaknya instance dari setiap jenis resource, dan informasi lainnya tentang state dari sistem direpresentasikan oleh Resource Allocation Graph (RAG). Seperti graf pada umumnya, RAG terdiri dari 2 komponen, yaitu vertices dan edges yang masing-masingnya juga memiliki beberapa jenis.

10. Introduction to Semaphores

Pada topik kali ini memang cukup sering mendengar istilah semaphore pada sistem operasi khususnya pada masalah sinkronisasi karena semaphore dapat berfungsi untuk menangani masalah sinkronisasi secara umum. Link tersebut mungkin bisa dijadikan referensi tambahan karena menurut saya sudah cukup merangkum materi tentang semaphore sebagai tambahan materi yang ada di buku.