• Tidak ada hasil yang ditemukan

Gambar 18.3. ilustrasi proses Pi

Dalam dokumen Kumpulan Makalah | Blogger Lampung Tengah SO (Halaman 149-153)

2. Terjadi kemajuan (progress) . Jika tidak ada proses yang sedang menjalankan critical

section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section,

maka hanya proses-proses yang tidak sedang menjalankan remainder section-nya yang dapat berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section, dan pemilihan siapa yang berhak masuk ke critical section ini tidak dapat ditunda secara tak terbatas (sehingga tidak terjadi deadlock).

3. Ada batas waktu tunggu (bounded waiting) . Jika seandainya ada proses yang sedang menjalankan critical section, maka terdapat batasan waktu berapa lama suatu proses lain harus menunggu giliran untuk mengakses critical section. Dengan adanya batas waktu tunggu akan menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan).

18.5. Critical Section dalam Kernel

Problem untuk kernel muncul karena berbagai tasks mungkin mencoba untuk mengakses data yang sama. Jika hanya satu kernel task ditengah pengaksesan data ketika interrupt service routine dieksekusi, maka service routine tidak dapat mengakses atau merubah data yang sama tanpa resiko mendapatkan data yang rusak. Fakta ini berkaitan dengan ide dari critical section sebagai hasilnya. Saat sepotong kernel code mulai dijalankan, akan terjamin bahwa itu adalah satu-satunya kernel code yang dijalankan sampai salah satu dari aksi dibawah ini muncul:

1. Interupsi. Interupsi adalah suatu masalah bila mengandung critical section-nya sendiri. Timer

interrupt tidak secara langsung menyebabkan terjadinya penjadwalan ulang suatu proses; hanya

meminta suatu jadwal untuk dilakukan kemudian, jadi kedatangan suatu interupsi tidak mempengaruhi urutan eksekusi dari kernel code. Sekali interrupt service selesai, eksekusi akan menjadi lebih simpel untuk kembali ke kernel code yang sedang dijalankan ketika interupsi mengambil alih.

2. Page Fault. Page faults adalah suatu masalah yang potensial; jika sebuah kernel routine mencoba untuk membaca atau menulis ke user memory, akan menyebabkan terjadinya page fault yang membutuhkan M/K, dan proses yang berjalan akan di tunda sampai M/K selesai. Pada kasus yang hampir sama, jika system call service routine memanggil penjadwalan ketika sedang berada di mode kernel, mungkin secara eksplisit dengan membuat direct call pada code penjadwalan atau secara implisit dengan memanggil sebuah fungsi untuk menunggu M/K selesai, setelah itu proses akan menunggu dan penjadwalan ulang akan muncul. Ketika proses jalan kembali, proses tersebut akan melanjutkan untuk mengeksekusi dengan mode kernel, melanjutkan intruksi setelah pemanggilan ke penjadwalan.

3. Kernel code memanggil fungsi penjadwalan sendiri. setiap waktu banyak proses yang berjalan dalam kernel mode,akibatnya sangat mungkin untuk terjadi race condition ,contoh, dalam kernel

mode terdapat struktur data yang menyimpan list file yang terbuka, list tersebut termodifikasi bila

ada data file yang baru dibuka atau ditutup,dengan menambah atau menghapus dari list , race

condition timbul ketika ada dua file yang dibuka dan ditutup bersamaan, untuk mengatasi hal

tersebut kernel mempunyai metode yaitu:

a. Preemptive kernel. pada mode ini proses yang sedang dieksekusi dalam kernel diizinkan untuk diinterupsi oleh proses lain yang memenuhi syarat, akibatnya mode ini juga rentan terkena race condition. Keuntungannya adalah mode ini amat efektif untuk digunakan dalam

real time programming, namun mode ini lebih sulit diimplementasikan dari pada mode non

preemptive kernel. Mode ini diimplementasikan oleh Linux versi 2.6 dan versi komersial Linux lainnya.

b. Non preemptive kernel. mode yang tidak memperbolehkan suatu proses yang berjalan dalam kernel mode diinterupsi oleh proses lain, proses lain hanya bisa dijalankan setelah proses yang ada dalam kernel selesai dieksekusi, implementasinya memang lebih mudah dibandingkan dengan preemptive kernel, mode ini diimplementasikan lewat Windows XP dan Windows 2000.

18.6. Rangkuman

Suatu proses yang bekerja bersama-sama dan saling berbagi data dapat mengakibatkan race

condition atau pengaksesan data secara bersama-sama. Critical section adalah suatu segmen kode

dari proses-proses itu yang yang memungkinkan terjadinya race condition. Untuk mengatasi masalah critical section ini, suatu data yang sedang diproses tidak boleh diganggu proses lain. Solusi prasyarat critical section:

1. Mutual Exclusion.

2. Terjadi kemajuan (progress) .

3. Ada batas waktu tunggu (bounded waiting).

Critical section dalam kernel:

1. Interupsi. 2. Page Fault.

3. Kernel code memanggil fungsi penjadwalan sendiri.

Rujukan

[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.

[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design

and Implementation. Second Edition. Prentice-Hall.

[WEBFSF1991a] Free Software Foundation. 1991. – http://gnui.vLSM.org/ licenses/ gpl.txt . Diakses 7 April 2007.

Bab 19. Solusi Critical Section

19.1. Pendahuluan

Pada bab sebelumnya telah dijelaskan tentang masalah critical section yang dapat menimbulkan

Race Condition. Oleh karena itu, dibutuhkan solusi yang tepat untuk menghindari munculnya Race Condition. Solusi tersebut harus memenuhi ketiga syarat berikut:

1. Mutual Exclusion 2. Progress

3. Bounded Waiting

Ada dua jenis solusi untuk memecahkan masalah critical section, yaitu.

1. Solusi Perangkat Lunak. Solusi ini menggunakan algoritma-algoritma untuk mengatasi masalah critical section.

2. Solusi Perangkat Keras. Solusi ini tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi, mengunci suatu variabel tertentu atau menggunakan instruksi level mesin seperti tes dan set.

Pembahasan selanjutnya adalah mengenai solusi perangkat lunak menggunakan algoritma-algoritma. Algoritma-algoritma yang akan dibahas adalah algoritma untuk memecahkan masalah critical section untuk dua proses yaitu Algoritma I, Algoritma II dan Algoritma III. Perlu diingat bahwa Algoritma I dan Algoritma II tidak dapat menyelesaikan masalah critical section. Adapun algoritma yang dibahas untuk memecahkan masalah critical section untuk n-buah proses adalah Algoritma Tukang Roti.

19.2. Algoritma I

Algoritma I mencoba mengatasi masalah critical section untuk dua proses. Algoritma ini menerapkan sistem bergilir kepada kedua proses yang ingin mengeksekusi critical section, sehingga kedua proses tersebut harus bergantian menggunakan critical section.

Dalam dokumen Kumpulan Makalah | Blogger Lampung Tengah SO (Halaman 149-153)