• Tidak ada hasil yang ditemukan

Sinkronisasi - Repository UNIKOM

N/A
N/A
Protected

Academic year: 2019

Membagikan "Sinkronisasi - Repository UNIKOM"

Copied!
34
0
0

Teks penuh

(1)

1

Kongkurensi (

Concurrency

)

• Proses-proses disebut mengalami kongkurensi jika proses-proses (lebih dari satu proses-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

(2)

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

P1

(3)

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

(4)

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

(5)

5

Kepedulian Sistem Operasi

Disain dan bentuk manajemen sistem operasi yang bagaimana yang timbul akibat kongkurensi?

1. Sistem operasi harus mampu menyimpan jejak dari proses-proses yang aktif (menggunakan PCB)

2. Sistem operasi harus mengalokasi dan mengdealokasi beragam sumber daya untuk setiap proses yang aktif.

Sumber daya meliputi : - Processor time

- Memory - Files

- I/O devices

3. Sistem operasi harus mampu memproteksi data dan sumber daya fisik dari suatu proses agar tidak diganggu oleh proses yang lain 4. Hasil dari proses harus independen terhadap kecepatan,

(6)

6

Beberapa istilah pada kongkurensi

• Mutual Exclusion • Deadlock

• Starvation

Mutual Exclusion

• 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

(7)

7

Deadlock

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.

(8)

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

(9)

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

1. Mutual exclusion. Jika suatu proses sedang mengerjakan

critical section, maka tidak boleh ada proses lain yang masuk critical section tersebut

2. 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

(10)

10

Interaksi proses

• Telah ditunjukkan bahwa kongkurensi terjadi karena hasil

aplikasi independen dari multiprogramming, dari aplikasi 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

1. 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.

(11)

11

Degree of Awareness

Relationship Influence that one

process has on the other

Potential control problems

Process unaware of each other

Competition  Result of one

process

independent of the action of others

 Timing of process

may be affected

 Mutual exclusion  Deadlock

(renewable resource)

 Starvation

Processes indirectly aware of each other (e.g. shared object)

Cooperation by sharing

 Result on one

process may depend on information obtained form others

 Timing of process

may be affected

 Mutual exclusion  Deadlock

(renewable resource)

 Starvation

 Data coherence

Processes directly aware of each other (have

communication primitives available ot them)

Cooperation by communication

 Result of one

process may depend on information obtained from others

 Timing of process

may be affected

 Deadlock

(consumable resource)

(12)

12

2. 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

3. 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

(13)

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.

(14)

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.

(15)

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

(16)

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

(17)

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 :

(18)

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

(19)

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:=0

. .

• Proses yang satu tergantung proses yang lain bila salah satu proses gagalmaka proses yang lain tidak dapat

(20)

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 :

(21)

21

• 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

(22)

22

• 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)

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

(24)

24

Dekker’s Algorithm Var flag: array [0..1] of boolean; turn: 0..1;

<critical section>; turn := 1;

flag[0] := false; <remainder>

forever

<critical section>; turn := 0;

flag[1] := false; <remainder>

(25)

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

(26)

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

(27)

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>;

(28)

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

(29)

29

Instruksi mesin khusus

Akan dibahas dua instruksi khusus yaitu :

• Test and Set Instruction • Exchange Instruction Test and Set Instruction Didefinisikan sebagai :

function testset (var i: integer):

else testset :=false end.

• 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.

(30)

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

(31)

31

(A) TEST AND SET INSTRUCTION

Procedure mutual exclusion

const n = …; (*number of processees*)

var bolt: integer;

procedure P (i: integer);

begin

(B) EXCHANGE INSTRUCTION

Procedure mutual exclusion

const n = …; (*number of processees*)

var bolt: integer;

procedure P (i: integer);

(32)

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

(33)

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

(34)

34

Untuk memperoleh efek yang diinginkan, kita dapat

memandang sempahore sebagai variabel yang memiliki nilai integer (S) dengan tiga kondisi berikut :

1. Sebuah semaphore diinisialisasi dengan nilai tidak negatif 2. 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)

3. Signal operation menaikkan nilai semaphore. Jika nilainya tidak positif maka proses yang terblock karena wait

operation akan ter-unblock S:= S+1

Referensi

Dokumen terkait

Penerapan sistem akuntansi keuangan daerah pada badan kepegawaian daerah kota padang telah sesuai dengan ketentuan yang. terdapat dalam Permendagri No.13 Tahun 2006 Syuriani

5 ADES AKASHA WIRA INTERNATIONAL Tbk RISR1 - RAYA SAHAM REGISTRA, PT 1000.. 6 ADHI ADHI KARYA (PERSERO) Tbk DAEN1 - DATINDO ENTRYCOM,

Expert systems are a part of the method sciences artificial intelligence to make an application program disease diagnosis teak computerized seek to replace and

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

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

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