Pendahuluan Race Condition Critical Section
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. Gambar 19.1. Algoritma I Algoritma ini menggunakan variabel bernama turn, nilai turn menentukan proses mana yang boleh memasuki critical section dan mengakses data yang di-sharing. Pada awalnya variabel turn diinisialisasi 0, artinya P0 yang boleh mengakses critical section. Jika turn = 0 dan P0 ingin menggunakan critical section, maka ia dapat mengakses critical section-nya. Setelah selesai mengeksekusi critical section, P0 akan mengubah turn menjadi 1, yang artinya giliran P1 tiba dan P1 diperbolehkan mengakses critical section. Ketika turn = 1 dan P0 ingin menggunakan critical section, maka P0 harus menunggu sampai P1 selesai menggunakan critical section dan mengubah turn menjadi 0. 129 Ketika suatu proses sedang menunggu, proses tersebut masuk ke dalam loop, dimana ia harus terus-menerus mengecek variabel turn sampai berubah menjadi gilirannya. Proses menunggu ini disebut busy waiting. Sebenarnya busy waiting mesti dihindari karena proses ini menggunakan CPU. Namun untuk kasus ini, penggunaan busy waiting diijinkan karena biasanya proses menunggu hanya berlangsung dalam waktu yang singkat. Pada algoritma ini masalah muncul ketika ada proses yang mendapat giliran memasuki critical section tapi tidak menggunakan gilirannya sementara proses yang lain ingin mengakses critical section. Misalkan ketika turn = 1 dan P1 tidak menggunakan gilirannya maka turn tidak berubah dan tetap 1. Kemudian P0 ingin menggunakan critical section, maka ia harus menunggu sampai P1 menggunakan critical section dan mengubah turn menjadi 0. Kondisi ini tidak memenuhi syarat progress karena P0 tidak dapat memasuki critical section padahal saat itu tidak ada yang menggunakan critical section dan ia harus menunggu P1 mengeksekusi non- critical section -nya sampai kembali memasuki critical section. Kondisi ini juga tidak memenuhi syarat bounded waiting karena jika pada gilirannya P1 mengakses critical section tapi P1 selesai mengeksekusi semua kode dan terminate, maka tidak ada jaminan P0 dapat mengakses critical section dan P0-pun harus menunggu selamanya.19.3. Algoritma II
Algoritma II juga mencoba memecahkan masalah critical section untuk dua proses. Algoritma ini mengantisipasi masalah yang muncul pada algoritma I dengan mengubah penggunaan variabel turn dengan variabel flag. Variabel flag menyimpan kondisi proses mana yang boleh masuk critical section. Proses yang membutuhkan akses ke critical section akan memberikan nilai flag-nya true. Sedangkan proses yang tidak membutuhkan critical section akan men-set nilai flagnya bernilai false. Gambar 19.2. Algoritma II Suatu proses diperbolehkan mengakses critical section apabila proses lain tidak membutuhkan critical section atau flag proses lain bernilai false. Tetapi apabila proses lain membutuhkan critical section ditunjukkan dengan nilai flag-nya true, maka proses tersebut harus menunggu dan mempersilakan proses lain menggunakan critical section-nya. Disini terlihat bahwa sebelum memasuki critical section suatu proses melihat proses lain terlebih dahulu melalui flag-nya, apakah proses lain membutuhkan critical section atau tidak. Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak membutuhkan critical section. Jika P0 ingin mengakses critical section, ia akan mengubah flag[0] menjadi true. Kemudian P0 akan mengecek apakah P1 juga membutuhkan critical section, jika flag[1] bernilai false maka P0 akan menggunakan critical section. Namun jika flag[1] bernilai true maka P0 harus menunggu P1 menggunakan critical section dan mengubah flag[1] menjadi false. 130Parts
» Kumpulan Makalah | Blogger Lampung Tengah SO
» Konsep Dasar Perangkat Komputer
» Pendahuluan Hari Gini Belajar SO?
» Mengapa Mempelajari Sistem Operasi?
» Definisi Sementara Hari Gini Belajar SO?
» Sejarah Perkembangan Hari Gini Belajar SO?
» Bahan Pembahasan Tantangan Prasyarat Sasaran Pembelajaran Rangkuman
» Pendahuluan HaKI Perangkat Lunak
» Perangkat Lunak Bebas HaKI Perangkat Lunak
» Aneka Ragam HaKI HaKI Perangkat Lunak
» Lisensi Perangkat Lunak HaKI Perangkat Lunak
» Copyleft HaKI Perangkat Lunak
» Ilustrasi Lisensi Tantangan Rangkuman
» Pendahuluan Organisasi Sistem Komputer
» Prosesor Organisasi Sistem Komputer
» Penyimpan Data Organisasi Sistem Komputer
» MasukanKeluaran Organisasi Sistem Komputer
» Rangkuman Organisasi Sistem Komputer
» Sistem Operasi Java Bahasa Java
» Dasar Pemrograman Bahasa Java
» Atribut Protected Bahasa Java
» Konstruktor Metode Bahasa Java
» Inheritance Abstract Package Interface
» Pendahuluan Komponen Sistem Operasi
» Kegiatan Sistem Operasi Komponen Sistem Operasi
» Manajemen Proses Komponen Sistem Operasi
» Manajemen Memori Utama Komponen Sistem Operasi
» Harganya murah. Perbandingan harga yang dibayar oleh pengguna per byte data jauh lebih
» Menyimpan berkas secara permanen. Data atau berkas diletakkan secara fisik pada piringan
» Menyimpan program yang belum dieksekusi prosesor. Jika sebuah program ingin dieksekusi
» Pendahuluan Layanan dan Antarmuka
» Jenis Layanan Layanan dan Antarmuka
» Antarmuka Layanan dan Antarmuka
» System Calls API Application Program Interface
» Jenis System Calls Layanan dan Antarmuka
» System Programs Layanan dan Antarmuka
» Application Programs Layanan dan Antarmuka
» Rangkuman Layanan dan Antarmuka
» Pendahuluan Struktur Sistem Operasi
» Struktur Sederhana Struktur Sistem Operasi
» Struktur Berlapis Struktur Sistem Operasi
» Mikro Kernel Struktur Sistem Operasi
» Portability. Pada kernel mikro, semua atau sebagian besar kode yang prosesor-spesifik berada di
» Reliability. Semakin besar suatu software, maka tentulah semakin sulit untuk menjamin
» Support for object-oriendted OS. Model kernel mikro sangat sesuai untuk mengembangkan
» Proses Boot Struktur Sistem Operasi
» Kompilasi Kernel Struktur Sistem Operasi
» Mengekstrak kernel. Source code kernel Anda yang lama bisa dilihat di direktori usrsrclinux.
» Buat symbolic link. Struktur Sistem Operasi
» Konfigurasi kernel. Sebelum proses kompilasi, anda memiliki 2 pilihan, yaitu membuat
» Kompilasi. Jalankan perintah make bzImag Proses kompilasi kernel bisa memakan waktu
» Komputer Meja Struktur Sistem Operasi
» Sistem Prosesor Jamak Struktur Sistem Operasi
» Lebih ekonomis. Daripada sistem dengan banyak prosesor tunggal, karena bisa berbagi memori,
» Peningkatan kehandalan. Jika pekerjaan terbagi rata, maka kegagalan salah satu prosesor bisa
» Availability. Karena semua prosesor menjalankan tugas yang sama, maka kegagalan pada salah
» Incremental growth. Performa bisa ditingkatkan dengan menambah prosesor lagi.
» Sistem Terdistribusi dan Terkluster
» Computation speedup. Jika suatu proses komputasi bisa dipecah-pecah menjadi sejumlah bagian
» Reliability. Jika satu komputer mengalami kegagalan, maka secara keseluruhan sistem masih
» Communication. Karena satu komputer terhubung dengan komputer-komputer laiinya, sangat
» Incremental scalability. Kluster diatur sedemikian rupa sehingga bisa dupgrade sedikit demi
» High availability. Karena setiap komputer yang tergabung adalah standalone mandiri, maka
» Superior priceperformance. Dengan konfigurasi yang tepat, dimungkinkan untuk membangun
» Sistem Waktu Nyata Struktur Sistem Operasi
» Aspek Lainnya Struktur Sistem Operasi
» Rangkuman Struktur Sistem Operasi
» Pendahuluan Virtual Machine VM
» Virtualisasi Penuh Virtual Machine VM
» VMware Xen VMM Virtual Machine VM
» .NET Framework Virtual Machine VM
» Efisien. Kemudahan pada saat proses pembuatan aplikasi, akan berimplikasi terhadap efisiensi
» Konsisten. Kemudahan-kemudahan pada saat proses pembuatan aplikasi, juga bisa berimplikasi
» Microkernel. Kumpulan Makalah | Blogger Lampung Tengah SO
» Hybrid modifikasi dari microkernel. Kernel yang mirip microkernel, tetapi ia juga
» Credentials. Setiap proses harus memiliki hubungan antara user ID dengan group ID yang
» Pembentukan Thread Thread Java
» Penggabungan Thread Thread Java
» Pembatalan Thread Thread Java
» Penjadwalan Preemptive Penjadwalan Non Preemptive
» Context switching. Kumpulan Makalah | Blogger Lampung Tengah SO
» Throughput. Salah satu ukuran kerja adalah banyaknya proses yang diselesaikan per satuan
» Turnaround Time. Dari sudut pandang proses tertentu, kriteria yang penting adalah berapa lama
» Waiting Time. Algoritma penjadwalan CPU tidak mempengaruhi waktu untuk melaksanakan
» Response Time. Di sistem yang interaktif, turnaround time mungkin bukan waktu yang terbaik
» FCFS First Come First Served
» Pendahuluan Penjadwalan Prosesor Jamak
» Penjadwalan MasterSlave Penjadwalan Prosesor Jamak
» Penjadwalan SMP Affinity dan Load Ballancing
» Symetric Multithreading Penjadwalan Prosesor Jamak
» Multicore Penjadwalan Prosesor Jamak
» Rangkuman Penjadwalan Prosesor Jamak
» Pendahuluan Deterministic Modelling Evaluasi dan Ilustrasi
» Queueing Modelling Evaluasi dan Ilustrasi
» Simulasi Implementasi Evaluasi dan Ilustrasi
» Ilustrasi: Linux Evaluasi dan Ilustrasi
» Ilustrasi: Solaris Evaluasi dan Ilustrasi
» System SYS. Solaris menggunakan system class untuk menjalankan kernel proses, seperti
» Time Sharing TS. Time sharing class merupakan default class untuk proses dan kernel thread
» Interactive IA. Kelas Interaktif menggunakan aturan yang sama dengan aturan dengan kelas
» Fixed Priority FX. Thread di kelas fixed priority memiliki range prioritas 0-59 yang sama
» Komunikasi Antar Proses Konsep Interaksi
» Komunikasi tidak langsung. Berbeda dengan komunikasi langsung, jenis komunikasi ini
» Deadlock. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses
» Pendahuluan Race Condition Critical Section
» Prasyarat Solusi Critical Section
» Terjadi kemajuan progress . Jika tidak ada proses yang sedang menjalankan critical
» Ada batas waktu tunggu bounded waiting . Jika seandainya ada proses yang sedang
» Interupsi. Interupsi adalah suatu masalah bila mengandung critical section-nya sendiri. Timer
» Page Fault. Page faults adalah suatu masalah yang potensial; jika sebuah kernel routine
» Kernel code memanggil fungsi penjadwalan sendiri. setiap waktu banyak proses yang berjalan
» Mutual Exclusion. 2. Terjadi kemajuan progress .
» Ada batas waktu tunggu bounded waiting.
» Pendahuluan TestAndSet Perangkat Sinkronisasi
» Counting semaphore. Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem
» Mutual Exclusion. Sesuai dengan prinsip mutual exclusion, jika suatu thread sedang berada
» Cooperation. Cooperation berarti membantu beberapa thread untuk bekerjasama mencapai
» Model Sistem Transaksi Atomik
» Pemulihan Berbasis Log Transaksi Atomik
» Checkpoint Serialisasi Transaksi Atomik
» Protokol Penguncian Transaksi Atomik
» Exclusive. Jika sebuah transaksi Ti melakukan exclusive-mode lock pada data Q, maka transaksi
» Critical Section Sinkronisasi Linux
» Penyebab Konkurensi Kernel Integer Atomik
» Spin Locks Sinkronisasi Linux
» Pengabaian. Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock
» Pencegahan. Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik
» Penghindaran. Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca
» Pendeteksian dan Pemulihan. Pada sistem yang sedang berada pada kondisi deadlock,
» Mutual Exclusion. Kondisi mutual exclusion pada sumber daya adalah sesuatu yang wajar
» Hold and Wait. Untuk kondisi yang kedua, sistem perlu memastikan bahwa setiap kali proses
» No Preemption. Pencegahan kondisi ini dengan cara membolehkan terjadinya preemption.
» Proses . Kumpulan Makalah | Blogger Lampung Tengah SO
» Pendahuluan Penggunaan Semafor Bounded-Buffer
» Pendahuluan Penggunaan Semafor Sinkronisasi Dengan Semafor
» Program Sinkronisasi Dengan Semafor
Show more