hocky

Operating Systems 2021-1 (OS211)

Written by Hocky Yudhiono in Pontianak

Daftar 10 Terbaik Minggu 7

Halo, minggu ini saya akan menulis dalam bahasa Indonesia agar lebih banyak divote mudah dimengerti. Oke saya juga menulis lebih karena artikel-artikel minggu ini lumayan menarik hehe.

1. Race Conditions and How to Prevent Them - A Look at Dekkerโ€™s Algorithm (Video 7โ€™)

Ada sebuah permasalahan modern dalam melakukan komputasi, yaitu mencegah dua proses menggunakan suatu sumber daya (resource) yang bersamaan ๐Ÿš—. Ada berbagai algoritma yang dapat digunakan untuk mencegah permasalahan ini. ๐Ÿ”Dekkerโ€™s algorithm juga dikenal dengan petersonโ€™s algorithm. Algoritma ini memanfaatkan flag menunggu dan variabel giliran.

Alasan menarik: Video dijelaskan dengan animasi yang membuat kita menontonnya tidak bosan. Videonya singkat dan algoritmanya menarik karena merupakan salah satu yang ditemukan pertama kali ๐Ÿฅ‡ untuk mengatasi critical section problem.

2. The Dining Philosophers Problem (Bacaan Post 4โ€™)

Salah satu masalah dalam dunia sistem operasi yang populer ada yang namanya the dining philosophers ๐Ÿค”. Intinya ada berbagai pemikir yang ingin makan dan butuh dua sumpit di kiri dan kanannya ๐Ÿด.

Apakah ada program yang bisa menangani permasalahan ini bila mungkin saja ada perebutan sumpit-sumpit tersebut? Video ini juga sangat menarik untuk disimak Dining philosophers problem Animation (Video 2โ€™) serta penjelasannya. Selain itu, bisa juga dilihat pada video berikut mengenai animasi semaphore.

Alasan menarik: Video dijelaskan dengan animasi juga. Sangat menarik dan mudah dimengerti. Post dijelaskan dengan kode yang dapat dijalankan ๐Ÿ’ป.

3. Hacking Banks With Race Conditions (Bacaan Post 10โ€™)

Permasalahan concurrency ini dapat menyebabkan permasalahan keamanan. Bagaimanakah jadinya? Misalkan ada beberapa perintah:

  • Mengecek akun A ada uang atau tidak
  • Mengirim uang ke akun B
  • Mengurangi uang di akun A

Idealnya semua dilakukan secara seri. Tapi apabila ada konkurensi, bisa saja kita menghasilkan atau mengirim uang lebih daripada apa yang ada di akun kita (karena pengecekan dilakukan sebelum pengurangan) ๐Ÿ’ต.

Ternyata hal ini bukanlah suatu pengandaian. Pernah ada di tahun 2015, seorang penggiat keamanan siber mendapatkan uang tak terhingga di kartu Starbucks-nya โ˜•

Alasan menarik: Menyadarkan kita bahwa belajar OS bukan sekadar belajar saja tapi ada juga studi kasus yang bisa kita hubungkan penerapannya dengan membuat software skala besar di dunia nyata. ๐ŸŒŽ

4. Synchronizing Threads with POSIX Semaphores (Artikel 10โ€™)

Semaphore ๐Ÿšฉadalah API sederhana yang dapat kita gunakan pada program C yang bisa kita tulis untuk membuat semacam penahan pada critical section dari suatu shared memory yang digunakan bersama. Saat kita membuat thread, atau istilahnya dua tasks yang menggunakan sesuatu object yang sama tidak jarang akan terjadi tabrakan. Semaphore ini bekerja dengan cara menunggu dan memberikan sinyal.

Alasan menarik: Website tersebut memberikan tutorial sederhana tentang bagaiman cara menggunakannya dan berbagai contoh latihan serta ilustrasi agar lebih paham mengenai semaphore ๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š๐Ÿ˜Š.

5. When should I use mmap for file access? (Forum 6โ€™)

Pada beberapa week lalu kita sudah belajar tentang shared memory. Salah satu system call yang sering digunakan selain open, read dan write ialah mmap. mmap akan memetakan file shared objek kita ke virtual memory. ๐Ÿ˜ฒUntuk lebih lengkapnya bisa buka bagian extra di Top 10 week 6 saya. Mengapa mmap sangat keren dan berkaitan dengan minggu ini?

Alasan menarik: Dalam mengakses objek, biasanya kita perlu menjaga agar tidak tabrakan. Sehingga konsep mmap disini sangat menarik untuk dipelajari karena bisa dikaitkan dengan sinkronisasi serta object locking. ๐Ÿ”’

6. Inter-process communication in Linux: Shared storage (Artikel 10โ€™)

Mirip dengan yang sebelumnya, namun artikel ini membahas tentang penggunaan resources bersama secara lebih umum, yaitu berbagi file, memori, pipe, antrian pesan, socket, dan sinyal. Dalam berbagai proses ini tentunya bisa terjadi race condition yang bisa kita implementasikan solusinya dengan berbagai alternatif terbaik.

Alasan menarik: Ada kode yang sangat menarik untuk dipelajari, bisa menjelaskan juga cara kerja tugas W07. ๐Ÿ“ฐ๐Ÿ“ฐ

7. Spinlock versus Semaphore (Forum 7โ€™)

Spinlock ialah salah satu implementasi lock selain semaphore. Intinya sih selain dia disignal, dia ngeloop dan ngecek apakah locknya sudah tersedia. Berbeda dengan semaphore yang menggunakan sistem wait and signal. ๐Ÿด

Alasan menarik: Kita sadar bahwa implementasi lock ๐Ÿ” di program itu banyak variasinya kita bisa memilih tergantung bagaimana kita ingin program kita bekerja! Forum tersebut menjelaskan perbedaannya yang mungkin agak sulit dipahami.

8. When should one use a spinlock instead of mutex? (Forum 10โ€™)

Melanjutkan dari nomor 7, memang ada beberapa kasus terkadang karena biasanya mutex membutuhkan waktu yang lebih lama untuk operasi sleep dan wake-nya, berbeda dengan spinlock yang selalu aktif. Setiap implementasi ada pros dan consnya.

Referensi tambahan:

Alasan menarik: Perbandingan yang unik dari setiap implementasi juga, dan ada beberapa alasan kenapa spinlock jarang digunakan dan dianggap harmful dan wasteful! ๐Ÿ„๐Ÿ„

9. Deadlock (Blog post 10โ€™)

Deadlock terjadi saat tidak ada proses yang dapat berlanjut karena adanya keterkuncian penggunaan resouce. Ya. Sudah sesimpel itu ๐Ÿ˜Ž. Tidak ada solusi langsung atau sederhana di deadlock, perlu memang adanya intervensi dari luar. Ini berbahaya lho! Pada windows kalau terjadi deadlock pada system bisa-bisa blue screen!!! ๐Ÿ’™ Baca blog tersebut untuk lebih menariknya

Alasan menarik: Post tersebut menjelaskan tujuh kasus deadlock, tiga skenarionya, serta strategi dalam menangani deadlock. โ˜•

Referensi Tambahan:

10. Do You Really Need to Eject USB Drives? (Video 6โ€™)

Kadang kita penasaran kenapa sih kita mesti eject USB drive atau safely remove hardware? Alasannya ialah karena di beberapa sistem operasi ada yang namanya cache writing. Jadi selama kita menulis di program semua data-data kita sebenarnya belum benar-benar tertulis di drive flash ๐Ÿ’พ.

Sistem Operasi itu akan mengunci dan mount drivenya dan sebenarnya membuat semacam stream baca tulis dengan sistem cache agar lebih cepat. Memang tidak semua sistem operasi begini ๐Ÿ”. Tapi kebanyakan ini digunakan agar I/O lebih optimal dan cepat.

Alasan menarik: Sekarang kita tahu kenapa kadang kita tidak bsia kadang eject drive atau bahkan delete file ya karena ada proses yang menguncinya. Kenapa dikunci? Karena sedang digunakan untuk baca tulis. Selain untuk mencegah proses lain bareng-bareng menulisnya juga agar bisa lebih aman dan cepat. ๐Ÿงท

11. Getting confident with header files in C (Video 3โ€™)

Mungkin materi ini tidak terlalu berkaitan dengan materi sinkronisasi sendiri, tapi semakin dalam kita menulis, sering kali kita melihat sebuah header file yang biasa memilki format yang berakhiran .h. File ini merupakan header file yang umumnya dipakai di C untuk menggabungkan beberapa kode di C ๐Ÿ’ป. Gunanya agar beberapa kode tidak terduplikasi dan dibuat pemisahan antara prototype atau semacam interface, dan macro-macro sederhana.

Alasan menarik: Dengan adanya ini, kita bisa lebih paham tentang kode-kode demo yang disediakan di repository SistemOperasi dan bagaimana cara kerjanya! ๐Ÿ˜ฒ๐Ÿ˜ฒ๐Ÿ˜ฒ๐Ÿ˜ฒ

12.On the bankerโ€™s algorithm (Artikel 12โ€™)

Bankerโ€™s algorithm ialah algoritma untuk mencegah terjadinya deadlock! Bukan untuk recovery atau mengobati ya ๐Ÿ’Š! Sebenarnya ada dua masalah utama dalam deadlock problem.

  1. Kita tidak tahu kapan suatu proses cukup berhenti menggunakan suatu resource.
  2. Kita tidak tahu kapan dia butuh menggunakan resource lain dan akan diam menunggu.

Suatu sistem akan tidak aman bila worstcasenya bisa mencapai deadlock. Bankerโ€™s algorithm akan melakukan iterasi di mana ada ada sebuah sequence sehingga setiap proses dapat mencapai maksimum resource nya, dan ditutup lagi seperti itu. Untuk lebih jelasnya baca postingannya deh! ๐Ÿ˜ญ

Referensi Tambahan:

Alasan menarik: Postingannya bagus sekali karena dijelaskan dengan handwritten illustration dan semacam dibawa storytelling tentang deadlock dan Bankerโ€™s Algorithm!! Sangat benar-benar direkomendasi untuk bacaan di waktu senggang! ๐Ÿต

Sekian daftar minggu 7 dari ku. Daftar minggu 8 akan di-post secepatnya! Kalau votenya banyak saya akan menulis dalam bahasa Indonesia lagi. hehehe.

Sampai jumpa! ๐Ÿ‘‹


๐ŸŒต ยฉ Hocky Yudhiono, 2021 - 2021