• Tidak ada hasil yang ditemukan

Tabel 22.3. Tabel Spin Lock Versus Semaphore

Dalam dokumen Kumpulan Makalah | Blogger Lampung Tengah SO (Halaman 181-185)

Fungsi down_interruptible() untuk meminta semafor. Jika gagal, maka variabel yang bersangkutan akan sleep dalam state TASK_INTERRUPTIBLE. Jika kemudian variabel menerima signal makadown_interruptible() akan mereturn -EINTR. Sehingga fungsidown()akan membuat variabel masuk dalam state TASK_UNINTERRUPTIBLE dan akan dijalankan dalam

critical regionnya. Untuk melepaskan semafor, digunakan fungsiup(). Mengetahui apakah akan menggunakan spin lock atau semafor adalah cara yang baik untuk mengoptimalkan code yang dibuat Berikut ini tabel mengenai apa yang diperlukan untuk menentukan lock mana yang digunakan

Tabel 22.3. Tabel Spin Lock Versus Semaphore

Requirement Recommended

Overhead locking yang rendah Spin lock

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.

[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.org/wiki/Zombie_process . Diakses 2 Juni 2006.

[WEBLINUX2002] Robert Love. 2002. Kernel Locking Techniques http://www.linuxjournal.com/article/5833/ . Diakses 3 Maret 2007.

[WEBwikipedia2007a] From Wikipedia, the free encyclopedia. 2007.. 2007. Symmetric

Multiprocessing http://en.wikipedia.org/wiki/Symmetric_multiprocessing/ . Diakses 3

Maret 2007.

[WEBwikipedia2007] From Wikipedia, the free encyclopedia. 2007.. 2007. Critical Section

http://en.wikipedia.org/wiki/Critical_section.htm/ . Diakses 10 April 2007. Rangkuman

Bab 23. Deadlocks

23.1. Pendahuluan

Dalam sistem komputer, terdapat banyak sumber daya yang hanya bisa dimanfaatkan oleh satu proses pada suatu waktu. Contohnya adalah penggunaan sumber daya seperti printer, tape drives dan CD-ROM drives. Dua buah proses yang menggunakan slot yang sama pada tabel proses dapat menyebabkan kerusakan pada sistem. Untuk itu, setiap sistem operasi memiliki mekanisme yang memberikan akses eksklusif pada sumber daya.

Pada kenyataannya, proses membutuhkan akses eksklusif untuk beberapa sumber daya sekaligus. Bayangkan apabila sebuah proses, sebut saja proses A, meminta sumber daya X dan mendapatkannya. Kemudian ada proses B yang meminta sumber daya Y dan mendapatkannya juga. Setelah itu, proses A meminta sumber daya Y dan proses B meminta sumber daya X. Pada situasi tersebut, kedua proses harus ter-block dan menunggu secara terus-menerus. Keadaan seperti itu dinamakan deadlock.

Deadlock secara bahasa berarti buntu atau kebuntuan. Dalam definisi lebih lengkap, deadlock berarti

suatu keadaan dimana sistem seperti terhenti dikarenakan setiap proses memiliki sumber daya yang tidak bisa dibagi dan menunggu untuk mendapatkan sumber daya yang sedang dimiliki oleh proses lain. Keadaan seperti ini hanya dapat terjadi pada akses terhadap sumber daya yang tidak bisa dibagi atau non-sharable.

Dalam dokumen Kumpulan Makalah | Blogger Lampung Tengah SO (Halaman 181-185)