Sinkronisasi Dalam Sistem Operasi
·
Definisi
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. Disini sinkronisasi
diperlukan agar data tersebut tetap konsisten.
Shared
memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling
banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N
buffer digunakan tidaklah sederhana. Dimisalkan kita memodifikasi
producer-consumer code dengan menambahkan suatu variable counter, dimulai dari
0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada
buffer.
Sinkronisasi
merupakan “issue” penting dalam rancangan/implementasi OS
·
Tujuan
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.
·
Masalah
Dalam Sinkronisasi Beserta Solusinya
a. Race Condition
Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk mencegah race condition, proses-proses yang berjalan besamaan harus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. 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.
b.
Critical Section
Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kritis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data.
Kita butuh 4 kondisi agar menghasilkan solusi
yang baik:
• Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
• Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
• Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
• Tidak ada proses yang menunggu selamamya untuk masuk critical section.
• Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
• Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
• Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
• Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Komentar
Posting Komentar