Sistem Operasi Sinkronisasi Proses.

Slides:



Advertisements
Presentasi serupa
Antonius Wahyu Sudrajat, S. Kom., M.T.I. Trigger.
Advertisements

LOGO Kelompok 5 Rifki Baidhowi Ida Fitriana Satya Bagus F Sistem Operasi Kelas E Teknik Informatika Sistem Operasi Kelas E Teknik.
Sinkronisasi dan Deadlock Universitas Airlangga
Kelompok 5 “Sinkronisasi Proses” Sistem Operasi Kelas F
Tim Teaching Grant Mata Kuliah Sistem Operasi
SINKRONISASI Pertemuan 5.
Arief Cahyo S Rachmad Wahyudi S Abdul Qodir Jailani M. Choirur Rozi Rahmat Aidil FR
MANAJEMEN PROSES.
Deadlock.
Dahlan Abdullah PERTEMUAN – 6 KULIAH SISTEM OPERASI SINKRONISASI & DEADLOCK.
Concurrency M-03.
Pertemuan ke 3 Konsep Proses
Sistem Operasi (Operating Systems) Minggu 5
Bab 13 Pengelolaan Proses Bab
Pertemuan 4 Manajemen Proses 2.
Sinkronisasi Proses Catur Iswahyudi.
Oleh : Wahyu Andhyka Kusuma
SINKRONISASI.
SINKRONISASI DAN DEADLOCK
PERTEMUAN KE-15 PERKULIAHAN SISTEM OPERASI By : Nanda Prasetia, ST.
Sinkronisasi dan Deadlock Proses
Operating System Copyright © Mufadhol 1 SISTEM OPERASI Management Process Oleh : Mufadhol, S.Kom.
MATERI 7 SISTEM OPERASI Managemen Memori Oleh : Mufadhol, S.Kom
SISTEM OPERASI PROGRAM STUDI PENDIDIKAN TEKNIK INFORMASI DAN KOMPUTER (PTIK) JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK – UNIVERSITAS NEGERI MAKASSAR.
Sistem Operasi DEADLOCK.
MUTUAL EXCLUSION.
Antonius Wahyu Sudrajat, S. Kom., M.T.I. Layanan Sistem Operasi, System Calls, dan System Program.
MUTUAL EXCLUSION.
Konkurensi: Mutual Exclusion dan Sikronisasi
Pengantar Teknologi Sistem Informasi 1b Concurency.
KONKURENSI.
KONKURENSI.
PROSES DAN SINKRONISASI
SINKRONISASI DAN DEADLOCK
Konkurensi 3 Deadlock dan Starvation
Sinkronisasi Proses.
Sistem Operasi Pertemuan 11.
Sistem Operasi Pertemuan 12.
DEADLOCK.
Struktur Sistem Komputer
Wahyu nurjaya wk, st., m.kom.
Konkurensi.
SINKRONISASI.
Kongkurensi (Concurrency)
Penjadwalan Proses.
Sinkronisasi Proses.
SINKRONISASI & DEADLOCK
Sinkronisasi dan Deadlock
“Sinkronisasi Proses”
SINKRONISASI PADA THREAD
4 PROSES Mata Kuliah Sistem Operasi Mata Kuliah : Sistem Operasi
Konkurensi 2 Sinkronisasi dan Semaphore
Kongkurensi.
TEGUH IMAN HERMANTO, M.Kom
Struktur Sistem Komputer
Koordinasi Antar Proses DI DALAM SISTEM TERDISTRIBUSI
Manajemen Proses Firdaus, M.T..
Konkurensi SISTEM OPERASI Slide perkuliahan
Kongkurensi.
Deadlock SISTEM OPERASI.
DEADLOCK.
Konkurensi SISTEM OPERASI Slide perkuliahan
SINKRONISASI DAN DEADLOCK
Proses Secara informaladalah program proses dalam eksekusi prosesadalah lebih dari kode program, yang kadang-kadang dikenal sebagai bagian teks. proses.
Struktur Sistem Komputer
SINKRONISASI PROSES Kelompok 1 Achmad Syarifudin S Ade Putra Gustama
Sesi 5. Sinkronisasi Proses
SISTEM OPERASI MODUL Mutual exclusion Maria Cleopatra, S.Kom
PROSES DAN SINKRONISASI
Oleh : Rahmat Robi Waliyansyah, M.Kom.
Transcript presentasi:

Sistem Operasi Sinkronisasi Proses

Sinkronisasi Proses Latar Belakang Masalah Critical-Section Race Condition Penyelesaian Metode Peterson Sinkronisasi Hardware Semaphores Masalah Klasik Sinkronisasi

LATAR BELAKANG Dalam bab ini kita akan mengulas bagaimana hubungan antar proses dapat berlangsung, misalnya bagaimana beberapa proses dapat saling berkomunikasi dan bekerja sama, pengertian sinkronasi, sistem client-server dan RPC, serta penyebab deadlock dan starvation. Sinkronisasi diperlukan untuk menghindari terjadinya ketidak-konsistenan data akibat adanya akses data secara konkuren. Proses-proses disebut konkuren jika proses-proses itu ada dan berjalan pada waktu yang sama, proses-proses konkuren ini bisa bersifat independen atau bisa juga saling berinteraksi. Proses-proses konkuren yang saling berinteraksi memerlukan sinkronisasi agar terkendali dan juga menghasilkan output yang benar.

Konsep RPC

Komunikasi ANTAR PROSES Sistem Berbagi Memori Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.

Shared Memory

Komunikasi ANTAR PROSES (Lanjutan) Sistem Berkirim Pesan Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan dan menerima pesan. Ketika dua bagian sistem ingin berkomunikasi satu sama lain, yang harus dilakukan pertama kali adalah membuat sebuah link komunikasi antara keduanya. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut. Sistem berkirim pesan sangat penting dalam sistem operasi. Karena dapat diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian sistem operasi.

Komunikasi ANTAR PROSES (Lanjutan) Terdapat dua macam cara berkomunikasi, yaitu: 1. Komunikasi langsung. Dalam komunikasi langsung, setiap proses yang ingin berkirim pesan harus mengetahui secara jelas dengan siapa mereka berkirim pesan. Hal ini dapat mencegah pesan salah terkirim ke proses yang lain. Karakteristiknya antara lain: Link dapat otomatis dibuat Sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan Diantara pasangan itu terdapat tepat satu link Link tersebut biasanya merupakan link komunikasi dua arah 2. Komunikasi tidak langsung. Berbeda dengan komunikasi langsung, jenis komunikasi ini menggunakan sejenis kotak surat atau port yang mempunyai ID unik untuk menerima pesan. Proses dapat berhubungan satu sama lain jika mereka membagi port mereka. Karakteristik komunikasi ini antara lain: Link hanya terbentuk jika beberapa proses membagi kotak surat mereka Sebuah link dapat terhubung dengan banyak proses Setiap pasang proses dapat membagi beberapa link komunikasi Link yang ada dapat merupakan link terarah ataupun link yang tidak terarah

Critical - SeCTION Critical section adalah segmen kode yang mengakses data yang digunakan proses secara bersama-sama yang dapat membawa proses itu ke bahaya race condition. Biasanya sebuah proses sibuk melakukan perhitungan internal dan hal-hal lainnya tanpa ada bahaya yang menuju ke race condition pada sebagian besar waktu. Akan tetapi, biasanya setiap proses memiliki segmen kode dimana proses itu dapat mengubah variabel, meng-update suatu tabel, menulis ke suatu file, dan lain-lainnya, yang dapat membawa proses itu ke bahaya race condition.

Race Condition Race condition adalah suatu kondisi dimana dua atau lebih proses mengakses shared memory/sumber daya pada saat yang bersamaan dan hasil akhir dari data tersebut tergantung dari proses mana yang terakhir selesai dieksekusi sehingga hasil akhirnya terkadang tidak sesuai dengan yang dikehendaki.

Prasyarat Solusi Critical Section

Contoh 18.4. Struktur umum dari proses Pi adalah: 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. Contoh 18.4. Struktur umum dari proses Pi adalah: do { entry section Critical section exit section remainder section } while (1);

Gambar 18.3. ilustrasi proses Pi Solusi dari masalah critical section harus memenuhi tiga syarat berikut: Setiap proses harus meminta izin untuk memasuki critical section-nya. Bagian dari kode yang mengimplementasikan izin ini disebut entry section. Akhir dari critical section itu disebut exit section. Bagian kode selanjutnya disebut remainder section. Dari kode di atas, dapat kita lihat bahwa untuk bisa memasuki critical section sebuah proses harus melalui entry section. Gambar 18.3. ilustrasi proses Pi

Solusi dari masalah critical section harus memenuhi tiga syarat berikut: 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).

ALGORITMA Peterson

Sinkronisasi Hardware Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive, atau dengan kata lain, 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: Processor Synchronous Memory Synchronous mutual exclusive = Jika Proses Pi sedang mengeksekusi Critical Section maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka.

Semaphore Dalam kehidupan nyata, 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):

Semaphore 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: Binary semaphore . Semafor ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif Counting semaphore . Semafor ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semafor ini, tetapi dengan memanfaatkan binary semaphore

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

Fungsi SemAPHORE .... Resource Controller . Bayangkan sebuah restoran yang setiap malamnya ramai dikunjungi pelanggan. Kapasitas restoran terbatas, tetapi pemilik restoran memiliki kebijakan bahwa semua pengunjung yang datang akan mendapatkan kesempatan untuk makan, dengan konsekuensi yaitu pelanggan harus sabar menunggu gilirannya. Oleh karena itu, dikerahkanlah pegawai restoran untuk menahan tamu di luar jika restoran penuh lalu mempersilahkan tamu masuk jika tempat telah tersedia.Dari analogi di atas, pelanggan adalah thread, kapasitas restoran adalah resource, dan pegawai restoran adalah semafor. Semafor menyimpan banyaknya resource yang tersedia. Saat thread ingin memakai resource ia akan memanggil fungsi kunci. 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.

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