Singkronisasi sistem operasi

Nama: Angga Saputra Dinata
Npm: 19316035

Pengertian Sinkronisasi

Ketika mempelajari ilmu komputer, pastinya kita akan menemukan bagian yang membahas tentang sinkronisasi. Sinkronisasi ini mengacu pada salah satu dari dua proses yang berbeda tetapi saling berkaitan satu sama lainnya. Dua proses ini merupakan sinkronisasi data dan sinkronisasi proses. Inti dari permasalahan sinkronisasi ini nantinya akan mengacu pada sebuah gagasan yang di dalamnya terdapat banyak proses yang pada titik tertentu akan bertemu, bergabung dalam rangka untuk mencapai sebuah kesepakatan ataupun komitmen  untuk suatu urutan tindakan tertentu. Sinkronisasi ini mengacu pada gagasan yang menjaga beberapa salinan dari dataset yang ada dalam koherensi antara satu sama lain. 
 Jadi sinkronisasi itu lebih jelasnya merupakan akses secara berbarengan untuk berbagi dua bersama dalam mengakibatkan inkonsistensi data. Pemeliharaan konsistensi data memerlukan mekanisme yang tepat untuk memastikan eksekusi dari proses kerja sama. Sinkronisasi ini di butuh kan ketika menemukan sebuah kasus yang menyebabkan ketidakkonsistenan data sehingga data menjadi tidak konkuren. Jadi pada proses sinkronisasi primitif biasanya yang di gunakan adalah untuk mengimplementasikan sinkronisasi data dan proses ini di lakukan oleh fungsi lain di luar sistem utama dari sistem operasi.

Manfaat dari Sinkronisasi:
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 terakhirnya nanti bergantung dari proses mana yang terlebih dahulu di akhiri.

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

Permasalahan Critical-Section
Suatu system terdiri dari n proses dimana semuanya berkompetisi menggunakan data yang digunakan bersama-sama. Masing-masing proses mempunyai sebuah kode segmen yang disebut dengan critical section, dimana proses memungkinkan untuk mengubah variabel umum, mengubah sebuah tabel, menulis file dan lain sebagainya. Gambaran penting dari sistem adalah, ketika sebuah proses dijalankan di dalam critical section, tidak ada proses lain yang diijinkan untuk menjalankan critical section-nya. Sehingga eksekusi dari critical section oleh proses-proses tersebut berlaku eksklusif (mutually exclusive). Permasalahan critical section digunakan untuk mendesain sebuah protokol dimana proses-proses dapat bekerja sama. Masing-masing proses harus meminta ijin untuk memasuki critical section-nya. Daerah kode yang mengimplementasikan perintah ini disebut daerah entry. Critical section biasanya diikuti oleh daerah exit. Kode pengingat terletak di daerah remainder. Sebuah solusi dari permasalahan critical section harus memenuhi 3 syarat sebagai berikut : 
1. Mutual Exclusion. Apabila proses Pi menjalankan critical section-nya, maka tidak ada proses lain yang dapat menjalankan critical section. 
2. Progress. Apabila tidak ada proses yang menjalankan critical section-nya dan terdapat beberapa proses yang akan memasuki critical section-nya, maka hanya proses-proses itu yang tidak diproses di dalam daerah pengingat (remainder) dapat ikut berpartisipasi di dalam keputusan proses mana yang akan memasuki critical section selanjutnya, dan pemilihan ini tidak dapat ditunda tiba-tiba. 
3. Bounded Waiting. Terdapat batasan jumlah waktu yang diijinkan oleh proses lain untuk memasuki critical section setelah sebuah proses membuat permintaan untuk memasuki critical section-nya dan sebelum permintaan dikabulkan. 


Pemecahan Dua Proses 
Pada sub bab ini kita membatasi pada algoritma yang dapat diaplikasikan Hanya terhadap dua proses pada satu waktu. Proses tersebut diberi nama P0 dan P1. Untuk jelasnya, ketika menyatakan Pi, kita gunakan Pj untuk menyatakan proses yang Lain, dimana j = 1 – i. 

1. Algoritma 1 
Pendekatan pertama adalah memperbolehkan semua proses menggunakan Variable integer turn diinisialisasi ke 0 (atau 1). 
Int turn; 
Apabila turn = i, maka proses Pi diijinkan untuk menjalankan critical section – nya. Struktur dari proses Pi adalah sebagai berikut :

do { 
while (turn != i) ; 
 critical section 
turn = j; 
reminder section 
} while (1);

Pemecahan ini menjamin hanya satu proses pada satu waktu yang dapat berada di critical section. Tetapi hal ini tidak memuaskan kebutuhan progress, karena hal ini membutuhkan proses lain yang tepat pada eksekusi dari critical section. Sebagai contoh, apabila turn=0 dan P1 siap untuk memasuki critical section, P1 tidak dapat melakukannya, meskipun P0 mungkin di dalam remainder section – nya.

2. Algoritma 2 
Kelemahan dengan algoritma 1 adalah tidak adanya informasi yang cukup Tentang state dari masing-masing proses. Untuk mengatasi masalah ini dilakukan Penggantian variabel turn dengan array 

Boolean flag[2]; 

Inisialisasi awal flag [0] = flag [1] = false. Apabila flag[i] bernilai true, Nilai ini menandakan bahwa Pi siap untukmemasuki critical section. Struktur dari Proses Pi adalah sebagai berikut :

Do { 
 Flag[i] := true; 
While (flag[j]) ; 
Critical section 
 Flag [i] = false; 
Remainder section 
} while (1);

Pemecahan ini menjamin mutual exclusion, tetapi masih belum memenuhi progres .

3. Algoritma 3 

Algoritma ini merupakan kombinasi algoritma 1 dan algoritma 2. Harapannya akan didapatkan solusi yang benar untuk masalah critical-section, dimana proses ini menggunakan dua variabel : 

int turn; 
boolean flag[2]; 

Inisialisasi flagI[0] = flag[1] = false dan nilai dari turn bernilai 0 atau 1. Struktur dari proses Pi adalah :

Do { 
Flag [i]:= true; 
Turn = j; 
While (flag [j] and turn = j) ; 
Critical section 
Flag [i] = false; 
Remainder section
} while (1);

Algoritma ketiga ini memenuhi ketiga kebutuhan diatas yaitu mutual exclusion, Progress dan bounded waiting dan memecahkan permasalahan critical section untuk Dua proses.

4. Algoritma Bakery 

Algoritma Bakery adalah algoritma yang digunakan untuk pemecahan Permasalahan critical section pada n proses. Sebelum memasuki critical section, prBakerMenerima nomo. Proses yang mempunyai nomor terkecil dapat memasuki critical Section. Jika proses Pi dan Pj menerima nomor yang sama, jika i < j maka Pi dilayani Lebih dahulu, sebaliknya Pj akan dilayani lebih dahulu. Skema pemberian nomor selalu Membangkitkan nomor dengan menaikkan nilai urut misalnya 1, 2, 3, 3, 3, 3, 4, 5, …..

SEMAPHORE 

Semaphore adalah pendekatan yang dikemukakan Dijkstra. Prinsip semaphore Adalah sebagai berikut : Dua proses atau lebih dapat bekerja sama dengan Menggunakan penanda-penanda sederhana. Proses dipaksa berhenti sampai proses Memperoleh penanda tertentu. Sembarang kebutuhan koordinasi kompleks dapat Dipenuhi dengan strukstur penanda yang sesuai kebutuhannya. Variabel khusus untuk Penandaan ini disebut semaphore.

CONTOH SINKRONISASI 

Sinkronisasi pada Solaris 2 
Pada Solaris 2, sinkronisasi diimplementasikan dengan menggunakan beberapa Kunci untuk mendukung sistem multitasking, multithreading (termasuk thread real time) Dan multiprosessing. Solaris 2 menggunakan adaptive mutex untuk efisiensi sistem Pada saat proteksi data dari kode segment yang pendek. Selain itu juga menggunakan Variabel kondisi dan kunci reader writer apabila kode segmen lebih panjang Memerlukan akses ke data. Solaris 2 juga menggunakan turnstile untuk mengurutkan Daftar thread yang menunggu untuk memperoleh baik adaptive mutex atau kunci reader Writer.

Sumber: https://www.idjurnal.com/2016/04/pengertian-sinkronisasi-sistem-operasi.html?m=1

Postingan populer dari blog ini

Sejarah Dan Perkembangan Speaker

NORMAL DISTRIBUTIONS