report syncronization criticalsection

14
Pengantar Sistem Operasi Critical Section Disusun oleh : M. Althof Shiddekh Ibtisam 5214100182 Qaedi Amani 5214100183 Aloysius Tatus Kristanto 5214100186 Anggada Sakti Pamungkas 5214100190

Upload: qaediamani

Post on 25-Sep-2015

23 views

Category:

Documents


3 download

DESCRIPTION

Tugas Sinkronisasi, Critical Section

TRANSCRIPT

  • Pengantar Sistem Operasi

    Critical Section

    Disusun oleh :

    M. Althof Shiddekh Ibtisam 5214100182

    Qaedi Amani 5214100183

    Aloysius Tatus Kristanto 5214100186

    Anggada Sakti Pamungkas 5214100190

  • Uraian Masalah

    *kami mengerjakan nomer 2

  • Penyelesaian

    critical section adalah sebuah protokol yang di desain supaya proses-proses dapat

    menggunakannya secara bersama-sama. Setiap proses harus memesan waktu untuk memasuki

    critical section-nya. Yang disebut entry section. dan Akhir dari critical section itu disebut exit

    section. Dan setelah itu ada remainder section.

    Solusi dari masalah critical section harus memenuhi tiga syarat berikut:

    1. Mutual Exclusion.

    Jika suatu proses sedang menjalankan critical section-nya, maka proses-proses lain tidak dapat

    menjalankan critical section mereka. Tidak ada dua proses yang berada di critical section pada

    saat yang bersamaan.

    2. Terjadi kemajuan (progress).

    Jika tidak ada proses yang sedang menjalankan critical section-nya dan ada proses-proses lain

    yang ingin masuk ke critical section, maka hanya proses-proses yang yang sedang berada dalam

    entry section saja yang dapat berkompetisi untuk mengerjakan critical section.

    3. Ada batas waktu tunggu (bounded waiting).

    Jika ada suatu proses yang sedang menjalankan critical section, maka proses lain memiliki waktu

    tunggu yang ada batasnya untuk menjalankan critical section -nya, sehingga dapat dipastikan

    bahwa proses tersebut dapat mengakses critical section-nya (tidak mengalami starvation: proses

    seolah-olah berhenti, menunggu request akses ke critical section diperbolehkan

    Ada dua jenis solusi masalah critical section, yaitu:

    1. Solusi perangkat lunak.

    Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak tergantung pada

    asumsi-asumsi lain, selain bahwa setiap proses berjalan pada kecepatan yang bukan nol.

    2. Solusi perangkat keras.

    Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-non-aktifkan interupsi

    atau dengan mengunci suatu variabel tertentu.

  • Algoritma III

    Algoritma III ditemukan oleh G.L. Petterson pada tahun 1981 dan dikenal juga sebagai Algoritma

    Petterson. Petterson menemukan cara yang sederhana untuk mengatur proses agar memenuhi

    mutual exclusion. Algoritma ini adalah solusi untuk memecahkan masalah critical section pada

    dua proses. Ide dari algoritma ini adalah menggabungkan variabel yang di- sharing pada

    Algoritma I dan Algoritma II, yaitu variabel turn dan variabelflag. Sama seperti pada Algoritma I

    dan II, variabel turn menunjukkan giliran proses mana yang diperbolehkan memasuki critical

    section dan variabel flag menunjukkan apakah suatu proses membutuhkan akses kecritical

    sectionatau tidak.

    Awalnya flag untuk kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut

    tidak membutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki critical

    section, ia akan mengubahflag-nya menjadi true (memberikan tanda bahwa ia butuh critical

    section) lalu proses tersebut memberikan turn kepada lawannya. Jika lawannya tidak

    menginginkan critical section (flag-nya false), maka proses tersebut dapat menggunakan critical

    section, dan setelah selesai menggunakan critical section ia akan mengubah flag-nya menjadi

    false. Tetapi apabila proses lawannya juga menginginkan critical section maka proses lawan-lah

    yang dapat memasuki critical section, dan proses tersebut harus menunggu sampai proses

    lawan menyelesaikan critical sectiondan mengubah flag-nya menjadi false.

    Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah flag[0] = true, lalu P0

    mengubah turn= 1. Jika P1 mempunyai flag[1] = false, (berapapun nilai turn) maka P0 yang

    dapat mengakses critical section. Namun apabila P1 juga membutuhkan critical section, karena

    flag[1] = true dan turn= 1, maka P1 yang dapat memasuki critical section dan P0 harus

    menunggu sampai P1 menyelesaikan critical section dan mengubah flag[1] = false, setelah itu

    barulah P0 dapat mengakses critical section.

    Bagaimana bila kedua proses membutuhkan critical section secara bersamaan? Proses mana

    yang dapat mengakses critical section terlebih dahulu? Apabila kedua proses (P0 dan P1) datang

    bersamaan, kedua proses akan menset masing-masing flag menjadi true (flag[0] = true dan

    flag[1] = true), dalam kondisi ini P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn

    = 0. Proses yang dapat mengakses critical sectionterlebih dahulu adalah proses yang terlebih

    dahulu mengubah turn menjadi turn lawannya. Misalkan P0 terlebih dahulu mengubah turn= 1,

    lalu P1 akan mengubah turn= 0, karena turn yang terakhir adalah 0 maka P0-lah yang dapat

    mengakses critical section terlebih dahulu dan P1 harus menunggu.

  • Penjadwalan Preemptive

    Penjadwalan CPU mungkin akan dijalankan ketika proses dalam keadaan:

    Berubah dari running ke waiting state.

    Berubah dari running ke ready state.

    Berubah dari waiting ke ready state.

    Dihentikan.

    Penjadwalan Preemptive mempunyai arti kemampuan sistem operasi untuk memberhentikan

    sementara proses yang sedang berjalan untuk memberi ruang kepada proses yang prioritasnya

    lebih tinggi. Penjadwalan ini bisa saja termasuk penjadwalan proses atau M/K. Penjadwalan

    Preemptivememungkinkan sistem untuk lebih bisa menjamin bahwa setiap proses mendapat

    sebuah slice waktu operasi. Dan juga membuat sistem lebih cepat merespon terhadap event

    dari luar (contohnya seperti ada data yang masuk) yang membutuhkan reaksi cepat dari satu

    atau beberapa proses. Membuat penjadwalan yang Preemptive mempunyai keuntungan yaitu

    sistem lebih responsif daripada sistem yang memakai penjadwalan Non Preemptive.

    Dalam waktu-waktu tertentu, proses dapat dikelompokkan ke dalam dua kategori: proses yang

    memilikiBurst M/K yang sangat lama disebut I/O Bound, dan proses yang memiliki Burst CPU

    yang sangat lama disebutCPU Bound. Terkadang juga suatu sistem mengalami kondisi yang

    disebut busywait, yaitu saat dimana sistem menunggu request input(seperti disk, keyboard, atau

    jaringan). Saat busywait tersebut, proses tidak melakukan sesuatu yang produktif, tetapi tetap

    memakan resource dari CPU. Dengan penjadwalan Preemptive, hal tersebut dapat dihindari.

    Dengan kata lain, penjadwalan Preemptive melibatkan mekanisme interupsi yang menyela

    proses yang sedang berjalan dan memaksa sistem untuk menentukan proses mana yang akan

    dieksekusi selanjutnya.

    Penjadwalan nomor 1 dan 4 bersifat Non Preemptive sedangkan lainnya Preemptive.

    Penjadwalan yang biasa digunakan sistem operasi dewasa ini biasanya bersifat Preemptive.

    Bahkan beberapa penjadwalan sistem operasi, contohnya Linux 2.6, mempunyai kemampuan

    Preemptive terhadap system call-nya (preemptible kernel). Windows 95, Windows XP, Linux,

    Unix, AmigaOS, MacOS X, dan Windows NTadalah beberapa contoh sistem operasi yang

    menerapkan penjadwalan Preemptive.

    Lama waktu suatu proses diizinkan untuk dieksekusi dalam penjadwalan Preemptive disebut

    time slice/quantum. Penjadwalan berjalan setiap satu satuan time slice untuk memilih proses

    mana yang akan berjalan selanjutnya. Bila time slice terlalu pendek maka penjadwal akan

  • memakan terlalu banyak waktu proses, tetapi bila time sliceterlau lama maka memungkinkan

    proses untuk tidak dapat merespon terhadapevent dari luar secepat yang diharapkan.

    Penjadwalan Non Preemptive

    Penjadwalan Non Preemptive ialah salah satu jenis penjadwalan dimana sistem operasi tidak

    pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan

    kata lain, proses yang sedang berjalan tidak bisa di-interupt.

    Penjadwalan Non Preemptive terjadi ketika proses hanya:

    1. Berjalan dari running state sampai waiting state.

    2. Dihentikan.

    Ini berarti CPU menjaga proses sampai proses itu pindah ke waiting state ataupun dihentikan

    (proses tidak diganggu). Metode ini digunakan oleh Microsoft Windows 3.1 dan Macintosh. Ini

    adalah metode yang dapat digunakan untuk platformshardware tertentu, karena tidak

    memerlukan perangkat keras khusus (misalnyatimeryang digunakan untuk meng interupt pada

    metode penjadwalan Preemptive).