• Tidak ada hasil yang ditemukan

Sinkronisasi Proses Sistem Operasi Kompu (1)

N/A
N/A
Protected

Academic year: 2018

Membagikan "Sinkronisasi Proses Sistem Operasi Kompu (1)"

Copied!
11
0
0

Teks penuh

(1)

Nama : ANDI ZUHAERINI

NIM : 60900111011

Kelas : B1 Sistem Informasi 1. Latar Belakang

 Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten.

 Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan pemintaan ekseskusi dari proses yang bekerja.

Race Condition: 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 disinkronisasikan.

2. Masalah Critical Section

(2)

Solusi dari masalah critical section harus memenuhi tiga syarat berikut: – Mutual exclusion

Merupakan sebuah jalan yang menjamin jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan bersama-sama, proses lain akan dikeluarkan dari pekerjaan yang sama. Misal proses Pi sedang menjalankan critical section (dari proses Pi), maka tidak ada proses-proses lain yang dapat menjalankan critical section dari proses-proses tersebut. Dengan kata lain, tidak ada dua proses yang berada di critical section pada saat yang bersamaan.

– Terjadi kemajuan (progress)

Jika tidak ada proses yang sedang menjalankan critical section-nya dan jika terdapat lebih dari satu proses lain yang ingin masuk ke critical section, maka hanya proses-proses yang tidak sedang menjalankan remainder section-nya yang dapat berpartisipasi dalam memutuskan siapa yang berikutnya yang akan masuk ke critical section, dan pemilihan siapa yang berhak masuk ke critical section ini tidak dapat ditunda secara tak terbatas (sehingga tidak terjadi deadlock).

– Ada batas waktu tunggu (bounded waiting)

Jika seandainya ada proses yang sedang menjalankan critical section, maka terdapat batasan waktu berapa lama suatu proses lain harus menunggu giliran untuk mengakses critical section. Dengan adanya batas waktu tunggu akan menjamin proses dapat mengakses ke critical section (tidak mengalami starvation: proses seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan).

3. Race Condition

(3)

tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus 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.

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 vaiabel tersebut dapat menamgami 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 seperti ini diperlihatkan oleh Gambar 3-1.

(4)

Dalam Murphy's Law kasus tesebut dapat terjadi. Proses A membaca in dan menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot. Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan cukup lama, sehingga digantika oleh proses B. Proses B juga membaca in, dan juga mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.

(5)

4. Penyelesaian Metode Peterson Dua proses solusi

Asumsikan instruksi LOAD and STORE adalah atomic, itu tidak di interupsi Dua proses variabel dishare

Int turn;

Boolean flag[2]

Variabel turn masuk ke critical section. Dua flag digunakan untuk mengindikasikan jika suatu proses siap masuk ke critical section flag[i] = dinyarakan proses Pi siap!!

5. Sinkronisasi Hardware

Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual

exclusive/harus ada satu atau sekelompok instruksi yang tidak dapat diberhentikan pada waktu eksekusi (sifat mutual exclusive). Jadi, solusi untuk sinkronisasi dengan cara pendekatan hardware lebih menekankan kepada usaha-usaha untuk membuat suatu atau sekelompok instruksi menjadi mutual exclusive.

Pendekatan dari sisi hardware dapat dibagi menjadi dua: 1. Processor Synchronous

2. Memory Synchronous

(6)

6. Semaphores

Semafor adalah sistem sinyal yang digunakan untuk berkomunikasi secara visual. Dalam software, semafor adalah sebuah variabel bertipe integer yang selain saat inisialisasi, hanya dapat diakses melalui dua operasi standar, yaitu increment dan decrement. Semafor digunakan untuk menyelesaikan masalah sinkronisasi secara umum. Berdasarkan jenisnya, semafor hanya bisa memiliki nilai 1 atau 0, atau lebih dari sama dengan 0. Konsep semafor pertama kali diajukan idenya oleh Edsger Dijkstra pada tahun 1967.

Operasi standar pada semafor (dalam bahasa pemrograman C). Nama asli dari operasi tersebut sebenarnya adalah Proberen (test) dan Verhogen (increment). Fungsi wait dipanggil ketika thread akan memasuki critical section-nya atau ketika thread akan memakai resource yang tersedia. Jika sem_value kurang dari sama dengan 0, thread tersebut harus menunggu sampai thread lain memanggil fungsi buka. Fungsi buka dipanggil ketika thread meningggalkan critical section -nya atau ketika melepaskan resource yang telah digunakannya. Tentu saja kedua operasi tersebut harus bersifat atomik karena sem_value dapat diakses oleh beberapa proses (shared resource).

Semafor memiliki dua jenis, yaitu: 1. Binary semaphore,

Semafor ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif

1. Counting semaphore

Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semafor ini, tetapi dengan

(7)

Mutual exclusion

Sesuai dengan prinsip mutual exclusion, jika suatu thread sedang berada dalam critical section-nya, thread lain harus menunggu thread tersebut keluar dari critical section-nya sebelum dapat memasuki critical section-nya sendiri. Di sinilah semafor digunakan, thread yang akan memasuki critical section-nya akan memanggil fungsi kunci terlebih dahulu. Jika tidak ada thread lain yang sedang berada dalam critical section, thread ini akan memasuki critical section-nya. Jika terdapat thread lain yang sedang berada dalam critical section-nya, thread ini harus menunggu.Setelah thread keluar dari critical section-nya, thread tersebut akan memanggil fungsi buka sehingga sem_value akan naik menjadi lebih dari 0, dan satu (dari beberapa) thread yang sedang menunggu akan mendapatkan giliran untuk memasuki critical section-nya.

– Sebagai contoh, misalnya terdapat dua buah thread yang sedang berjalan bersamaan:

Thread A: thread B: count = count + 1; count = count + 1; Thread A dan B mengakses variabel yang sama, yaitu count sehingga thread A dan B harus berjalan satu-satu. Untuk itu digunakan semafor mutex yang berupa binary semaphore dengan nilai awal 1.

Resource controller

(8)

Jika resource masih tersedia, thread bisa langsung menggunakannya, sebaliknya jika semua resource sedang dipakai, thread tersebut harus menunggu. Setelah resource selesai dipakai thread akan memanggil fungsi buka sehingga resource yang bebas bertambah.

– Sinkronisasi antar-proses

Ada kalanya suatu thread memerlukan resource yang dihasilkan oleh thread lainnya. Oleh karena itu dibutuhkan suatu mekanisme untuk mengatur urutan eksekusi thread. Mekanisme ini dilakukan dengan memanfaatkan semafor. – Sebagai contoh, misalnya terdapat dua buah thread yang sedang berjalan bersamaan:

Thread A: thread B: count = count + 1; count = count * 2; Nilai awal dari variabel count adalah 5, nilai akhir yang diinginkan adalah 12, oleh karena itu thread A harus dieksekusi sebelum thread B. Agar hal ini dapat terjadi dibutuhkan suatu semafor mutex yang merupakan sebuah binary semaphore dengan nilai awal 0. Thread A: thread B: count = count + 1; kunci(mutex); buka(mutex); count = count * 2; Thread B akan menunggu sampai eksekusi thread A selesai sebelum

melanjutkan.

Implementasi Semaphore – Windows

Fungsi yg dipakai adalah CreateSemaphore biasanya digunakan untuk membatasi jumlah thread yang memakai suatu resource secara bersamaan

– Java

(9)

Java™ menyembunyikan Semafor dibalik konsep – Monitor

Reserved Word yang dipakai Java™ adalah Synchronized 7. Masalah Klasik Sinkronisasi

Bounded buffer problem

Bounded buffer adalah tempat penampung data yang ukurannya terbatas, contohnya pada proses produsen dan konsumen. Beberapa masalah produsen-konsumen : produsen menaruh data pada buffer. Jika buffer tersebut sudah terisi penuh, maka produsen tidak melakukan apa-apa dan menunggu sampai konsumen mengosongkan isi buffer dan konsumen mengambil data dari buffer. Jika buffer tersebut kosong, maka konsumen tidak melakukan apa-apa dan menunggu sampai buffer tersebut diisi oleh produsen.

Readers and writers problem

Kedua jenis proses ini berbagai sumber daya penyimpanan yang sama, misalnya basis data. Tujuannya adalah agar data tidak korup dan inkonsisten. Kondisi reader and writers:

1. Proses-proses pembaca dapat membaca sumber daya secara simultan 2. Hanya boleh ada satu penulis menulis pada setiap saat

3. Bila ada yang menulis, tidak boleh ada yang membaca – Dining-philosophers problem

(10)

– Sebuah meja bundar

– N filsuf duduk melingkar di meja bundar – Antara dua filsuf terdapat sebuah sumpit

– Didepan setiap filsuf terdapat semangkuk mie, setiap filsuf hanya dapat berada pada salah satu kondisi berfikir, lapar, makan.

Kelemahan semaphore – Termasuk low level

– Kesulitan dalam pemeliharannya karena tersebar dalam seluruh program – Menghapus wait à dapat terjadi non-mutual exclusion

(11)

Referensi

Dokumen terkait

itu, putar sisi kanan rubik tadi (hijau) sampai Edge Pieces warna putihnya sejajar dengan Center Pieces-!.

Hasil dari penelitian ini menunjukkan bahwa kegiatan independent study yang dilakukan oleh mahasiswa non-English department adalah membaca Koran dan majalah

ƒ Bahwa bis hanya bisa digerakkan bila kekuatan pendorong lebih besar dari beban yang ada. Perubahan hanya akan bisa mencapai tujuannya jika bisa mengatasi kekuatan anti

Untuk meningkatkan kelancaran dan koordinasi pelaksanaan RANHAM Indonesia Tahun 2011-2014 di tingkat Nasional, Provinsi dan Kabupaten/Kota, dibentuk Pokja yang

Sebagai Rumah Sakit milik Pemerintah Kabupaten Musi Banyuasin, Rencana Strategi Rumah Sakit Umum Daerah Sekayu mengacu kepada Rencana Pembangunan Jangka Menengah

Berdasarkan prioritas masalah dan diskusi lebih lanjut dengan kepala dan staf puskesmas, maka yang menjadi prioritas utama adalah “Rendahnya penemuan pasien baru BTA positif

Penelitian tugas karya akhir ini merupakan salah satu persyaratan dalam menyelesaikan Program Sarjana Pendidikan Dokter di Fakultas Kedokteran Universitas Sebelas

Berdasarkan hasil penelitian dapat disimpulkan bahwa respon siswa tentang active learning dengan model pembelajaran secara berkelompok pada mata pelajaran Aqidah Akhlak di