Critical Section Sinkronisasi Linux

Requirement Recommended Lock hold time yang singkat Spin lock Lock hold time yang panjang Semaphore Sleep ketika menunggu lock Semaphore

22.7. SMP

Symmetrical Multiprocessing SMP mendukung adanya pengeksekusian secara paralel dua atau lebih thread oleh dua atau lebih processor. Kernel LINUX 2.0 adalah kernel LINUX pertama yang memperkenalkan konsep SMP. Untuk menjaga agar dua thread tidak mengakses resources yang sama dalam waktu yang sama, maka SMP menerapkan aturan dimana hanya ada satu processor yang dapat menjalankan thread dalam kernel mode dengan cara spin lock tunggal untuk menjalankan aturan ini. Spin lock ini tidak memunculkan permasalahan untuk proses yang banyak menghabiskan waktu untuk menunggu proses komputasi, tapi untuk proses yang banyak melibatkan banyak aktifitas kernel, spin lock menjadi sangat mengkhawatirkan. Sebuah proyek yang besar dalam pengembangan kernel LINUX 2.1 adalah untuk menciptakan penerapan SMP yang lebih masuk akal, dengan membagi kernel spin lock tunggal menjadi banyak lock yang masing-masing melindungi terhadap masuknya kembali sebagian kecil data struktur kernel. Dengan menggunakan teknik ini, pengembangan kernel yang terbaru mengizinkan banyak processor untuk dieksekusi oleh kernel mode secara bersamaan.

22.8. Rangkuman

Pada suatu saat dalam sebuah kernel, tidak terkecuali kernel LINUX, dapat terjadi concurrent access. Dalam hal ini diperlukan proteksi dalam kernel yang bersangkutan. Proteksi dapat dilakukan dengan sinkronisasi. Sebuah proses memiliki bagian dimana bagian ini akan melakukan akses dan manipulasi data. Bagian ini disebut dengan critical section. Ketika sebuah proses sedang dijalankan dalam critical sectionnya, tidak ada proses lain yang boleh dijalankan dalam critical sectionnya. Ada dua jenis concurrency yaitu pseudo-concurrency dan true-concurrency. Ada beberapa penyebab konkurensi kernel, diantaranya interrupt, softirqs dan tasklets, kernel preemption, sleeping dan synchronization with user-space, dan symmetrical multiprocessing. Salah satu metode dalam kernel LINUX untuk sinkronisasi adalah atomic operations. Integer atomik adalah salah satu jenis dari atomic operations. Integer Atomik menyediakan instruksi yang dijalankan secara atomik tanpa interrupt. Locking yang paling umum digunakan dalam LINUX adalah spin lock. Spin lock adalah lock yang hanya dapat dilakukan oleh satu thread. Ketika sebuah thread yang akan dijalankan meminta spin lock yang sedang digunakan, maka thread ini akan loops menunggu sampai spin lock tersebut selesai digunakan oleh thread yang sedang berjalan. Semafor dalam LINUX adalah sleeping locks. Ketika sebuah thread meminta semafor yang sedang digunakan, maka semafor akan meletakkan thread tersebut dalam wait queue dan menyebabkan thread tersebut masuk status sleep. Symmetrical multiprocessing SMP mendukung adanya pengeksekusian secara paralel dua atau lebih thread oleh dua atau lebih processor. Kernel LINUX 2.0 adalah kernel LINUX pertama yang memperkenalkan konsep SMP. Rujukan [RobertLove2005] Robert Love. 2005. Linux Kernel Development. Novell Press. 158 [Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley Sons. [Stallings2001] William Stallings. 2001. Operating Systems: Internal and Design Principles. Fourth Edition. Edisi Keempat. Prentice-Hall International. New Jersey. [WEBDrake96] Donald G Drake. April 1996. Introduction to Java threads – A quick tutorial on how to implement threads in Java – http:www.javaworld.com javaworld jw-04-1996 jw-04-threads.html . Diakses 29 Mei 2006. [WEBFasilkom2003] Fakultas Ilmu Komputer Universitas Indonesia . 2003. Sistem Terdistribusi – http:telaga.cs.ui.ac.id WebKuliah sisdis2003 . Diakses 29 Mei 2006. [WEBHarris2003] Kenneth Harris. 2003. Cooperation: Interprocess Communication – Concurrent Processing – http:people.cs.uchicago.edu ~mark 51081 LabFAQ lab5 IPC.html . Diakses 2 Juni 2006. [WEBWalton1996] Sean Walton. 1996. Linux Threads Frequently Asked Questions FAQ – http:linas.org linux threads-faq.html . Diakses 29 Mei 2006. [WEBWiki2006a] From Wikipedia, the free encyclopedia. 2006. Title – http:en.wikipedia.orgwikiZombie_process . Diakses 2 Juni 2006. [WEBLINUX2002] Robert Love. 2002. Kernel Locking Techniques http:www.linuxjournal.comarticle5833 . Diakses 3 Maret 2007. [WEBwikipedia2007a] From Wikipedia, the free encyclopedia. 2007.. 2007. Symmetric Multiprocessing http:en.wikipedia.orgwikiSymmetric_multiprocessing . Diakses 3 Maret 2007. [WEBwikipedia2007] From Wikipedia, the free encyclopedia. 2007.. 2007. Critical Section http:en.wikipedia.orgwikiCritical_section.htm . Diakses 10 April 2007. 159