Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Kongkurensi (Concurrency)

Presentasi serupa


Presentasi berjudul: "Kongkurensi (Concurrency)"— Transcript presentasi:

1 Kongkurensi (Concurrency)
Proses-proses disebut mengalami kongkurensi jika proses-proses (lebih dari satu proses) berada pada saat yang sama Kongkurensi dapat terjadi pada single processor (melalui multiprogramming) maupun multiple processor (melalui multiprocessing atau distributed processing) Kongkurensi dapat timbul pada tiga kasus berikut Multiple application : Terjadi pergantian sejumlah job atau aplikasi secara dinamik Structured application : sebagai penerapan disain modular, beberapa aplikasi dapat diterapkan sebagai kumpulan dari proses-proses kongkuren Operating-system structure: sistem operasi diterapkan sebagai kumpulan dari proses-proses kongkuren

2 Proses Kongkurensi Pada single processor proses-proses dieksekusi secara interleaved untuk mewujudkan eksekusi yang simultan Sedangkan pada multiple processor proses-proses dapat dieksekusi selain secara interleaved juga dapat secara overlap

3 Prinsip-prinsip Kongkurensi
Kongkurensi meliputi Alokasi waktu prosesor untuk proses-proses Pemakaian bersama (sharing) dan persaingan (competition) untuk mendapatkan sumber daya Komunikasi antar proses Sinkronisasi aktivitas banyak proses Masalah akibat kongkurensi : karena kecepatan eksekusi tidak dapat diprediksi Masalah kongkurensi pada single processor Pemakaian bersama sumber daya global Sistem operasi sulit mengoptimalkan alokasi sumber daya Sulitnya mencari kesalahan program

4 Contoh pemakaian bersama sumber daya global
Jika dua proses menggunakan variabel global yang sama, serta keduanya membaca dan menulis variabel itu maka urutan terjadinya pembacaan dan penulisan terhadap variabel itu menjadi kritis (race condition) Contoh sistem operasi sulit mengoptimalkan alokasi sumber daya Jika proses A meminta suatu chanel I/O tertentu dan kemudian disuspend sebelum menggunakan channel tersebut. Jika sistem operasi mengunci channel tersebut dan mencegahnya digunakan oleh proses lain maka tindakan ini merupakan ketidakefisienan

5 Kepedulian Sistem Operasi
Disain dan bentuk manajemen sistem operasi yang bagaimana yang timbul akibat kongkurensi? Sistem operasi harus mampu menyimpan jejak dari proses-proses yang aktif (menggunakan PCB) Sistem operasi harus mengalokasi dan mengdealokasi beragam sumber daya untuk setiap proses yang aktif. Sumber daya meliputi : - Processor time - Memory - Files - I/O devices Sistem operasi harus mampu memproteksi data dan sumber daya fisik dari suatu proses agar tidak diganggu oleh proses yang lain Hasil dari proses harus independen terhadap kecepatan, kecepatan eksekusi tergantung dari proses kongkuren yang lain

6 Beberapa istilah pada kongkurensi
Mutual Exclusion Deadlock Starvation Terdapat sumber daya yang tidak dapat dipakai bersama pada saat bersamaan, misalnya printer. Sumber daya yang tidak dapat dipakai bersama ini disebut sumber daya kritis. Bagian program yang menggunakan sumber kritis ini disebut memasuki critical section. Hanya satu program yang diijinkan masuk critical region. Sistem operasi menyediakan system call untuk hal ini

7 Ilustrasi Deadlock Misalnya
Dua proses, P1 dan P2 Dua sumber daya kritis, R1 dan R2 Proses P1 dan P2 harus mengakses kedua sumber daya Kondisi yang terjadi R1 diberikan ke P1, sedang R2 diberikan ke P2. Karena untuk melanjutkan eksekusi memerlukan sumber daya sekaligus maka kedua proses akan saling menunggu sumber daya lain selamanya. Tak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya. Kedua proses dalam keadaan deadlock, tidak dapat membuat kemajuan apapun

8 Starvation Misalnya Terdapat tiga proses P1, P2 dan P3 P1, P2, P3 memerlukan pengaksesan sumber daya R secara periodik Skenario berikut terjadi : P1 sedang diberi sumber daya R, P2 dan P3 blocked menunggu sumber daya R Ketika P1 keluar dari critical section, P2 dan P3 diijinkan mengkakses R Asumsi P3 diberi hak akses. Kemudian setelah selesai, hak akses kembali diberikan ke P1 yang saat itu kembali membutuhkan sumber daya R Jika pemberian hak akses pergantian terus menerus antara P1 dan P3, maka P2 tidak pernah memperoleh pengaksesan sumber daya R, meski tidak ada deadlock. Pada situasi ini P2 disebut mengalami starvation

9 Masalah critical section
Critical section adalah suatu bagian yang berisi sejumlah variabel yang akan dipakai bersama (sharing) Secara umum, penyelesaian critical section harus memenuhi 3 syarat Mutual exclusion. Jika suatu proses sedang mengerjakan critical section, maka tidak boleh ada proses lain yang masuk critical section tersebut Progress. Jika tidak ada suatu proses yang mengerjakan critical section dan ada beberapa proses yang akan masuk ke critical section, maka hanya proses yang sedang berada pada entry-section saja yang boleh berkompetisi untuk mengerjakan critical section Busy waiting. Besarnya waktu tunggu dari suatu proses yang akan memasuki critical section sejak proses itu meminta ijin untuk mengerjakan critical section, hingga permintaan itu dipenuhi

10 Interaksi proses Telah ditunjukkan bahwa kongkurensi terjadi karena hasil aplikasi independen dari multiprogramming, dari aplikasi multiple-process dan dari penggunaan stuktur multiple-process pada sistem operasinya. Maka interaksi antar proses akan dikelompokkan berdasarkan derajat kepedulian (degree of awareness) suatu proses terhadap proses lain. Terdapat 3 derajat kepedulian yaitu Process unaware of each other : Proses-proses independen yang tidak berniat untuk bekerja sama. Contohnya multiprogramming dari beberapa proses independen bisa berupa batch job atau bagian interaktif atau campurannya. Meski proses-proses ini tidak bekerja sama tapi sistem operasi tetap memperhatikan kompetisi sumber daya. Misal dua aplikasi ingin mengakases file atau printer yang sama maka sistem operasi harus mengaturnya

11

12 Processes indirectly aware of each other : Proses-proses yang sebenarnya tidak perlu peduli dengan proses lain tapi berbagi (sharing) akses untuk beberap obyek tertentu seperti I/O buffer Processes directly aware of each other Proses-proses yang dapat berkomunikasi dengan proses yang lain. Proses ini menampilkan kerja sama bukan kompetisi Kompetisi dan kerjasama dapat berupa : Kompetisi antar proses untuk sumber daya Kerja sama antar proses dengan sharing Kerja sama antar proses dengan komunikasi

13 Kompetisi antar proses untuk sumber daya
Dua atau lebih proses perlu untuk mengakses sebuah sumber daya yang sama. Masing-masing proses tidak peduli dengan keberadaan proses yang lain dan masing-masing proses tidak saling mempengaruhi Jika dua proses ingin mengakses satu sumber daya tunggal maka sistem operasi mengalokasikan untuk salah satu proses dan mengharuskan proses lain menunggu. Proses yang ditolak pengaksesannya jadi melambat. Pada kasus yang ekstrim proses yang terblock tidak pernah mendapatkan akses terhadap sumber daya sehingga tidak pernah terminasi dengan sukses

14 Kerja sama antar proses dengan sharing
Banyak proses mengakses variabel atau berkas yang dipakai bersama. Proses-proses dapat menggunakan dan memperbarui data yang dipakai bersama tanpa peduli proses yang lain Proses mengetahui bahwa proses-proses lain dapat juga mengakses data yang sama. Proses-proses harus bekerja sama untuk menjamin integritas data yang dipakai bersama tersebut Karena data disimpan pada sumber daya (devices, memory), maka timbul masalah pengendalian mutual exclusion, deadlock dan starvation. Data diakses dengan dua mode yaitu :Proses pembacaan dan penulisan. Tapi hanya penulisan yang mutual exclusion

15 Kerja sama antar proses dengan komunikasi
Pada saat proses bekerja sama, masing-masing proses peduli dengan proses yang lain Komunikasi menyediakan sinkronisasi atau koordinasi beragam aktivitas Komunikasi dapat dicirikan sebagai keberadaan pesan-pesan dalam suatu urutan. Cara sederhana (primitive) untuk mengirim dan menerima pesan disediakan oleh bahasa pemrograman atau oleh kernel sistem operasi Karena tidak ada yang disharing maka tidak diperlukan pengendalian mutual exclusion tapi masalah deadlock dan starvation tetap ada.

16 Perlunya Mutual Exclusion
Kesuksesan pemanfaatan kongkurensi antar proses terjadi karena kemampuan mendefinisikan critical section dan menjamin mutual exclusion. Setiap fasilitas yang mendukung kedua hal ini harus memenuhi persyaratan Penjaminan mutual exclusion : hanya satu proses pada suatu saat yang diperbolehkan masuk ke critical section Proses yang halt di noncritical section harus tetap halt tanpa menganggu proses yang lain Tidak boleh ada proses yang berniat mengakses critical section menunggu dalam waktu yang tidak tentu. Tidak boleh ada deadlock atau starvation Saat tidak ada proses di critical section, proses yang ingin masuk ke critical section tidak boleh menunggu Tidak ada asumsi mengenai kecepatan relatif proses dan jumlah proses Proses berada di critical section hanya untuk waktu yang berhingga

17 Penjaminan Mutual Exclusion – Software approaches
Pendekatan perangkat lunak dapat digunakan untuk proses kongkuren yang dilakukan pada single-processor maupun multi-processor dengan main memory sharing Pada pendekatan ini diasumsikan mutual exclusion berupa pengaksesan memory secara bersamaan (reading/writing) pada alamat memory yang sama tanpa dukungan perangkat keras lain Algoritma dengan pendekatan ini : - Algoritma Dekker (Dekker’s Algorithm) - Algoritma Peterson (Peterson’s Algorithm)

18 Algoritma Dekker Dekker (Ahli matematik dari Belanda) membuat algoritma untuk mutual exclusion pada dua proses. Algoritma ini akan memperlihatkan bug yang sering terjadi pada program kongkuren Cara pertama Setiap cara pada mutual exclusion didasari pada keeksklusifan penggunaan hardware yaitu hanya satu akses terhadap alamat memory yang dapat terjadi pada saat tertentu Terdapat dua proses P0 dan P1 yang akan mengakses critical section. Protokolnya adalah : setiap proses akan mengecek apakah sudah waktunya masuk atau belum yaitu dengan melihat variabel turn apakah sudah sama dengan nomor dirinya atau belum. Jika sudah berarti boleh ke critical region jika belum tetap menunggu (busy waiting)

19 Proses yang telah selesai di critical section akan mengubah variabel turn ini untuk proses yang lain. Variabel turn sebagai shared global variable Shared global variable : var turn:0..1 Program dari kedua proses ini : PROCESS 0 (P0) PROCESS 1 (P1) while turn 0 do {nothing}; while turn 0 do {nothing}; <critical section>; <critical section>; turn:=1 turn:= Proses yang satu tergantung proses yang lain bila salah satu proses gagalmaka proses yang lain tidak dapat dikerjakan (blocked)

20 Cara Kedua Masing-masing proses mempunyai variabel sendiri (flag). Suatu proses akan mengecek variabel global (flag) milik proses yang lain. Bila tertulis false berarti critical section tidak ada yang gunakan. Maka proses ini akan menulis variabel globalnya menjadi true dan pergi ke critical section. Setelah selesai proses ini kembali dan mengubah variabel globalnya menjadi false Shared global variable : var flag:array [0 .. 1] of boolean yang diinisialisasi false

21 Program dari kedua proses Process 0 (P0). Process 1 (P1)
Program dari kedua proses Process 0 (P0) Process 1 (P1) while flag[1] do {nothing}; while flag[0] do {nothing}; flag[0] := true; flag[1] := true; <critical section>; <critical section>; flag[0] := false; flag[1] := false; Jika suatu proses diluar critical section gagal makan proses lain tidak akan blocked bahkan proses ini dapat terus mengakses critical section karena flag dari proses yang lain selalu false Tetapi jika suatu proses gagal di dalam critical section atau setelah mengeset flagnya true dan gagal sebelum masuk critical section maka proses yang lain akan blocked

22 Cara ketiga Untuk memperbaiki cara kedua dilakukan pertukaran 2 baris
Jika suatu proses belum sempat mengubah flagnya menjadi true dan proses yang lain terlanjur melihat bahwa flagnya adalah false maka akan ada dua program di critical section. P0 executes the while statement and finds flag[1] set to false P1 executes the while statement and finds flag[0] set to false P0 sets flag[0] to true and enters its critical section P1 sets flag[1] to true and enters its critical section Cara ketiga Untuk memperbaiki cara kedua dilakukan pertukaran 2 baris Process 0 (P0) Process 1 (P1) flag[0] := true; flag[1] := true; while flag[1] do {nothing}; while flag[0] do {nothing}; <critical section>; <critical section>; flag[0] := false; flag[1] :=false

23 Jika kedua proses mengubah flagnya menjadi true sebelum salah satu proses mengeksekusi pernyataan while maka setiap proses akan mengira ada proses yang telah masuk critical section sehingga terjadi deadlock Solusi yang tepat (Dekker’s Algorithm) Pada cara ini ditambahkan kembali variabel turn yang menentukan proses mana yang berhak masuk ke critical section. Saat proses P0 ingin masuk ke critical sectionnya, P0 mengubah flagnya menjadi true dan kemudian mengecek flag di P1. Jika false maka P0 segera ke critical section. Jika tidak P0 akan konsultasi ke juri. Jika P0 menemukan turn=0 maka ia tahu bahwa sudah waktunya untuk bersikeras dan mengecek secara periodik ke P1. P1 mencatat bahwa sudah waktunya untuk menulis false pada flagnya dan membiarkan P0 masuk ke critical section. Setelah P0 masuk critical section dia akan kembali dan mengubah flagnya menjadi false dan mengubah turn menjadi 1 untuk memberikan hak ke P1

24 Dekker’s Algorithm end. Procedure P1; Begin
Var flag: array [0..1] of boolean; turn: 0..1; Procedure P0; begin repeat flag[0] := true; while flag[1] do if turn = 1 then flag[0] :=false; while turn=1 do {nothing} flag[0] :=true end; <critical section>; turn := 1; flag[0] := false; <remainder> forever Procedure P1; Begin repeat flag[1] := true; while flag[0] do if turn = 0 then begin flag[1] := false; while turn =0 do {nothing} flag[1] := true end; <critical section>; turn := 0; <remainder> forever flag[0]:=false; flag[1]:=false; turn := 1; parbegin P0; P1 parend end.

25 Algoritma Peterson Algoritma ini dapat digunakan untuk 2 atau lebih proses kongkuren Misal proses P0 mengubah flag[0] menjadi true, P1 tidak dapat masuk ke critical section. Jika P1 telah berada di dalam critical section maka flag[1] = true dan P0 terblock dan tidak masuk ke critical section. Deadlock dicegah. Jika P0 terblock pada looping whilenya. Yaitu saat flag[1]=true dan turn=1. P0 dapat masuk critical section saat flag[1] = false atau turn = 0.

26 Hal yang tidak mungkin terjadi pada Algoritma Peterson
P1 tidak berminat pada critical section. P1 menunggu terus untuk masuk critical section. Karena jika turn=1 P1 dapat masuk critical section P1 memonopoli critical section. Jika P1 diwajibkan memberi P0 kesempatan dengan mengubah turn = 0 sebelum masuk critical section.

27 Algoritma Peterson untuk 2 proses
var flag : array [0..1] of boolean; turn: 0..1; procedure P0; begin repeat flag[0] := true; turn := 1; while flag[1] and turn = 1 do {nothing} <critical section>; flag[0] := false; <remainder> forever end; procedure P1; begin repeat flag[1]:= true; turn := 0; while flag[0] and turn = 0 do {nothing}; <critical section>; flag[1] := false; <remainder> forever end; flag[0] := false; flage[1] := false; turn :=1; parbegin P0; P1 parend end.

28 Penjaminan Mutual Exclusion – Hardware approaches
Pada single processor, proses-proses yang kongkuren tidak dapat overlap hanya terjadi interleave. Sebuah proses akan terus berjalan sampai diinterrupt. Sehingga dengan mengatur interrupt mutual exclusion dapat terjadi. Sedangkan pada multiprosesor interrupt tidak menjamin mutual exclusion karena beberapa proses dapat dieksekusi bersamaan waktunya Pada sistem multiprocessor yang memakai memori bersama, pengaksesan suatu memori yang sama pada saat yang sama dijaga pada tingkat perangkat keras. Perangkat keras menyediakan instruksi mesin khusus yang tidak dapat diinterrupt (atomic instruction). Karena hanya berada pada satu siklus instruksi saat di fetch

29 Instruksi mesin khusus
Instruksi akan menguji (test) nilai dari argumen I. Jika nilainya 0 maka akan diganti dengan 1 dan menghasilkan true. Sedangkan jika tidak nilainya tidak akan diubah dan menghasilkan false. Fungsi testset berjalan otomatis dan tidak dapat diinterrupt Akan dibahas dua instruksi khusus yaitu : Test and Set Instruction Exchange Instruction Didefinisikan sebagai : function testset (var i: integer): boolean; begin if i = 0 then i := 1; testset := true; end else testset :=false end.

30 Exchange Instruction Didefinisikan sebagai: procedure exchange (var r:register; var m:memory) var temp; begin temp:=m; m:= r; r:= temp; End. Instruksi menukar isi dari sebuah register dengan yang terdapat pada suatu memori. Selama eksekusi instruksi, akses ke lokasi memori diblocked terhadap segala instruksi lain yang mengarah ke lokasi tersebut.

31 (A) TEST AND SET INSTRUCTION
Procedure mutual exclusion const n = …; (*number of processees*) var bolt: integer; procedure P (i: integer); begin repeat repeat {nothing} until testset (bolt) <critical section> bolt:= 0; <remainder> forever end; begin (* main program *) bolt := 0; parbegin P(1); P(2); P(n) parend end. (B) EXCHANGE INSTRUCTION Procedure mutual exclusion const n = …; (*number of processees*) var bolt: integer; procedure P (i: integer); var keyi : integer; begin repeat keyi := 1; repeat exchange (keyi , bolt) until keyi =0; <critical section> exchange (keyi , bolt) <remainder> forever end; begin (* main program *) bolt := 0; parbegin P(1); P(2); P(n) parend end.

32 Keuntungan Pendekatan Instruksi Mesin
Dapat diterapkan pada beberapa proses baik pada single processor maupun multiple processor dengan pemakaian bersama (sharing) main memory) Mudah diverifikasi Mendukung multiple critical section, setiap critical section dapat mendefinisikan variabelnya sendiri Kelemahan Pendekatan Instruksi Mesin Terjadi Busy waiting, saat proses menunggu critical section proses terus mengkonsumsi waktu prosesor Mungkin terjadi starvation Mungkin terjadi deadlock

33 Semaphore Semaphore adalah pendekatan yang dikemukakan Dijkstra. Semaphore merupakan pendekatan dari Sistem Operasi dan mekanisme bahasa pemrograman. Prinsip semaphore sebagai berikut : Dua proses atau lebih dapat bekerja sama dengan menggunakan sinyal sederhana. Proses dapat dipaksa berhenti pada suatu tempat tertentu sampai menerima sinyal khusus ini. Variabel khusus untuk pensinyalan ini disebut semaphore Untuk mengirim sinyal dengan semaphore, sebuah proses mengeksekusi primitive signal Untuk menerima sinyal dengan semaphore, sebuah proses mengeksekusi primitive wait Jika sinyal yang bersangkutan belum ditransmisikan, proses ter-suspend sampai transmisi terjadi

34 Untuk memperoleh efek yang diinginkan, kita dapat memandang sempahore sebagai variabel yang memiliki nilai integer (S) dengan tiga kondisi berikut : Sebuah semaphore diinisialisasi dengan nilai tidak negatif Wait operation menurunkan nilai semaphore. Jika nilainya negatif maka proses yang mengeksekusi wait akan terblock. While S 0 do nothing; S:= S-1; if S < 0 then block(P) Signal operation menaikkan nilai semaphore. Jika nilainya tidak positif maka proses yang terblock karena wait operation akan ter-unblock S:= S+1 if S  0 then wakeup(P)


Download ppt "Kongkurensi (Concurrency)"

Presentasi serupa


Iklan oleh Google