Makalah Sinkronisasi Proses yang ada pada sistem operasi
Makalah Sinkronisasi Proses yang ada pada sistem operasi
Mata Kuliah Sistem Operasi
Universitas Teknokrat Indonesia
T.A 2020
"Proses Sinkronisasi Pada Sistem Operasi"
Konsep Interaksi Dalam menjalankan fungsinya dalam
sistem operasi, dibutuhkan interaksi antara beberapa proses yang berbeda. Interaksi
tersebut bertujuan agar terjadi kesinambungan antar proses yang terjadi sehingga sistem
operasi dapat berjalan sebagaimana mestinya. Interaksi tersebut dapat melalui sistem berbagi
memori atau dengan cara saling berkirim pesan. Terkadang, beberapa pesan yang dikirim tidak
dapat diterima seluruhnya oleh penerima dan menyebabkan informasi yang lain menjadi tidak
valid, maka dibutuhkanlah sebuah mekanisme sinkronasi yang akan mengatur penerimaan dan
pengiriman pesan sehingga kesalahan penerimaan pesan dapat diperkecil. Pesan yang
dikirim dapat ditampung dalam penyangga sebelum diterima oleh penerima. Interaksi antar proses dapat juga
terjadi antara proses yang memiliki sistem berbeda. Dalam interaksi tersebut dikenal
sebutan client dan server yang memungkinkan sistem yang berbeda untuk berinteraksi
dengan menggunakan socket. Dalam interaksi tersebut dikenal juga RPC (Remote Procedure
Call) yaitu metode yang memungkinkan sebuah sistem mengakses prosedur sistem lain
dalam komputer berbeda. Dalam interaksi antar proses, terkadang suatu proses saling menunggu
proses yang lain sebelum melanjutkan prosesnya, sehingga proses-proses tersebut saling
menunggu tanpa akhir, hal ini disebut deadlock. Jika deadlock terjadi dalam waktu lama, maka
terjadilah starvation, yaitu suatu proses tidak mendapatkan resource yang dibutuhkan. Sinkronisasi 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:
Critical section dalam kernel:
Solusi Critical Section Solusi critical section harus
memenuhi ketiga syarat berikut:
Algoritma I dan II terbukti tidak
dapat memecahkan masalah critical section untuk dua proses karena tidak memenuhi
syarat progress dan bounded waiting. Algoritma yang dapat menyelesaikan masalah critical
section pada dua proses adalah Algoritma III. Sedangkan untuk masalah critical section
pada n-buah proses dapat diselesaikan dengan menggunakan Algoritma Tukang Roti Perangkat Sinkronisasi v Instruksi TestAndSet(). instruksi atomik yang dapat digunakan untuk menangani masalahcritical section. v Semafor. sebuah variabel yang hanya dapat diakses oleh dua buah operasi standar yaituincrement dan decrement. Dua buah jenis semafor, yaitu Binary Semaphore dan Counting Semaphore. Semafor berfungsi untuk menangani masalah critical section, mengatur alokasiresource, dan sinkronisasi antarproses. v Monitor. digunakan untuk menangani masalah yang muncul karena pemakaian semafor. Monitor menjamin mutual exclusion. Untuk menangani masalah sinkronisasi yang lebih rumit monitor menyediakan condition variable. v JVM. mengimplementasikan monitor. Monitor JVM bekerja dengan object locking danmethod-method wait() serta notify(). Monitor JVM dapat digunakan dengan menggunakan keyword synchronized. Transaksi Atomik Transaksi merupakan sekumpulan instruksi atau operasi yang menjalankan sebuah fungsi logis dan memiliki sifat atomicity, consistency, isolation, dan durability. Sifat atomicity pada transaksi menyebabkan transaksi tersebut akan dijalankan secara keseluruhan atau tidak sama sekali. Operasi-operasi pada transaksi atomik disimpan dalam log agar dapat dilakukan rolled-back jika terjadi kegagalan sistem. Dengan memanfaatkan log, pemulihan data dapat dilakukan dengan melakukan undo atau redo. Untuk menghemat waktu pada saat rolled-back, kita dapat memberikan operasi checkpoint pada transaksi sehingga kita tidak perlu memeriksa keseluruhan transaksi untuk memutuskan melakukan undo/redo. Serialisasi diperlukan ketika beberapa transaksi atomik dijalankan secara bersamaan. Hal ini dimaksudkan agar sifat konsistensi hasil eksekusi transaksi dapat terpenuhi. Ada dua cara untuk menjaga agar penjadwalan bersifat serializable, yaitu protokol penguncian dan protokol berbasis waktu. Pada protokol penguncian, setiap data yang akan diakses harus dikunci oleh transaksi yang akan memakainya agar transaksi lain tidak bisa mengakses data yang sama. Sedangkan, pada protokol berbasis waktu, setiap transaksi diberikan suatu timestamp yang unik, sehingga dapat diketahui apakah transaksi tersebut sudah dijalankan atau belum. Protokol berbasis waktu dapat mengatasi masalah deadlock, sedangkan
protokol penguncian tidak. Sinkronisasi Linux ada 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 section nya, tidak ada proses lain yang boleh dijalankan dalam critical section nya. 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. Deadlocks Deadlock adalah 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. Starvation adalah keadaan dimana satu atau beberapa proses ‘kelaparan’ karena terus dan terus menunggu kebutuhan sumber dayanya dipenuhi. Namun, karena sumber daya tersebut tidak tersedia atau dialokasikan untuk proses lain, akhirnya proses yang membutuhkan tidak bisa memilikinya. Kondisi seperti ini merupakan akibat dari keadaan
menunggu yang berkepanjangan. Karakteristik terjadinya deadlock:
Mekanisme penanganan deadlock:
Diagram Graf Deadlock adalah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses di dalam sistem operasi. deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Untuk mendeteksi deadlock dan menyelesaikannya dapat digunakan graf sebagai visualisasinya. Jika dalam graf terlihat adanya perputaran, maka proses tersebut memiliki potensi terjadideadlock. Namun, jika dalam graf tidak terlihat adanya perputaran, maka proses tersebut tidak akan terjadi deadlock. Implementasi graf dalam sistem operasi, yaitu penggunaannya untuk penanganan deadlock pada sistem operasi. Diantaranya adalah graf alokasi sumber daya dan graf tunggu.Graf alokasi sumber daya dan graf tunggu merupakan graf sederhana dan graf berarah. Dua graf tersebut adalah bentuk visualisasi dalam mendeteksi masalah deadlock pada sistem operasi. Untuk mengetahui ada atau tidaknya deadlock dalam suatu graf alokasi sumber daya dapat dilihat dari perputaran dan sumber daya yang dimilikinya. Jika tidak ada perputaran berarti tidak deadlock. Jika ada perputaran, ada potensi terjadi deadlock. Sumber daya dengan instans tunggal dan perputaran pasti akan mengakibatkan deadlock. Pada graf tunggu, deadlock terjadi jika dan hanya jika pada graf tersebut ada perputaran. Untuk mendeteksi adanya perputaran diperlukan operasi sebanyak n 2, dimana n adalah jumlah simpul dalam graf alokasi sumber daya. Bounded-Buffer Proses yang kooperatif bisa berbagi data melalui penukaran pesan. Pesan-pesan yang dikirim antar proses akan disimpan dalam sebuah antrian sementara, yaitu buffer. Jika kapasitas buffertersebut terbatas, maka dia disebut bounded-buffer. Untuk mencegah inkonsistensi data yang terjadi akibat akses data oleh proses kooperatif yang berjalan secara konkuren, maka diperlukan sinkronisasi antar proses-proses
tersebut. Permasalahan bounded-buffer ini diilustrasikan dalam proses produsen-konsumen. Masalah-masalah yang timbul
adalah
Untuk menyelesaikan masalah, digunakanlah perangkat sinkronisasi semafor. Semafor yang digunakan adalah
Dengan demikian produsen yang ingin menaruh data atau konsumen yang ingin mengakses data harus memeriksa apakah proses lain sedang memakai buffer (menggunakan mutex) dan memeriksa apakah buffer penuh atau kosong (menggunakan tempat_kosong dan
tempat_terisi). Readers/Writers Readers/Writers merupakan sebuah masalah klasik dalam contoh sinkronisasi untuk menjaga validitas data. Jika reader sedang mengakses data, reader-reader yang lain boleh ikut mengakses data, tapi writer harus menunggu sampai data tidak diakses siapapun. Jika writer sedang mengakses data, tidak boleh ada thread lain yang mengakses data. Semaphore digunakan untuk sinkronisasi antar thread (baik readers
maupun writers). Sinkronisasi Dengan Semafor Program Hompimpah merupakan ilustrasi dimana sebuah thread memegang kendali sinkronisasi thread lainnya. Seperti yang dijelaskan dalam program masing-masing dari pemain saling mengendalikan satu sama lain, dengan menggunakan alat sinkronisasi yang bernama semafor. Semafor dalam program adalah semafor buatan berupa class Semafor yang dibuat dalam bahasa Java. Adapun di dalamnya terdapat 2 fungsi yaitu fungsi buka() dan fungsikunci() dengan fungsi-fungsi inilah
masing-masing thread dapat mengendalikan satu sama lain. Reference : https://sites.google.com/a/student.unsika.ac.id/karaos/pengertian-os/ proses-sinkronisasi-pada-sistem-operasi |
- Alamat Blog Dosen : https://syaifulahdan.wordpress.com
- Alamat web Program studi : http://if.ftik.teknokrat.ac.id
- Fakultas : http://ftik.teknokrat.ac.id
- Universitas : www.teknokrat.ac.id
- Nama Mahasiswa : Dwi Indriati
Komentar
Posting Komentar