Monitor. Process Synchronization. SISTIM OPERASI (IKI-20230) ProcessSynchronization Ch. 6. Johny Moningka

dokumen-dokumen yang mirip
Proses Sinkronisasi. Latar Belakang Masalah Critical Section Sinkronisasi Hardware Semaphores Monitors

7 Sinkronisasi. Proses Sinkronisasi. Overview (1) Overview (2) Latar Belakang Masalah Critical Section Sinkronisasi Hardware Semaphores Monitors

CRITICAL REGIONS DAN MONITORS

Laporan Tugas Scheduling Pengantar Sistem Operasi

Process Synchronization

ILUSTRASI KLASIK: BOUNDED BUFFER

BAB 4. SINKRONISASI & DEADLOCK

Process Synchronization (Background)

Mengunci sebuah object: Untuk memastikan bahwa hanya satu thread yang mendapatkan hak akses kedalam method tertentu

Bab 22. Perangkat Sinkronisasi II

Bab 6: Sinkronisasi Proses. Latar Belakang

Monitor. Makalah Sistem Operasi. Disusun oleh :

Sekolah Tinggi Teknologi Adisutjipto Yogyakarta

Sistem Operasi Pertemuan 5 Concurrency: Mutual Exclusion & Synchronization

B. Jawablah dengan ringkas dan lengkap. (Jawaban tidak lebih dari 10 kalimat) (Nilai 40) Solusi: kata kunci dalam huruf miring.

Konsep Dasar Pemrograman Berorientasi Objek

Bab 26. Readers/Writers

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM III Sinkronisasi Proses

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

Critical Section Mutual Exclusion Semaphore Tugas. Sinkronisasi Thread. Praktikum Sistem Operasi. Ilmu Komputer IPB. Sinkronisasi Thread

Apa yang akan dipelajari?

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

Sequential Process. Keterangan SISTEM OPERASI KOMUNIKASI ANTAR PROSES

Concurrency 1: y Mutual Exclusion dan Sinkronisasi (Perte rt muan ke muan -10) 10 Oktober 2014

Thread. 16 th week Estu Sinduningrum ST,MT

2 TIPE DATA DAN VARIABEL

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Kuliah#7 TSK617 Pengolahan Paralel - TA 2011/2012. Eko Didik Widianto

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

06/03/2018. Tidak memiliki parameter. Melakukan inisialisasi semua variabel private dengan nilai awal.

Sinkronisasi dan Deadlock

Analisis Penerapan Semaphore dalam Mengatasi Masalah Sinkronisasi Dining Philosophers.

Bab 5. Sinkronisasi Proses POKOK BAHASAN: TUJUAN BELAJAR: 5.1 LATAR BELAKANG

BAB 2 COLLECTION & THREAD

BAB II VARIABEL DAN TIPE DATA

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

PENANGANAN EKSEPSI. class Exc0 { public static void main (String args[]) { int d = 0; int a = 42 / d; } }

Sistem Operasi Komputer. Pertemuan VI Proses Sinkronisasi

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Exception Handling and Multithreading

Pemrograman Lanjut. Interface

Processes. Processes. SISTIM OPERASI (Operating System) IKI-20230

PEMROGRAMAN BERORIENTASI OBJEK COLLECTION DAN MULTITHREADING. ADAM MUKHARIL BACHTIAR TEKNIK INFORMATIKA UNIKOM

T UGAS STUDI KASUS SISTEM OPERASI. Mutual Exclusion. Mata Kuliah : Sistem Operasi [ CF 1322] Disusun Oleh :

SOLUSI QUIZ 2 SISOP CS3613

Pemrograman Berorientasi Objek Collection dan Multithreading. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

BAHASA PEMROGRAMAN JAVA

Java Progamming Multithreading

1.Tujuan. 2. Latar Belakang

MANAJEMEN PROSES. Satu Empat Model program counter program counter Proses

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Konsep Lanjut Pemrograman Berorientasi Obyek

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Sinkronisasi dan Deadlock

BAB II MANAJEMEN PROSES

Virtual Memory Ch. 9. Virtual Memory. SISTIM OPERASI (Operating System) IKI Johny Moningka

Kelas: Nilai (Diisi Dosen):... IF

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

PERTEMUAN VII Multithreaded Programming. Praktikan mampu membuat program sederhana mengenai threading

KUM 3 IMPLEMENTASI LIST

SATUAN ACARA PERKULIAHAN MATA KULIAH: Algoritma & Pemrograman 3 Strata/Jurusan : S1/Sistem Komputer

SATUAN ACARA PERKULIAHAN MATA KULIAH: Algoritma & Pemrograman 3 Strata/Jurusan : D3/Teknik Komputer

Sistem Operasi. Proses dan Thread

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Pengenalan Borland Delphi 7.0

Sistem Operasi Pertemuan 6 Concurrency: Deadlock & Starvation. H u s n i Lab. Sistem Komputer & Jaringan Teknik Informatika Univ.

Pemrograman Lanjut. Class : Deeper Look 2

Network Programming 2010 Pemrograman Multi-Thread

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

Bab 27. Sinkronisasi Dengan Semafor

Pemrograman Lanjut Tipe Data dan Constructor PTIIK

TUGAS SISTEM TERDISTRIBUSI MULTYTHREAD EKO SURIPTO P

PROSES & THREADS 2 AGUS PAMUJI. SISTEM OPERASI - Proses & Threads

Untuk mengatasi kondisi pacu harus dijamin tidak boleh dua proses atau lebih memasuki critical section yang sama secara bersamaan.

PEMROGRAMAN BERORIENTASI OBJEK

Satuan Acara Perkuliahan (SAP) UNIVERSITAS GUNADARMA

Algoritma Pemrograman A

Paralel processing Benefits Job level Process level Thread level

DASAR PEMOGRAMAN JAVA

Kelompok 12. Thread Java

PEMAHAMAN DASAR DASAR JAVA

Algoritma Pemrograman 1

IKG2I4 / Software Project I

Tahun Akademik 2014/2015 Semester II. DIG1I3 - Instalasi dan Penggunaan Sistem Operasi. Mutual Exclusion dan Sinkronisasi

BAB II TINJAUAN PUSTAKA

Pertemuan #3: Sinkronisasi dan Deadlock

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Tahun Akademik 2014/2015 Semester II. DIG1I3 - Instalasi dan Penggunaan Sistem Operasi. System Calls dan Thread

public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

INTERAKSI ANTAR OBJECT

Konkurensi merupakan landasan umum perancangan sistem operasi. Proses-proses disebut konkuren jika proses-proses berada pada saat yang sama.

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

Pemrograman Lanjut Class, Instance Variable dan Method PTIIK

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

Transkripsi:

Monitor SISTIM OPERASI (IKI-20230) ProcessSynchronization Ch. 6 Johny Moningka (moningka@cs.ui.ac.id) Fakultas Ilmu Komputer Universitas Indonesia Semester 2000/2001 Process Synchronization Background The Critical-Section Problem Synchronization Hardware Semaphores Monitors Synchronization in Solaris 2 Atomic Transactions OS Processes JM-2000/v1.1/2 1

P-C: Semaphore OS Processes JM-2000/v1.1/3 High Level Solution Motif: Operasi wait(s) dan signal(s) tersebar pada code program => manipulasi langsung struktur data semaphore Bagaimana jika terdapat bantuan dari lingkungan HLL (programming) untuk sinkronisasi? Pemrograman tingkat tinggi disediakan sintaks-sintaks khusus untuk menjamin sinkronisasi antar proses, thread. Misalnya: Monitor & Condition Conditional Critical Region OS Processes JM-2000/v1.1/4 2

Monitor Monitor mensinkronisasi sejumlah proses: suatu saat hanya satu yang aktif dalam monitor dan yang lain menunggu Bagian dari bahasa program (mis. Java). Tugas compiler menjamin hal tersebut terjadi dengan menerjemahkan ke low level synchronization (semphore, instruction set dll) Cukup dengan statement (deklarasi) suatu section/fungsi adalah monitor => mengharuskan hanya ada satu proses yang berada dalam monitor (section) tsb OS Processes JM-2000/v1.1/5 Monitor (example) Contoh: Monitor type monitor-name = monitor variable declarations procedure entry P1 :( ); begin end; procedure entry P2( ); begin end; M procedure entry Pn ( ); begin end; begin OS Processes JM-2000/v1.1/6 3

Related: semaphore High-level: monitor (implementasi compiler) Menambahkan Semaphore mutex = 1; pada (class, atau section procedure monitor), Menambahkan call mutex.down() pada setiap procedure (method), dan Menambahkan mutex.up() jika kembali (return) dari procedure (method). Proses lain yang akan mengakses monitor akan menunggu di luar monitor (mutex.down()). Dan akan masuk ke monitor saat proses lain exit dari monitor (mutex.up()). OS Processes JM-2000/v1.1/7 Schematic monitor OS Processes JM-2000/v1.1/8 4

Condition variable Proses-proses harus disinkronisasikan di dalam monitor: Memenuhi solusi critical section. Proses dapat menunggu di dalam monitor. Mekanisme: terdapat variabel (condition) dimana proses dapat menguji/menunggu sebelum mengakses critical section var x, y: condition OS Processes JM-2000/v1.1/9 Condition Condition: memudahkan programmer untuk menulis code pada monitor. Misalkan : var x: condition ; Variabel condition hanya dapat dimanipulasi dengan operasi: wait() dan signal() x.wait() jika dipanggil oleh suatu proses maka proses tsb. akan suspend - sampai ada proses lain yang memanggil: x. signal() x.signal() hanya akan menjalankan (resume) 1 proses saja yang sedang menunggu (suspend) (tidak ada proses lain yang wait maka tidak berdampak apapun) OS Processes JM-2000/v1.1/10 5

Monitor: shared var. OS Processes JM-2000/v1.1/11 Example: monitor BoundedBuffer { private Buffer b = new Buffer(10); private int count = 0; private Condition nonfull, nonempty; public void insert(object item) { if (count == 10) nonfull.wait(); b.addelement(item); nonempty.signal(); public Object remove() { if (count == 0) nonempty.wait(); item result = b.removeelement(); nonfull.signal(); return result; OS Processes JM-2000/v1.1/12 6

Wait() wait() : untuk suatu condition variabel memberikan efek: Monitor mutex: mutex.up => memberikan kesempatan proses lain masuk ke monitor. Blok proses yang memanggil wait() => pada condition variabel tersebut. Jadi jika c adalah condition variable: c.wait() sama dengan: mutex.up(); c.down() [c.down() menyebabkan proses wait] Operasi ini dijalankan sebagai single atomic action. OS Processes JM-2000/v1.1/13 Java Implementation Tidak menerapkan monitor pada seluruh class. => tapi pada methods. Hanya menambahkan modifier (methods): synchronized => pada setiap method yang perlu disinkronisasikan. Setiap object mempunyai potensi menjadi monitor. Tidak terdpat condition variables secara eksplisit: Setiap monitor (methods) mempunyai sebuah anonymous condition variable. Sehingga tidak dikenal: c.wait() atau c.signal(), tapi menggunakan wait() atau notify(). OS Processes JM-2000/v1.1/14 7

Conditionsynchronizationin Java Java menyediakan wait queue untuk thread per monitor (per object) dengan methods: public final void notify() Wakes up a single thread that is waiting on this object's queue. (sama seperti signal) public final void notifyall() Wakes up all threads that are waiting on this object's queue. public final void wait() throws InterruptedException Waits to be notified by another thread. The waiting thread releases the synchronization lock associated with the monitor. When notified, the thread must wait to reacquire the monitor before resuming execution. OS Processes JM-2000/v1.1/15 Condition synchronization Thread masuk (entering) sebuah monitor saat mendapatkan (acquire) mutual exclusion lock yang dikaitkan dengan monitor, dan keluar (exiting) monitor saat melepaskan (release) lock. Wait() - causes the thread to exit the monitor, permitting other threads to enter the monitor. Thread A notify() Monitor data wait() Thread B OS Processes JM-2000/v1.1/16 8

Wait: FSP: when cond act -> NEWSTAT Java: public synchronized void act() throws InterruptedException { while (!cond) wait(); // modify monitor data notifyall() The while loop is necessary to retest the condition cond to ensure that cond is indeed satisfied when it re-enters the monitor. notifyall() is necessary to awaken other thread(s) that may be waiting to enter the monitor now that the monitor data has been changed. OS Processes JM-2000/v1.1/17 P-C: monitor public interface Buffer { class BufferImpl implements Buffer { public synchronized void put(object o) throws InterruptedException { while (count==size) wait(); buf[in] = o; ++count; in=(in+1)%size; notify(); public synchronized Object get() throws InterruptedException { while (count==0) wait(); Object o =buf[out]; buf[out]=null; --count; out=(out+1)%size; notify(); return (o); OS Processes JM-2000/v1.1/18 9

Producer process class Producer implements Runnable { Buffer buf; String alphabet= "abcdefghijklmnopqrstuvwxyz"; Producer(Buffer b) {buf = b; public void run() { Sama untuk try { Consumer tapi: int ai = 0; buf.get(). while(true) { ThreadPanel.rotate(12); buf.put(new Character(alphabet.charAt(ai))); ai=(ai+1) % alphabet.length(); ThreadPanel.rotate(348); catch (InterruptedException e){ OS Processes JM-2000/v1.1/19 10