Langsung ke konten utama

Sistem Operasi #5 Sinkronisasi



Sinkronisasi mengacu pada salah satu dari dua proses yang berbeda tetapi saling berkaitan satu sama lainnya. Dua proses ini merupakan sinkronisasi data dan sinkronisasi proses.

A. Definisi Sinkronisasi
Sinkronisasi merupakan suatu proses pengaturan jalannya beberapa proses pada waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi inconsitensi (ketidak konsistenan) data akibat adanya akses data secara konkuren agar hasilnya bagus dan sesuai dengan apa yang diharapkan.
Sinkronisasi ini dibutuhkan ketika menemukan sebuah kasus yang menyebabkan ketidakkonsistenan data sehingga data menjadi tidak konkuren. 
Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan baik dan sesuai apa yang di harapkan. Adapun manfaat sikronisasi pada sistem operasi adalah: 
  1. Adanya akses-akses data yang sama yang di lakukan secara bersamaan bisa saja menyebabkan data menjadi tidak konsisten 
  2. Agar semua data yang ada tetap konsisten membutuhkan mekanisme-mekanisme agar bisa di pastikan proses eksekusi berjalan. 
  3. Adanya Race Condition yang merupakan kondisi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan akan membuat nilai terkhirnya nanti bergantung dari proses mana yang duluan diakhiri. 
B. Race Condition
Race Condition merupakan situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir. Untuk menghindari Race Condition, proses-proses secara bersamaan harus di sinkronisasikan.
Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.  
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,... masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua variabel tersebut dapat menangani sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak).  
Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak. Situasi ini digambarkan seperti gambar berikut :
C. Critical Section
Critical Section adalah sebuah segmen kode dimana sebuah proses memiliki sumber daya bersama yang diakses terdiri dari:
  1. Entry Section, kode yang digunakan untuk masuk ke dalam critical section 
  2. Critical Section, kode dimana hanya ada satu proses yang dapat dieksekusi pada satu waktu 
  3. Exit Section, akhir dari critical section, mengizinkan proses lain 
  4. Remainder Section, merupakan kode istirahat setelah masuk ke critical section. 
D. Semaphore
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu.
Semaphore mempunyai dua sifat, yaitu:
  1. Semaphore dapat diinisialisasi dengan nilai non-negatif. 
  2. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikanDjikstra adalah operasi P dan V. 








Komentar

Postingan populer dari blog ini

Sistem Operasi #4 Thread

  Ilustrasi Thread Thread  merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Perbedaan antara proses thread tunggal dengan proses thread yang banyak (Multi thread) adalah proses thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multithreads, agar dapat secara terus menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama, maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu. A. Definisi Thread Proses adalah program yang sedang dieksekusi. Ada dua jenis proses, proses berat (heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut thread. Thread terdiri atas ID thread, program counter, himpunan register, dan stack sehingga dengan banyaknya kont...

Perintah-perintah Dasar Linux

  Perintah Dasar Linux Beserta Skenario Pembuatan Struktur Folder ` Linux adalah sebuah sistem operasi seperti Unix yang menggunakan kernel linux sebagai inti dan disertakan aplikasi dan module pendukung lain agar berfungsi dan bisa digunakan secara utuh layaknya sistem operasi pada umumnya. Untuk mengoperasikan linux kalian perlu mengakses terminal, terminal merupakan sebuah insterface berbasis Command Line Interface (CLI) yang dapat mengeksekusi perintah yang kalian ketik. Agar dapat memahami perintah-perintah tersebut kalian harus mempelejari sintaks-sintaks dasar Linux. Apa saja perintahnya? yuk simak perintah-perintah dasar Linux dibawah ini. 1. mkdir Perintah mkdir digunakan untuk membuat direktori. Pada skenario, kita mempunyai lima direktori yaitu, member, ashar, rico, ukki dan caca.  Buat direktori member, gunakan perintah  mkdir latihan 2. cd Change directory digunakan untuk pindah dari satu direktori ke direktori lain. Untuk pindah ke direktori member, gunakan ...