SlideShare a Scribd company logo
1 of 33
Sistem Operasi
PERTEMUAN KE-5
Sinkronisasi Proses
Yaya Suharya, S.Kom., M.T.
yaya.unibba@gmail.com
yayasuharya@unibba.ac.id
NIDN. 0407047706
HP/WA. 08112031124
(3 SKS – 16 X PERTEMUAN)
Sabtu, 08 April 2023
11:30-14:00 (Kelas 4A)
17:00-18:40 (Kelas 4B)
TEKNIK INFORMATIKA
UNIBBA
Agenda Perkuliahan
01 Masalah Critical Section
02 Sinkronisasi Perangkat Keras
03 Larik Memutar (Circular Array)
Mari kita saksikan video berikut :
SISTEM OPERASI
Sistem Operasi - Kasus Sinkronisasi Proses
https://www.youtube.com/watch?v=PR2A6P2e4ik
Sinkronisasi Proses - Sistem Operasi
https://www.youtube.com/watch?v=mqUwJUsLAN4
Process Synchronization
https://www.youtube.com/watch?v=ph2awKa8r5Y&list=PLBlnK6fEyqRiVhbXDG
LXDk_OQAeuVcp2O&index=57
Sinkronisasi Proses
Sinkronisasi Proses
Sinkronisasi mengacu pada salah satu
dari dua proses yang berbeda tetapi
saling berkaitan satu sama lainnya. Dua
proses ini merupakan sinkronisasi data
dan sinkronisasi proses.
Inti dari permasalahan sinkronisasi ini
nantinya akan mengacu pada sebuah
gagasan yang di dalamnya terdapat
banyak proses yang pada titik tertentu
akan bertemu, bergabung dalam rangka
untuk mencapai sebuah kesepakatan
ataupun komitmen untuk suatu urutan
tindakan tertentu.
Gambar 1: Sinkronisasi Proses
Sinkronisasi Proses
Sinkronisasi ini mengacu pada gagasan yang menjaga beberapa salinan dari dataset yang
ada dalam koherensi antara satu sama lain.
Sinkronisasi merupakan suatu proses pengaturan jalannya beberapa proses pada
waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi
inconsitensi (ketidak konsistenan) data akibat adanya akses data secara konkuren
agar hasilnya bagus dan sesuai dengan apa yang diharapkan.
Disini sinkronisasi diperlukan agar data tersebut tetap konsisten.
Pengertian dari Sinkronisasi adalah akses bebarengan untuk berbagi dua bersama
dapat mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan
mekanisme untuk memastikan eksekusi dari proses kerjasama.
Sinkronisasi Proses
Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya inkonsitensi data
karena pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan
jalannya proses-proses sehingga dapat berjalan dengan baik dan sesuai apa yang di
harapkan.
Adapun manfaat sikronisasi pada sistem operasi adalah:
1. Adanya akses - akses data yang sama yang di lakukan secara bersamaan bisa saja
menyebabkan data menjadi tidak konsisten
2. Agar semua data yang ada tetap konsisten membutuhkan mekanisme - mekanisme
agar bisa di pastikan proses eksekusi berjalan.
3. Adanya Race Condition yang merupakan kondisi dimana beberapa proses
mengakses dan memanipulasi data secara bersamaan akan membuat nilai terkhirnya
nanti bergantung dari proses mana yang duluan diakhiri.
Sinkronisasi Proses
Komunikasi antara proses membutuhkan subroutine untuk mengirim dan menerima
data primitif. Terdapat desain yang berbeda-beda dalam implementasi setiap primitif.
Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) –
juga dikenal dengan nama sinkron atau asinkron.
Ketika dalam keadaan sinkron, terjadi dua kejadian :
a. Blocking send. Pemblokiran pengirim sampai pesan sebelumnya diterima.
b. Blocking receive. Pemblokiran penerima sampai terdapat pesan yang akan dikirim.
Sedangkan untuk keadaan asinkron, yang terjadi adalah:
a. Non-blocking send . Pengirim dapat terus mengirim pesan tanpa memperdulikan
apakah pesan sebelumnya sampai atau tidak.
b. Non-blocking receive . Penerima menerima semua pesan baik berupa pesan yang valid
atau pesan yang salah (null).
Race Condition
Race Condition merupakan situasi dimana beberapa
proses mengakses dan memanipulasi data secara
bersamaan.
Nilai terakhir dari data bergantung dari proses mana
yang selesai terakhir. Untuk menghindari
Race Condition, proses - proses secara bersamaan
harus disinkronisasikan.
Dalam beberapa sistem operasi, proses-proses yang
berjalan bersamaan mungkin untuk membagi
beberapa penyimpanan umum, masing-masing dapat
melakukan proses baca (read) dan proses tulis
(write). Penyimpanan bersama (shared storage)
mungkin berada di memori utama atau berupa sebuah
berkas bersama, lokasi dari memori bersama tidak
merubah kealamian dari komunikasi atau masalah
yang muncul.
Masalah Race Condition
Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh
sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut
memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer
daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan
jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0,
1, 2, 3, 4,... masing-masing dapat memuat sebuah nama berkas.
Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak,
dan in, menunjuk slot kosong di direktori. Dua variabel tersebut dapat menangani sebuah two-word
berkas untuk semua proses.
Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi
(berisi nama dari berkas yang antre untuk dicetak).
Race Condition
Lebih atau kurang secara besamaan, proses A dan B,
mereka memutuskan untuk antre untuk sebuah berkas
untuk dicetak. Situasi ini digambarkan seperti gambar di
samping kiri berikut :
Dalam Murphy‟s Law kasus tesebut dapat terjadi.
Proses A membaca in dan menyimpan nilai "7"
di sebuah variabel lokal yang disebut next_free_slot.
Sebuah clock interrupt terjadi dan CPU memutuskan
bahwa proses A berjalan cukup lama, sehingga diga
ntikan oleh proses B.
Proses B juga membaca in, dan juga mengambil n
ilai 7, sehingga menyimpan nama berkas di slot no
mor 7 dan memperbaharui nilai in menjadi 8. Maka
proses mati dan melakukan hal lain.
Race Condition
Akhirnya proses A berjalan lagi, dimulai dari tempat dimana proses tersebut mati. Hal ini terlihat dalam
next_free_slot, ditemukan nilai 7 di sana, dan menulis nama berkas di slot nomor 7, menghapus nama
berkas yang baru saja diletakkan oleh proses B.
Kemudian proses A menghitung next_free_slot + 1, yang nilainya 8 dan memperbaharui nilai in
menjadi 8.
Direktori spooler sekarang secara internal konsisten, sehingga printer daemon tidak akan
memberitahukan apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun.
Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading atau writing beberapa
shared data dan hasilnya bergantung pada ketepatan berjalan disebut race condition.
Masalah Critical Section
Critical Section adalah sebuah segmen
kode dimana sebuah proses memiliki sumber
daya bersama yang diakses terdiri dari :
1. Entry Section, kode yang digunakan untuk
masuk ke dalam critical section
2. Critical Section, kode dimana hanya ada satu
proses yang dapat dieksekusi pada satu waktu
3. Exit Section, akhir dari critical section,
mengizinkan proses lain
4. Remainder Section, merupakan kode istirahat
setelah masuk ke critical section.
Semaphore
Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua
proses atau lebih dapat bekerja sama dengan menggunakan penanda - penanda sederhana.
Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan
penanda tertentu itu.
Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda
yang cocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.
Semaphore
Semaphore mempunyai dua sifat, yaitu:
1. Semaphore dapat diinisialisasi dengan
nilai non negative.
2. Terdapat dua operasi terhadap
semaphore, yaitu Down dan Up.
Usulan asli yang disampaikan Djikstra
adalah operasi P dan V.
Sinkronisasi Perangkat Keras
• Banyak sistem menyediakan dukungan hardware untuk menangani critical
section code
• Melakukan locking : memproteksi critical section dengan lock.
• Pada single-processor
– Disable interrupt
– Code yang sedang dieksekusi tidak akan mengalami preemption
– TIDAK efisien untuk multiprocessor : pesan akan disebar ke semua processor
• Modern-computer
– Menyediakan instruksi hardware khusus yang atomik (tidak bisa diiterupsi)
– Dua pendekatan :
• Test and set
• Swap content of two memory words
Solusi Critical Section dengan Locking
do {
acquire lock
critical section
release lock
remainder section
} while (TRUE);
Solusi Critical Section dengan Test And Set
• Shared boolean variable lock, initialized to FALSE
• „
Solution:
do {
// Do nothing jika lock = true
while ( TestAndSet (&lock ));
critical section
lock = FALSE; // reset lock to false
remainder section
} while (TRUE);
boolean TestAndSet (boolean *lock)
{
boolean rv = *lock;
// set lock = TRUE, lock the execution
*lock = TRUE;
// return previous lock status
return rv:
}
Instruksi Test And Set
• Definisi:
boolean TestAndSet (boolean *lock)
{
boolean rv = *lock;
// set lock = TRUE, means lock the execution
*lock = TRUE;
// return previous lock status
return rv:
}
• Misal ada process Pi dan Pj
• Pi panggil TestAndSet saat parameter lock = False
– Return value = False, process Pi bisa akses critical section-nya
– Pj tidak bisa akses critical sectionnya karena lock=True oleh Pi
• Pi panggil TestAndSet saat parameter lock = True
– Return value = True, process Pi tidak bisa akses critical section-nya (Do Nothing)
– Pi tidak bisa akses critical sectionnya karena sebelumnya lock=True oleh Pj
Solusi Critical Section dengan Swap
• Shared Boolean variable lock initialized to FALSE;
• Setiap process punya local variable key
• „Solution:
do {
key = TRUE;
while ( key == TRUE)
Swap (&lock, &key );
// critical section
lock = FALSE;
// remainder section
} while (TRUE);
void Swap (boolean *lock, boolean *key)
{
boolean temp = *lock;
// Swap content
*lock = *key;
*key = temp;
}
Instruksi Swap
• Definisi:
void Swap (boolean *lock, boolean *key)
{
boolean temp = *lock;
// Swap content
*lock = *key;
*key = temp;
}
• Misal ada process Pi dan Pj
• Pi panggil Swap saat parameter lock = False, key=True
– key = False, process Pi bisa akses critical section-nya
– Pj tidak bisa akses critical sectionnya karena lock=True oleh Pi
• Pi panggil Swap saat parameter lock = True, key=True,
– key = True, process Pi tidak bisa akses critical section-nya (Do Nothing)
– Pi tidak bisa akses critical sectionnya karena sebelumnya lock=True oleh Pj
Bounded-waiting Mutual Exclusion
with TestandSet()
do {
waiting[i] = true;
key = true;
while (waiting[i] && key)
key = test and set(&lock);
waiting[i] = false;
/* critical section */
j = (i + 1) % n;
while ((j != i) && !waiting[j])
j = (j + 1) % n;
if (j == i)
lock = false;
else
waiting[j] = false;
/* remainder section */
} while (true);
Mutex (Mutually Exclusion) Lock
• Sinkronisasi dengan hardware terlalu kompleks bagi programmer
• Desainer OS menyediakan software tool untuk critical section
problem
• Tools paling sederhana adalah mutex (mutually exclusion)
• Mutex lock biasanya diimplementasi dengan salah satu mekanisme
sinkronisasi dengan hardware
• Mutex menyediakan 2 (dua) fungsi dasar :
– acquire lock : mengunci critical section
– release lock : melepas kunci
Solusi Mutex (Mutually Exclusion) Lock
• Acquire dan release menggunakan shared variable available
• Acquire lock
acquire() {
while (!available); /* busy wait */
available = false;
}
• Release lock
release() {
available = true;
}
• Solusi dengan mutex
do {
acquire lock
critical section
release lock
remainder section
} while (true);
Pertanyaan & Jawaban
• Apa kelemahan mutex dan sinkronisasi dengan hardware?
• Jawab :
– Pada saat suatu critical section di lock oleh satu process, maka proses lain
melakukan busy waiting.
– Busy waiting : menunggu dengan cara looping terus menerus sampai lock-nya
dilepas.
• Disebut juga dengan spinlock karena proses lain melakukan "berputar" ketika
menunggu
– Busy waiting menghabiskan siklus pemrosesan CPU yang seharusnya bisa
dimanfaatkan secara produktif oleh proses lain.
Larik Memutar (Circular Array)
• Pendahuluan
• Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasi
penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang
disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya di
perbolehkan pada sisi yang lainnya. Queue merupakan kumpulan data
dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan
penghapusan data hanya melalui sisi depan (head).
• Berbeda dengan stack yang bersifat LIFO maka queue bersifat FIFO
(First In First Out), yaitu data yang pertama masuk akan keluar terlebih dah
ulu dan data yang terakhir masuk akan keluar terakhir.
Larik Memutar (Circular Array)
• Hal yang perlu diingat :
• Queue disebut juga antrian dimana
data masuk di satu sisi dan keluar
di sisi yang lain.
• Queue bersifat FIFO (First In First
Out).
Gambar 1. Ilustrasi Queue
Elemen yang pertama kali masuk ke dalam queue disebut elemen depan (front/h
ead of queue), sedangkan elemen yang terakhir kali masuk ke queue disebut
elemen belakang (rear/tail of queue). Perbedaan antara stack dan queue
terdapat pada aturan penambahan dan penghapusan elemen.
Larik Memutar (Circular Array)
Pada stack, operasi penambahan dan penghapusan elemen dilakukan di satu
ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat dengan
ujung atau dianggap paling atas sehingga pada operasi penghapusan, elemen
teratas tersebut akan dihapus paling awal, sifat demikian dikenal dengan LIFO.
Pada queue, operasi tersebut dilakukan di tempat yang berbeda. Penambahan
elemen selalu dilakukan melalui salah satu ujung, menempati posisi di belakang
elemen‐elemen yang sudah masuk sebelumnya atau menjadi elemen paling
belakang. Sedangkan penghapusan elemen dilakukan di ujung yang berbeda,
yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan.
Sifat yang demikian dikenal dengan FIFO.
Implementasi Queue dengan Circular Array
Salah satu variasi array adalah array melingkar (circular array), artinya array
dapat diakses mulai dari sembarang indeks (indeks awal) ke arah indeks
terakhir (maksimum array), lalu memutar ke indeks pertama hingga kembali
ke indeks awal. Circular array adalah array yang dibuat seakan‐akan
merupakan sebuah lingkaran dengan titik awal dan titik akhir saling
bersebelahan jika array tersebut masih kosong. Jumlah data yang dapat
ditampung oleh array ini adalah besarnya ukuran array dikurangi 1.
Misalnya besar array adalah 8, maka jumlah data yang dapat ditampung adalah
7. Ide yang paling sederhana adalah dengan mengisi tempat kosong (jika tersedi
a) yang berada pada awal array bila tail telah mencapai posisi pjg_max sehingga
penggunaan tempat menjadi lebih efisien. Jadi seolah-olah array di bawah ini
dibulatkan manjadi sebuah lingkaran seperti digambarkan berikut ini (nama
circular array berasal dari ide array yang dibulatkan).
Implementasi Queue dengan Circular Array
Gambar 2. Circular Array
Aturan-aturan dalam queue yang menggunakan circular array adalah:
1. Proses penghapusan dilakukan dengan cara nilai depan (front)
ditambah 1: front=front+1.
2. Proses penambahan elemen sama dengan linear array yaitu nilai
belakang ditambah 1: tail=tail + 1.
3. Jika front = maks dan ada elemen yang akan dihapus, maka nilai
front = 1.
4. Jika tail = maks dan front tidak 1 maka jika ada elemen yang akan
ditambahkan, nilai tail = 1
5. Jika hanya tinggal 1 elemen di queue (front = tail), dan akan
dihapus maka front diisi 0 dan tail diisi dengan 0 (queue kosong).
Front dan Tail akan bergerak maju, jika:
• Untuk penambahan.
• Tail sudah mencapai elemen terakhir array akan memakai
elemen pertama array yang telah dihapus.
• Untuk pngahapusan.
6. Front telah mencapai elemen terakhir array, maka akan menuju el
emen pertama jika antrian masih berisi elemen.
Operasi‐operasi queue dengan Circular Array
Dengan circular array, meskipun posisi terakhir telah terpakai, elemen baru tetap dapat ditambahkan pada posisi pertama jika
posisi pertama dalam keadaan kosong.
Jika akhir = MAX dan awal=1, nilai head dan tail mencapai maksimum, maka akan dikembalikan ke posisi awal. Operasi ‐
operasi yang terdapat pada circular array tidak jauh berbeda dengan operasi pada linear array.
1. Create
Procedure Create;
Begin
Head := 1;
Tail := MaxQueue;
End;
2. Empty
Function Empty : Boolean;
Begin
If (Tail Mod Max_Queue ) + 1 = Head then
Empty := true
Else
Empty := False;
End;
3. FULL
Function Full : Boolean;
Var
X : 1 .. Max_queue;
Begin
X := (Tail Mod Max_queue)+1;
If (x Mod Max_queue) + 1 = head then
Full := True;
Else
Full := False;
Operasi‐operasi queue dengan Circular Array
4. EnQueue
Procedure EnQueue (Elemen : TypeElemen);
Begin
If Not Full Then
Begin
Tail := (Tail Mod Max_queue) + 1 ;
Queue[Tail] := Elemen;
End;
End;
5. DeQueue
Procedure Dequeue;
Begin
If Not Empty then
Head := (Head Mod Max_queue) + 1;
End;
Queue (antrian) adalah salah satu list linier dari struktur data yang beroperasi denga
n cara First In First Out (FIFO) yaitu elemen pertama yang masuk merupakan elemen
yang pertama keluar. Data-data di dalam antrian dapat bertipe integer, real, record
dalam bentuk sederhana atau terstruktur. Queue dilakukan dengan cara penyisipan
di satu ujung, sedang penghapusan di ujung lain. Ujung penyisipan biasa disebut
rear/tail, sedang ujung penghapusan disebut front/head.
Sebuah queue dalam program setidaknya harus mengandung tiga variabel, yakni:
head untuk penanda bagian depan antrian, tail unttuk penanda bagian belakang antri
an, dan array data untuk menyimpan data-data yang dimasukkan ke dalam queue
tersebut.
Pada queue ada operasi – operasi dasar, yaitu: prosedur create untuk membuat
queue baru yang kosog, fungsi IsEmpty untuk mengecek queue tersebut kosong atau
tidak, fungsi IsFull untuk mengecek queue tersebut penuh atau tidak, prosedur
EnQueue untuk memasukkan data kedalam queue, prosedur DeQueue untuk mengel
uarkan sebuah elemen pada posisi head dari queue, fungsi clear untuk menghapus
elemen queue, dan prosedur tampil untuk menampilakn elemen yang ada pada
queue.
Ada beberapa queue, yaitu: queue dengan linear array yaitu queue yang dibuat
seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu
keluar, queue dengan circular array yaitu queue yang dibuat seakan-akan merupakan
sebuah lingkaran dengan titik awal (head) dan titik akhir (tail) saling bersebelahan
jika array tersebut masih kosong, dan queue dengan linked-list.
Thank you
Hatur nuhun
Next
Mekanisme Deadlock
pada Proses

More Related Content

What's hot

Organisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasiOrganisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasidaru2501
 
Struktur direktori
Struktur direktoriStruktur direktori
Struktur direktoriAnggi DHARMA
 
 Manajemen memory dan Swapping
 Manajemen memory dan Swapping Manajemen memory dan Swapping
 Manajemen memory dan SwappingEdho Pratama
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Tri Sugihartono
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerAuliaa Oktarianii
 
Teknik Enkripsi dan Dekripsi Playfair Cipher
Teknik Enkripsi dan Dekripsi Playfair CipherTeknik Enkripsi dan Dekripsi Playfair Cipher
Teknik Enkripsi dan Dekripsi Playfair CipherRivalri Kristianto Hondro
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatanBuhori Muslim
 
MultiProgramming and Time Sharing
MultiProgramming and Time SharingMultiProgramming and Time Sharing
MultiProgramming and Time SharingTri Sugihartono
 
Deadlock pada sistem operasi
Deadlock pada sistem operasiDeadlock pada sistem operasi
Deadlock pada sistem operasiAyu Arri Andanni
 
Mode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain PengalamatanMode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain Pengalamatanlailalutfi
 
Perbandingan algoritma brute force , divide and conquer
Perbandingan algoritma brute force , divide and conquerPerbandingan algoritma brute force , divide and conquer
Perbandingan algoritma brute force , divide and conquerohohervin
 
Ppt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem OperasiPpt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem Operasijahrataqim
 

What's hot (20)

Organisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasiOrganisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasi
 
Modul Pemrograman Bahasa Assembly
Modul Pemrograman Bahasa AssemblyModul Pemrograman Bahasa Assembly
Modul Pemrograman Bahasa Assembly
 
Struktur direktori
Struktur direktoriStruktur direktori
Struktur direktori
 
 Manajemen memory dan Swapping
 Manajemen memory dan Swapping Manajemen memory dan Swapping
 Manajemen memory dan Swapping
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)
 
Ragam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan KomputerRagam Dialog :: Interaksi Manusia dan Komputer
Ragam Dialog :: Interaksi Manusia dan Komputer
 
UNIT CONTROL Tgs.ppt
 UNIT CONTROL  Tgs.ppt UNIT CONTROL  Tgs.ppt
UNIT CONTROL Tgs.ppt
 
Deadlock
DeadlockDeadlock
Deadlock
 
Teknik Enkripsi dan Dekripsi Playfair Cipher
Teknik Enkripsi dan Dekripsi Playfair CipherTeknik Enkripsi dan Dekripsi Playfair Cipher
Teknik Enkripsi dan Dekripsi Playfair Cipher
 
Pertemuan 10 memory
Pertemuan 10 memoryPertemuan 10 memory
Pertemuan 10 memory
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
 
MultiProgramming and Time Sharing
MultiProgramming and Time SharingMultiProgramming and Time Sharing
MultiProgramming and Time Sharing
 
Deadlock pada sistem operasi
Deadlock pada sistem operasiDeadlock pada sistem operasi
Deadlock pada sistem operasi
 
Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)
 
Mode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain PengalamatanMode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain Pengalamatan
 
Interupsi
InterupsiInterupsi
Interupsi
 
4. pengamanan sistem operasi
4. pengamanan sistem operasi4. pengamanan sistem operasi
4. pengamanan sistem operasi
 
Perbandingan algoritma brute force , divide and conquer
Perbandingan algoritma brute force , divide and conquerPerbandingan algoritma brute force , divide and conquer
Perbandingan algoritma brute force , divide and conquer
 
Sistem File
Sistem FileSistem File
Sistem File
 
Ppt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem OperasiPpt sinkronisasi dalam Sistem Operasi
Ppt sinkronisasi dalam Sistem Operasi
 

Similar to Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx

Slide3 manajemen proses
Slide3 manajemen prosesSlide3 manajemen proses
Slide3 manajemen prosesHz Tena
 
Nurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi ProsesNurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi Prosesbelajarkomputer
 
Sinkronisasi dan deadlock
Sinkronisasi dan deadlockSinkronisasi dan deadlock
Sinkronisasi dan deadlockAlvin Setiawan
 
2.3 komunikasi antar proses
2.3 komunikasi antar proses2.3 komunikasi antar proses
2.3 komunikasi antar prosesAlifika Anggun
 
42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx
42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx
42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptxNurul36409
 
MF427_10_172043.ppt
MF427_10_172043.pptMF427_10_172043.ppt
MF427_10_172043.pptAdanImam1
 
Pertemuan ke 2
Pertemuan ke 2Pertemuan ke 2
Pertemuan ke 2ndriehs
 
Muhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem OperasiMuhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem Operasibelajarkomputer
 
Novita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem OperasiNovita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem Operasibelajarkomputer
 
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdfDeadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdfARYAPUTRAABSHARI
 
Deadlock rahmawati
Deadlock   rahmawatiDeadlock   rahmawati
Deadlock rahmawatisarman yahya
 
Ferli Apriadi - Deadlock
Ferli Apriadi - DeadlockFerli Apriadi - Deadlock
Ferli Apriadi - Deadlockbelajarkomputer
 
Komunikasi Antar Proses
Komunikasi Antar ProsesKomunikasi Antar Proses
Komunikasi Antar ProsesSonny Grimaldi
 
Bernis Sagita - Deadlock
Bernis Sagita -  DeadlockBernis Sagita -  Deadlock
Bernis Sagita - Deadlockbelajarkomputer
 

Similar to Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx (20)

Slide3 manajemen proses
Slide3 manajemen prosesSlide3 manajemen proses
Slide3 manajemen proses
 
Nurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi ProsesNurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi Proses
 
Sinkronisasi dan deadlock
Sinkronisasi dan deadlockSinkronisasi dan deadlock
Sinkronisasi dan deadlock
 
2.3 komunikasi antar proses
2.3 komunikasi antar proses2.3 komunikasi antar proses
2.3 komunikasi antar proses
 
42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx
42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx
42520042 - NURUL ILMI - BAB 6 SINKRONISASI.pptx
 
MF427_10_172043.ppt
MF427_10_172043.pptMF427_10_172043.ppt
MF427_10_172043.ppt
 
Pertemuan ke 2
Pertemuan ke 2Pertemuan ke 2
Pertemuan ke 2
 
Os ppt.6
Os ppt.6Os ppt.6
Os ppt.6
 
Pert.5 sinkronisasi dan deadlock
Pert.5 sinkronisasi dan deadlockPert.5 sinkronisasi dan deadlock
Pert.5 sinkronisasi dan deadlock
 
Pengelolaan Proses.pptx
Pengelolaan Proses.pptxPengelolaan Proses.pptx
Pengelolaan Proses.pptx
 
Muhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem OperasiMuhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem Operasi
 
Pertemuan ke 6
Pertemuan ke 6Pertemuan ke 6
Pertemuan ke 6
 
Novita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem OperasiNovita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem Operasi
 
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdfDeadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
Deadlock_Arya Putra Abshari (210209501101) PTIK C 2021.pdf
 
Deadlock rahmawati
Deadlock   rahmawatiDeadlock   rahmawati
Deadlock rahmawati
 
ikh311-03
ikh311-03ikh311-03
ikh311-03
 
Ferli Apriadi - Deadlock
Ferli Apriadi - DeadlockFerli Apriadi - Deadlock
Ferli Apriadi - Deadlock
 
Komunikasi Antar Proses
Komunikasi Antar ProsesKomunikasi Antar Proses
Komunikasi Antar Proses
 
Bernis Sagita - Deadlock
Bernis Sagita -  DeadlockBernis Sagita -  Deadlock
Bernis Sagita - Deadlock
 
Pertemuan 6 rev 310108_ok
Pertemuan 6 rev 310108_okPertemuan 6 rev 310108_ok
Pertemuan 6 rev 310108_ok
 

Pertemuan Ke-5 - Sistem Operasi - Sinkronisasi Proses.pptx

  • 1. Sistem Operasi PERTEMUAN KE-5 Sinkronisasi Proses Yaya Suharya, S.Kom., M.T. yaya.unibba@gmail.com yayasuharya@unibba.ac.id NIDN. 0407047706 HP/WA. 08112031124 (3 SKS – 16 X PERTEMUAN) Sabtu, 08 April 2023 11:30-14:00 (Kelas 4A) 17:00-18:40 (Kelas 4B) TEKNIK INFORMATIKA UNIBBA
  • 2. Agenda Perkuliahan 01 Masalah Critical Section 02 Sinkronisasi Perangkat Keras 03 Larik Memutar (Circular Array)
  • 3. Mari kita saksikan video berikut : SISTEM OPERASI Sistem Operasi - Kasus Sinkronisasi Proses https://www.youtube.com/watch?v=PR2A6P2e4ik Sinkronisasi Proses - Sistem Operasi https://www.youtube.com/watch?v=mqUwJUsLAN4 Process Synchronization https://www.youtube.com/watch?v=ph2awKa8r5Y&list=PLBlnK6fEyqRiVhbXDG LXDk_OQAeuVcp2O&index=57
  • 5. Sinkronisasi Proses Sinkronisasi mengacu pada salah satu dari dua proses yang berbeda tetapi saling berkaitan satu sama lainnya. Dua proses ini merupakan sinkronisasi data dan sinkronisasi proses. Inti dari permasalahan sinkronisasi ini nantinya akan mengacu pada sebuah gagasan yang di dalamnya terdapat banyak proses yang pada titik tertentu akan bertemu, bergabung dalam rangka untuk mencapai sebuah kesepakatan ataupun komitmen untuk suatu urutan tindakan tertentu. Gambar 1: Sinkronisasi Proses
  • 6. Sinkronisasi Proses Sinkronisasi ini mengacu pada gagasan yang menjaga beberapa salinan dari dataset yang ada dalam koherensi antara satu sama lain. Sinkronisasi merupakan suatu proses pengaturan jalannya beberapa proses pada waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi inconsitensi (ketidak konsistenan) data akibat adanya akses data secara konkuren agar hasilnya bagus dan sesuai dengan apa yang diharapkan. Disini sinkronisasi diperlukan agar data tersebut tetap konsisten. Pengertian dari Sinkronisasi adalah akses bebarengan untuk berbagi dua bersama dapat mengakibatkan inkosistensi data. Pemeliharaan konsistensi data memerlukan mekanisme untuk memastikan eksekusi dari proses kerjasama.
  • 7. Sinkronisasi Proses Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan baik dan sesuai apa yang di harapkan. Adapun manfaat sikronisasi pada sistem operasi adalah: 1. Adanya akses - akses data yang sama yang di lakukan secara bersamaan bisa saja menyebabkan data menjadi tidak konsisten 2. Agar semua data yang ada tetap konsisten membutuhkan mekanisme - mekanisme agar bisa di pastikan proses eksekusi berjalan. 3. Adanya Race Condition yang merupakan kondisi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan akan membuat nilai terkhirnya nanti bergantung dari proses mana yang duluan diakhiri.
  • 8. Sinkronisasi Proses Komunikasi antara proses membutuhkan subroutine untuk mengirim dan menerima data primitif. Terdapat desain yang berbeda-beda dalam implementasi setiap primitif. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) – juga dikenal dengan nama sinkron atau asinkron. Ketika dalam keadaan sinkron, terjadi dua kejadian : a. Blocking send. Pemblokiran pengirim sampai pesan sebelumnya diterima. b. Blocking receive. Pemblokiran penerima sampai terdapat pesan yang akan dikirim. Sedangkan untuk keadaan asinkron, yang terjadi adalah: a. Non-blocking send . Pengirim dapat terus mengirim pesan tanpa memperdulikan apakah pesan sebelumnya sampai atau tidak. b. Non-blocking receive . Penerima menerima semua pesan baik berupa pesan yang valid atau pesan yang salah (null).
  • 9. Race Condition Race Condition merupakan situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir. Untuk menghindari Race Condition, proses - proses secara bersamaan harus disinkronisasikan. Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul.
  • 10. Masalah Race Condition Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori. Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,... masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua variabel tersebut dapat menangani sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak).
  • 11. Race Condition Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak. Situasi ini digambarkan seperti gambar di samping kiri berikut : Dalam Murphy‟s Law kasus tesebut dapat terjadi. Proses A membaca in dan menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot. Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan cukup lama, sehingga diga ntikan oleh proses B. Proses B juga membaca in, dan juga mengambil n ilai 7, sehingga menyimpan nama berkas di slot no mor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.
  • 12. Race Condition Akhirnya proses A berjalan lagi, dimulai dari tempat dimana proses tersebut mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7 di sana, dan menulis nama berkas di slot nomor 7, menghapus nama berkas yang baru saja diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot + 1, yang nilainya 8 dan memperbaharui nilai in menjadi 8. Direktori spooler sekarang secara internal konsisten, sehingga printer daemon tidak akan memberitahukan apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun. Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading atau writing beberapa shared data dan hasilnya bergantung pada ketepatan berjalan disebut race condition.
  • 13. Masalah Critical Section Critical Section adalah sebuah segmen kode dimana sebuah proses memiliki sumber daya bersama yang diakses terdiri dari : 1. Entry Section, kode yang digunakan untuk masuk ke dalam critical section 2. Critical Section, kode dimana hanya ada satu proses yang dapat dieksekusi pada satu waktu 3. Exit Section, akhir dari critical section, mengizinkan proses lain 4. Remainder Section, merupakan kode istirahat setelah masuk ke critical section.
  • 14. Semaphore Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda - penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu. Variabel khusus untuk penanda ini disebut semaphore.
  • 15. Semaphore Semaphore mempunyai dua sifat, yaitu: 1. Semaphore dapat diinisialisasi dengan nilai non negative. 2. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.
  • 16. Sinkronisasi Perangkat Keras • Banyak sistem menyediakan dukungan hardware untuk menangani critical section code • Melakukan locking : memproteksi critical section dengan lock. • Pada single-processor – Disable interrupt – Code yang sedang dieksekusi tidak akan mengalami preemption – TIDAK efisien untuk multiprocessor : pesan akan disebar ke semua processor • Modern-computer – Menyediakan instruksi hardware khusus yang atomik (tidak bisa diiterupsi) – Dua pendekatan : • Test and set • Swap content of two memory words
  • 17. Solusi Critical Section dengan Locking do { acquire lock critical section release lock remainder section } while (TRUE);
  • 18. Solusi Critical Section dengan Test And Set • Shared boolean variable lock, initialized to FALSE • „ Solution: do { // Do nothing jika lock = true while ( TestAndSet (&lock )); critical section lock = FALSE; // reset lock to false remainder section } while (TRUE); boolean TestAndSet (boolean *lock) { boolean rv = *lock; // set lock = TRUE, lock the execution *lock = TRUE; // return previous lock status return rv: }
  • 19. Instruksi Test And Set • Definisi: boolean TestAndSet (boolean *lock) { boolean rv = *lock; // set lock = TRUE, means lock the execution *lock = TRUE; // return previous lock status return rv: } • Misal ada process Pi dan Pj • Pi panggil TestAndSet saat parameter lock = False – Return value = False, process Pi bisa akses critical section-nya – Pj tidak bisa akses critical sectionnya karena lock=True oleh Pi • Pi panggil TestAndSet saat parameter lock = True – Return value = True, process Pi tidak bisa akses critical section-nya (Do Nothing) – Pi tidak bisa akses critical sectionnya karena sebelumnya lock=True oleh Pj
  • 20. Solusi Critical Section dengan Swap • Shared Boolean variable lock initialized to FALSE; • Setiap process punya local variable key • „Solution: do { key = TRUE; while ( key == TRUE) Swap (&lock, &key ); // critical section lock = FALSE; // remainder section } while (TRUE); void Swap (boolean *lock, boolean *key) { boolean temp = *lock; // Swap content *lock = *key; *key = temp; }
  • 21. Instruksi Swap • Definisi: void Swap (boolean *lock, boolean *key) { boolean temp = *lock; // Swap content *lock = *key; *key = temp; } • Misal ada process Pi dan Pj • Pi panggil Swap saat parameter lock = False, key=True – key = False, process Pi bisa akses critical section-nya – Pj tidak bisa akses critical sectionnya karena lock=True oleh Pi • Pi panggil Swap saat parameter lock = True, key=True, – key = True, process Pi tidak bisa akses critical section-nya (Do Nothing) – Pi tidak bisa akses critical sectionnya karena sebelumnya lock=True oleh Pj
  • 22. Bounded-waiting Mutual Exclusion with TestandSet() do { waiting[i] = true; key = true; while (waiting[i] && key) key = test and set(&lock); waiting[i] = false; /* critical section */ j = (i + 1) % n; while ((j != i) && !waiting[j]) j = (j + 1) % n; if (j == i) lock = false; else waiting[j] = false; /* remainder section */ } while (true);
  • 23. Mutex (Mutually Exclusion) Lock • Sinkronisasi dengan hardware terlalu kompleks bagi programmer • Desainer OS menyediakan software tool untuk critical section problem • Tools paling sederhana adalah mutex (mutually exclusion) • Mutex lock biasanya diimplementasi dengan salah satu mekanisme sinkronisasi dengan hardware • Mutex menyediakan 2 (dua) fungsi dasar : – acquire lock : mengunci critical section – release lock : melepas kunci
  • 24. Solusi Mutex (Mutually Exclusion) Lock • Acquire dan release menggunakan shared variable available • Acquire lock acquire() { while (!available); /* busy wait */ available = false; } • Release lock release() { available = true; } • Solusi dengan mutex do { acquire lock critical section release lock remainder section } while (true);
  • 25. Pertanyaan & Jawaban • Apa kelemahan mutex dan sinkronisasi dengan hardware? • Jawab : – Pada saat suatu critical section di lock oleh satu process, maka proses lain melakukan busy waiting. – Busy waiting : menunggu dengan cara looping terus menerus sampai lock-nya dilepas. • Disebut juga dengan spinlock karena proses lain melakukan "berputar" ketika menunggu – Busy waiting menghabiskan siklus pemrosesan CPU yang seharusnya bisa dimanfaatkan secara produktif oleh proses lain.
  • 26. Larik Memutar (Circular Array) • Pendahuluan • Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya di perbolehkan pada sisi yang lainnya. Queue merupakan kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). • Berbeda dengan stack yang bersifat LIFO maka queue bersifat FIFO (First In First Out), yaitu data yang pertama masuk akan keluar terlebih dah ulu dan data yang terakhir masuk akan keluar terakhir.
  • 27. Larik Memutar (Circular Array) • Hal yang perlu diingat : • Queue disebut juga antrian dimana data masuk di satu sisi dan keluar di sisi yang lain. • Queue bersifat FIFO (First In First Out). Gambar 1. Ilustrasi Queue Elemen yang pertama kali masuk ke dalam queue disebut elemen depan (front/h ead of queue), sedangkan elemen yang terakhir kali masuk ke queue disebut elemen belakang (rear/tail of queue). Perbedaan antara stack dan queue terdapat pada aturan penambahan dan penghapusan elemen.
  • 28. Larik Memutar (Circular Array) Pada stack, operasi penambahan dan penghapusan elemen dilakukan di satu ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat dengan ujung atau dianggap paling atas sehingga pada operasi penghapusan, elemen teratas tersebut akan dihapus paling awal, sifat demikian dikenal dengan LIFO. Pada queue, operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan melalui salah satu ujung, menempati posisi di belakang elemen‐elemen yang sudah masuk sebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan elemen dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan. Sifat yang demikian dikenal dengan FIFO.
  • 29. Implementasi Queue dengan Circular Array Salah satu variasi array adalah array melingkar (circular array), artinya array dapat diakses mulai dari sembarang indeks (indeks awal) ke arah indeks terakhir (maksimum array), lalu memutar ke indeks pertama hingga kembali ke indeks awal. Circular array adalah array yang dibuat seakan‐akan merupakan sebuah lingkaran dengan titik awal dan titik akhir saling bersebelahan jika array tersebut masih kosong. Jumlah data yang dapat ditampung oleh array ini adalah besarnya ukuran array dikurangi 1. Misalnya besar array adalah 8, maka jumlah data yang dapat ditampung adalah 7. Ide yang paling sederhana adalah dengan mengisi tempat kosong (jika tersedi a) yang berada pada awal array bila tail telah mencapai posisi pjg_max sehingga penggunaan tempat menjadi lebih efisien. Jadi seolah-olah array di bawah ini dibulatkan manjadi sebuah lingkaran seperti digambarkan berikut ini (nama circular array berasal dari ide array yang dibulatkan).
  • 30. Implementasi Queue dengan Circular Array Gambar 2. Circular Array Aturan-aturan dalam queue yang menggunakan circular array adalah: 1. Proses penghapusan dilakukan dengan cara nilai depan (front) ditambah 1: front=front+1. 2. Proses penambahan elemen sama dengan linear array yaitu nilai belakang ditambah 1: tail=tail + 1. 3. Jika front = maks dan ada elemen yang akan dihapus, maka nilai front = 1. 4. Jika tail = maks dan front tidak 1 maka jika ada elemen yang akan ditambahkan, nilai tail = 1 5. Jika hanya tinggal 1 elemen di queue (front = tail), dan akan dihapus maka front diisi 0 dan tail diisi dengan 0 (queue kosong). Front dan Tail akan bergerak maju, jika: • Untuk penambahan. • Tail sudah mencapai elemen terakhir array akan memakai elemen pertama array yang telah dihapus. • Untuk pngahapusan. 6. Front telah mencapai elemen terakhir array, maka akan menuju el emen pertama jika antrian masih berisi elemen.
  • 31. Operasi‐operasi queue dengan Circular Array Dengan circular array, meskipun posisi terakhir telah terpakai, elemen baru tetap dapat ditambahkan pada posisi pertama jika posisi pertama dalam keadaan kosong. Jika akhir = MAX dan awal=1, nilai head dan tail mencapai maksimum, maka akan dikembalikan ke posisi awal. Operasi ‐ operasi yang terdapat pada circular array tidak jauh berbeda dengan operasi pada linear array. 1. Create Procedure Create; Begin Head := 1; Tail := MaxQueue; End; 2. Empty Function Empty : Boolean; Begin If (Tail Mod Max_Queue ) + 1 = Head then Empty := true Else Empty := False; End; 3. FULL Function Full : Boolean; Var X : 1 .. Max_queue; Begin X := (Tail Mod Max_queue)+1; If (x Mod Max_queue) + 1 = head then Full := True; Else Full := False;
  • 32. Operasi‐operasi queue dengan Circular Array 4. EnQueue Procedure EnQueue (Elemen : TypeElemen); Begin If Not Full Then Begin Tail := (Tail Mod Max_queue) + 1 ; Queue[Tail] := Elemen; End; End; 5. DeQueue Procedure Dequeue; Begin If Not Empty then Head := (Head Mod Max_queue) + 1; End; Queue (antrian) adalah salah satu list linier dari struktur data yang beroperasi denga n cara First In First Out (FIFO) yaitu elemen pertama yang masuk merupakan elemen yang pertama keluar. Data-data di dalam antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur. Queue dilakukan dengan cara penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung penyisipan biasa disebut rear/tail, sedang ujung penghapusan disebut front/head. Sebuah queue dalam program setidaknya harus mengandung tiga variabel, yakni: head untuk penanda bagian depan antrian, tail unttuk penanda bagian belakang antri an, dan array data untuk menyimpan data-data yang dimasukkan ke dalam queue tersebut. Pada queue ada operasi – operasi dasar, yaitu: prosedur create untuk membuat queue baru yang kosog, fungsi IsEmpty untuk mengecek queue tersebut kosong atau tidak, fungsi IsFull untuk mengecek queue tersebut penuh atau tidak, prosedur EnQueue untuk memasukkan data kedalam queue, prosedur DeQueue untuk mengel uarkan sebuah elemen pada posisi head dari queue, fungsi clear untuk menghapus elemen queue, dan prosedur tampil untuk menampilakn elemen yang ada pada queue. Ada beberapa queue, yaitu: queue dengan linear array yaitu queue yang dibuat seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar, queue dengan circular array yaitu queue yang dibuat seakan-akan merupakan sebuah lingkaran dengan titik awal (head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih kosong, dan queue dengan linked-list.
  • 33. Thank you Hatur nuhun Next Mekanisme Deadlock pada Proses