Anda di halaman 1dari 17

RESUME

SISTIM OPERASI

DISUSUN OLEH
NAMA : Rayhan Ahadi Nifri
NIM : 21343035
Depertemen : Elektronika
Prodi : Informatika
Dosen Pengampu : Muhammad Adri S.Pd.,M.T
Topik utama rancangan sistem operasi adalah berkaitan dengan
manajemen proses dan thread :

 Multiprogramming : Manajemen proses jamak di dalam sistem


uniprosesor. Sesungguhnya semua sistem operasi mendukung
multiprogramming.

 Multiprosessing : Manajemen proses jamak di dalam sistem proses


mikroprosesor.

 Distrubuted Processing : Manajemen proses jamak yang melakukan


eksekusi pada sistem komputer tristrubusi dan jamak.
Konkurensi mencakup sejumlah rancangan terrmasuk komunikasi antar
proses, bagi pakai sumber daya dan persaingan sumber daya, sinkronisasi
aktivitas sejumlah proses, dan alokasi waktu prosesor kepada proses.

 Aplikasi jamak : Multiprogramming dibuat untuk memungkinkan waktu


pengolahan dapat dibagaipakaikan secara dinamais oleh beberapa aplikasi
yang aktif.

 Aplikasi terstruktur : Sebagai pengembangan prinsip rancangan modular dan


pemrograman terstruktur, beberapa aplikasi dapat secara efektif diprogram
sebagai sebuah himpunan proses konkuren.

 Struktur sistem operasi : Keuntungan penstrukturan yang sama berlaku juga


pada pemrograman sistem,dan telah kita ketahui bahwa sistem operasi itu
sendiri sering kali diimplementasikan sebagai himpunan proses.

A. PRINSIP KONKURENSI
Pada sebuah sistem multiprogramming, berprosesor tunggal, proses
digilirkan berdasarkan waktu untuk merealisasikan yang simultan. Walaupun
pengolahan paralel yang sebenarnya tidak dapat dicapai, dan walaupun terdapat
sejumlah overhead yang terjadi dalam peralihan antarproses, eksekusi secara
bergiliran memberikan keuntungan yang penting dalam mencapai efisiensi
pengolahan dan dalam penstrukturan program. Pada sistem prosesor jamak,
tidak hanya bergiliran proses saja yang dimungkikan, namun juga
menumpangtindihkan proses tersebut dapat dilakukan.
Berikut ini adalah kesulitan yang mungkin timbul:

1. Bagi-pakai sumber daya global banyak. Misalnya apabila dua proses


menggunakan dua variabel global yang sama dan keduanya melakukan
pembacaandan penulisan terhadap variabel terssebut, urutan
pembacaan dan penulisan akan menjadi sesuat yang kritis.

2. Sangatlah sistem operasi untuk mengatur alokasi sumber daya secara


optimal. Misalnya, proses A dapat meminta penggunaan saluran I/O
tertentu dan kemudian ditunda sebelum dapat menggunakanya. Akan
tidak efisien apabila sistem operasi hanya mengunci dan mencegah
penggunaan saluran tersebut.
1. Hal-hal Penting yang Perlu diperhatikan Sistem Operasi

a. Sistem operasi harus mampu mengawasi bermacam-macam proses


aktif. Hal ini dilakukan dengan menggunakan proses control block.

b. Sistem operasi harus dapat mengalokasi dan mendealokasi berbagai


sumber daya bagi setiap proses aktif. Sumber daya tersebut meliputi :
1. Waktu prosesor : hal ini merupakan fungsi penjadwalan .
2. Memori : sebagian besar sistem operasi menggunakan teknik
virtual memori.
3. File
4. Perangkat I/O

c. Sistem operasi harus memproteksi data dan sumber-sumber daya fisik


setiap proses dari gangguan proses lainya yang tidak diinginkan.
Proteksi ini mencakup teknik yang berkaitan dengan memori, file, dan
perangkat I/O.

d. Hasil suatu proses harus tidak bergantung pada kecepatan dimana


eksekusi dilakukakan relatif terhadap kecepatan proses konkuren
lainya.

2. Interaksi Proses
Cara proses berinteraksi dapat diklasifikasikan berdasarkan derajat
pengetahuan keberadaan proses lainya. Tabel 5.1 memberikan tiga
derajat pengetahuan dan masing-masing konsekuensinya :

Tabel 5.1 Instruksi proses

Pengaruh satu proses


Tingkat Control
Relationship masalah terhadap proses
pengetahuan potensial
lainnya

Mutual
ekslusion

Hasil suatu proses akan


independen terhadap Deadlock
Proses saling
Kompetisi keberadaan proses aksi proses (sumber
tidak mengetahui
lainnya. Timing proses dapat lainnya
terpengaruh terbaharui)

Starvation
Mutual
Hasil satu proses ekslusion
Poses
menggunakan dapat
mengetahui
bergantung pada informasi
keberadaan
Kooperasi yang diperoleh dari proses Deadlock
proses lainnya
dengan bagi- lainnya.
secara tidak
pakai
lansung
Starvation
(misalnya objek
Timing proses dapat
bagi-pakai)
terpengaruh
Koherensi data

Hasil suatu proses dapat


Mengetahui bergantung pada informasi
keberadaan Kooperasi
yang diperoleh dari proses
proses lainnya dengan
lainnya. Deadlock
secara langsung mengguna-
Starvation
(memiliki primitive kan
komunikasi
komunikasi) Timing proses dapat
terpengaruh

a. Kompetisi Diantara Proses Untuk Mendapatkan Sumber Daya


Proses konkuren akan mengalami konflik satu dengan lainya
pada saat proses tersebut berkompetisi untuk dapat menggunakan
suatu sumber daya yang sama. Dua proses atau lebih ingin mengakses
sebuah sumber daya pada saat berlangsungnya eksekusi. Masing-
masing proses tidak menyadari keberadaan proses lainnya, dan semua
proses tersebut tidak akan berpengaruh oleh eksekusi proses lainnya.
b. Kooperasi Antar-proses dengan Bagi-Pakai
Masalah kooperasi antar-proses dengan menggunakan bagi-
pakai mencakup proses yang berinteraksi dengan proses lainnya tanpa
menyadari keberadaannya secara eksplisit. Misalnya, sejumlah proses
dapat memiliki akses ke variable bagi-pakai atau ke file atau database
bagi-pakai. Proses dapat menggunakan dan mengupdate data bagi-
pakai tanpa mereferensi ke proses lainnya, namun mengetahui bahwa
proses-proses lainnya memiliki akses ke data itu. Dengan demikian,
proses-proses harus bekerja sama untuk menjamin bahwa data yang
mereka bagi-pakaikan dikelola dengan benar. Mekanisme control harus
menjamin integritas data bagi-pakai tersebut.
c. Kooperasi Antar-proses dengan menggunakan komunikasi
Pada dua kasus pertama yang telah kita bahas, setiap proses
memiliki lingkungan terisolasinya sendirinya yang tidak memasukkan
proses-proses lainnya. Interaksi antar-proses bersifat tidak langsung.
Pada kedua kasus tersebut, terdapat pembagi-pakaian. Dalam hal
kompetisi, proses tersebut melakukan bagi-pakai sumber daya tanpa
mengetahui proses lainnya.
3. Persyaratan Mutual Exclusion
Setiap fasilitas dan kemampuan yang dimaksudkan untuk mendukung
mutual exclusion harus memenuhi h proses dengan persyaratan-persyaratan
berikut ini:
1) Mutual exclution harus dilaksanakan : di antara sejumlah proses yang
memiliki bagian kritis bagi sumber daya yang sama atau objek bagi
pakai, pada suatu saat tertentu hanya sebuah proses yang diizinkan
memasuki bagian kritisnya
2) Suatu proses yang berhenti di dalam bagian kritisnya tidak boleh
menggangu proses lainnya.
3) Suatu proses yang memerlukan akses ke bagian krisis tidak boleh di-
delay-kan dalam waktu yang tidak tertentu : tidak ada dedlock atau
starvation
4) Apabila dalam bagian kritis tidak ada proses, proses yang ingin masuk
ke dalam bagian kritisnya harus di izinkan masuk tanpa delay.
5) Tidak ada asumsi dibuat tentang kecepatan proses relatif atau jumlah
prosesor.
6) Suatu proses berada dalam bagian kritisnya dalam waktu tertentu saja.

B. MUTUAL EXCLUSION:PENDEKATAN SOFTWARE


Pendekatan software dapat diimplementasikan untuk proses
konkuren yang melakukan eksekusi pada mesin berprosesor tunggal atau
berprosesor tunggal atau berprosesor jamak yang memiliki memori bagi-
pakai. Umumnya pendekatan ini mengasumsikan mutual exclution
elementer pada tingkat akses memori ({LAMP91}. Dengan kata lain, akses
simultan (pembacaan dan/atau penulisan) ke lokasi yang sama di dalam
memori arbiter, walaupun urutan pemberian akses tidak ditentukan
terlebihh dahulu. Di atas hal tersebut, tidak diasumsikan adanya dukungan
pada tingkat hardware sistem operasi, atau bahasa pemograman.
1. Algoritma Dekker
Dijkstra telah menulis algoritma mutual exclusion bagi dua proses
yang dirancang oleh ahli matematik Belanda bernama Dekker. Pendekatan
ini memiliki kelebihan dalam menjelaskan bug-bug yang paling sering
dijumpai di dalam membuat program-program konkuren.
a) Usaha Pertama
Setiap usaha pada mutual exclution harus mekanisme ekslusi
fundamental di dalam hardware. Salah satu mekanisme yang paling
umum adalah constraint yang hanya mengizinkan satu akses ke lokasi
memori pada suatu saat tertentu menggunakan constraint ini, kita
menyediakan sebuah lokasi memori global yang di beri label tura.
Sebuah proses (P0 atau P1) menginginkan untuk mengeksekusi
bagian kritis pertama yang memeriksa isi dari turn. Jika nilai dari nurn
menjadi sama jumlah dari proses, kemudian proses dapat
melanjutkan ke bagian kritis. Jika tidak, akan mendorong untuk
menunggu. Proses menunggu berulang kalii membaca nilai turn
sebagai busy waiting karena proses tidak dapat melakukan bagian kritis.
Kontruksi yang disebut merupakan kontruksi suatu coroutine.
Coroutine dirancang untuk dapat mengirimkan dn mengembalikan
kontrol eksekusi di antara coroutine itu sendiri. Walaupun merupakan
sebuah teknik penstrukturan yang cukup berguna, coroutine tidak lah
cukup untuk mendukung pengolahan konkuren.

b) Usaha kedua
Masalah ada usaha pertama adalah usaha tersebut menyimpan
nama proses yang dapat masuk ke bagan kritisnya. Pada saat kita
benar-benar memerlukan informasi keadaan tentang kedua proses
tersebut akibatnya, setiap proses perlu memiliki kunci-kunci sendiri ke
bagian kritis itu sehingga apabila proses musnah, maka proses lainnya
masih dapat mengakses bagian kritiisnya untuk memenuhi persyaratan
ini sebuah vektor boolean flag di dfenisikan, dengan flag (0)
berhubungan dengan P0 dan flag (1) yang berhubungan dengan P1,
masing-masng proses dapat memeriksa flag lainnya, namun tiidak
dapat mengubahnya, ketika sebuah proses mungkinkan untuk
memasuki bagian kritis, secara perodik memeriksa flag lain nya tidak
dalam bagian kritis proses dengan langsung men-set flag-nya sendiri
ke true dan melanjutkan kebagian kritis pada saat meninggalkan
bagan krits nya, proses itu mengubah tulisan d atas papan tulisnya
menjadi (false) karena sekarang kedua proses itu berada di bagian
kritisnya, programnya menjadi salah.masalah nya adalah solusi yang
diajukan tidak indenpenden terhadap kecepatan eksekusi proses
relatif.

c) Usaha ketiga
Karena sebuah proses dapat menggantikan keadaandari proses lainnya telah
diperiksa namun sebelum proses lainya dapat memasukkan bagian
kritis, upaya kedua gagal mungkin. Seperti pada kasus sebelumnya,
apabiala sebuah proses mengalami kegagalan di dalam bagian kritis,
termasuk kode flag settingnya yang mengontrol bagian kritis, proses
lainnya akan diblokir.apabila suatu proses mengalami kegagalan di luar
bagian kritisnya, proses lain nya tidak akan diblokir. Usaha ini dapat
menjamin mutual exclusion namun menimbulkan masalah lainnya.
Setiap proses itu akan salingmengira bahwa proses lainnya telah masuk
ke bagian kritisnya yang mana hal ini akan menimbulkan deadlock.
d) Usaha keempat
Dalam usaha ketiga, sebuah proses menyetel keadaannya tanpa mengetahui
keadaan proses lainnya. Deadlock akan terjadi karena semua proses
menunntut haknya untuk dapat memasuki bagian kritisnya. Proses
menyetel flagnya untuk mengindikasikan keinginannya untuk masuk ke
bagian kritisnya. Usaha ini hampir sama dengan solusi yg benar namun
masih mengandung cacat. Mutual exlusion masih dijamin, dengan
menggunakan pemikiran yang sama seperti pada usaha ketiga.

e) Solusi yang benar


P1 akan dalam beberapa titik memeriksa bahwa akan kembali ke
pemeriksaan kembali dan men-set flag salah, membolehkan P0 untuk
dilanjutkan setelah P0untuk dilanjutkansetelah P0 telah digunakan
dalam bagian kritis akan men-set flaguntuk mentransfer hak untuk
melaksanakn ke P1.

2. Algoritma Peterson
Algoritma Dekker mampu menyelesaikan masalah mutual excluesion namun
dengan menggunakan program agak rumit yang sulit dipahami dan
kebenarannya sangat sulit dibuktikan. Peterson(PETE81) telah
memberikan solusi yangg singkat dan baik sekali. Flag variable array global
mengindikasikan bahwa posisi setiap proses dalam kaitannya dengan
mutual exclusion dan variable global turn memecahkan konflik yang
simultan. Bahwa mutual exclusion dijaga dapat dibuktian dengan mudah.
Apabila P0 itu menyetel flag(0)-nya ke true, P1 tidak bisa masuk bagian
krisisnya. Apabila P1 telah ada di dalam bagiannya, maka :
1. P1 tidak berminat memasuki bagian krisinya. Hal itu tidak mungkin
terjadi karena P1 mengimplemtasikan flag (1) = false
2. P1 sedang menunggu bagian kritisnya. Hal ini juga tidak mungkin
terjadi karna apabila turn=1, P1 dapat memasuki bagian kritisnya.
3. P1 sedangmenggunakan bagian kritisnya secara berulang-ulangdan
kemudian memonopoli akses ke bagian kritis itu. Hal ini tidak
mungkin terjadi, karena P1 mempunyai kewajiban memberikan
kesempatan kepada P0 dengan cara menyetel turn menjadi 0
sebelum memasuki bagian kritisnya.
C. MUTUAL EXCLUSION : DUKUNGAN HARDWARE
1. Interrup Disabling
Dalam sebuah mesin uniprosesor, proses konkuren tidak dapat
ditumpang-tindihkan. Proses tersebut hanya dapat digilirkan saja.disampng
itu suatu proses akan terus menerus berjalan sampai memanggiln layanan
sistem operasi atau sampai diinterupsi. Karna itu untuk menjamin mutual
exclusion maka penting untuk mencegah proses untuk mengizinkan dan
tidak mengizinkan interupsi.

2. Instruksi Mesin Khusus


Di dalam suatu konfigurasi multiprocessor, beberapa prosesor berbagi-
pakai akses kesebuah memori utama umum. Pada konfigurasi seperti itu,
tidak ada hubungan master/slave; melainkan prosesor tersebut berlaku
sebagai hubungan mitra(peer) yang independen. Tidak terdapat mekanisme
interupsi di antara prosesor yang mana dapat dijadikan dasar mutual
exclusion.
Pada tingkatan hardware, akses ke lokasi memori tidak mencakup akses
lainnya ke lokasi yang sama itu. Dengan menjadikannya sebagai dasar,
para perancang telah mengajukan beberapa instruksi mesin yang
melaksanakan aksinya secara atomic, seperti pembacaan dan penulisan
atau pembacaan daan pengujian, sebuah lokasi memori yang memiliki satu
siklus pembacaan instruksi. Karena dilakukan dalam bentuk instruksi
tunggal, aksi-aksi itu tidak akan terganggu oleh instruksi lainnya.
a) Instruksi Tes dan Set
Instruksi tes dan set dapat ditentukan :
Instruksi itu menguji nilai argumentasinya, i. Jika nilainya sama
dengan 0, nilai itu akan diganti dengan 1 dan di kembalikan sebagai
true. Bila sama dengan 1, nilai tersebut tidak akan di ubah dan di
kembalikan sebagai false. Fungsi test set ini dilaksanakan secara
atomic, yaitu, tidak akan di interupsi.

b) Instruksi Exchange
Instruksi exchange dapat ditentukan : Procedure exchange(var
r:register;var m:memori);

Instruksi tersebut mempertukarkan isi register dengan isi lokasi


memori. Selama eksekusi instruksi berlangsung, access ke lokasi
memori untuk instruksi lainnya yang mereferensi ke lokai itu.

c) Sifat-sifat Pendekatan Intruksi Mesin


Penggunaan intruksi mesin khusus untuk melaksanakan mutual
exclusion memiliki beberapa kelebihan:

 Dapat diterapkan pada sembarang jumlah proses baik pada sistem


prosesor tunggal maupun sistem prosesor jamak yang berbagi-
pakai memori utama.

 Cukup sederhana sehingga mudah untuk diverifikasi.

 Dapat digunakan untuk mendukung beberapa bagian kritis; setiap


bagian kritis dapat diterapkan oleh variabel miliknya sendiri.

Namun, terdapat juga beberapa kekurangan, diantaranya :

 Adanya busy-waiting sehingga, pada saat suatu proses


sedang menunggu akses ke bagian kritisnya, proses tersebut
menghabiskan waktu prosesor.

 Mungkin terjadi starvatior. Pada saat sebuah proses


meninggalkan bagian krisisnya dan lebih dari sebuah proses
berada dalam keadaan menunggu, pemilihan proses yang
menunggunya bersifat sembarang. Dengan demikian,
sebagian proses akan selalu ditolak untuk mendapatkan
akses.
 Dapat terjadi deadlock. Prosesor P1 mengeksekusi untruksi
khusus (misalnya, testset, exchange) dan memasuki bagian
krisisnya. Kemudian P1 diintrupsi agar menyerahkan
prosesor ke P2, yang memiliki prioritas yang lebih tinggi.
Sekarang apabila P2 berusaha untuk menggunakan sumber
daya yang sama dengan P1, P2 akan ditolak aksesnya
karena adanya mekanisme mutual exclusion. Jadi P2 akan
menuju dalam loop busy-waiting. Namun, P1 tidak akan
pernah dikirimkan (diproses) karena memiliki prioritas yang
lebih rendah dibandingkan dengan proses yang sudah siap
(ready) lainnya yaitu P2.

D. SEMAPHORE
Prinsip dasarnya : dua proses atau lebih dapat berkooperasi dengan
menggunakan sinyal sederhana, sedemikian rupa sehingga suatu proses dapat
dipaksa berhenti pada posisi tertentu sampai proses tersebut menerima sinyal
tertentu. Persyaratan koordinasi yang kompleks dapat dipenuhi oleh struktur
sinyal yang sesuai. Pada pensinyalan, digunakan secara khusus yang disebut
semaphore. Untuk mengirimkan sinyal melalui semaphore s, proses melakukan
eksekusi primitive signal (s); apabila sinyal yang dimaksud belum ditransmisikan,
maka proses akan dihetikan sampai transmisi itu terjadi.
Untuk mencapai efek yang ditentukan, kita dapat melihat semaphore
sebagai variabel yang mempunyai nilai integer pada tiga operasi berikut ini :

1. Semaphore dapat diinisialisasikan sebagai nilai tidak negatif.


2. Operasi wait menurunkan nilai semaphore. Jika nilai menjadi negatif,
maka proses eksekusi wait diblok.

3. Operasi signal meningkatkan nilai semaphore. Jika nilainya bukan


positif, maka proses yang diblok oleh operasi wait dibuka blocknya.
Selain ketiga operasi ini, tidak terdapat cara lain untuk meneliti ataupun
memanipulasi semaphore, yaitu :
 Untuk semaphore dan semaphore biner, antrean digunakan untuk
menahan proses menunggu pada semaphore. Defenisi ini tidak
mengharuskan tingkatan yang prosesnya digeser dari antrean seperti
itu.
 Polese satu per satu yang keluar yang adil: proses yang telah diblokir
paling lama dikeluarkan dari antrean:
 proses yang telah memblok yang tepanjang dikeluarkan dari antrean
pertama sebuah semaphore yang defenisi termasuk dalam
kebijaksanaan ini dikenal sebagai semaphore kuat
1. Mutual Exclusion
Algoritma berikut ini menunjukan sebuah solusi langsung bagi
masalah mutual exclusion yang menggunakan semaphore s
(bandingkan dengan gambar 5.1) Anggap terdapat n buah proses, yang
ditetentukan dalam bentuk array P(i). Di dalam setiap proses, wait (s)
dieksekusi sesaat sebelum bagian kritisnya. Apabila nilai s menjadi
negatif, proses akan dihentikan. Apabila nilai s sama dengan 1, nilai itu
akan diturunkan menjadi 0 dan proses segera memasuki bagian
kritisnya; karena s tidak positif lagi, tidak akan ada proses lainnya yang
dapat memasuki bagian kritisnya.

Gambar 5.1 Contoh dari mekanisme semaphore Listing Algoritma mutual


exclusion dengan semaphore s
Semaphore di beri nilai awal 1. Jadi, proses pertama yang
mengesekusi wait akan segera memasuki bagian kritisnya, menyetel
nilai s menjadi 0. Semua proses lainnya yang mencoba memasuki
bagian kritisnya akan mendapatkan bagian kritis itu dalam keadaan
sibuk dan kemudian akan di blokir, menyetel nilai s menjadi -1. Sejumlah
proses dapat mencoba masuk; setiap usaha yang gagal itu akan
menurunkan nilai s lebih lanjut, pada saat proses yang pada awalnya
berada di bagian kritis akan menuju keluar, maka s dinaikan nilainya
dan salah satu proses yang di blokir (apabila ada) akan di keluarkan dari
antrian proses proses yang di blokir yang berkaitan dengan semaphore
dan disimpan di keadaan Ready. Pada saat proses itu di jadwalkan lagi
oleh sistem operasi, maka proses tersebut dapat masuk ke bagian kritis.
Dalam contoh ini tiga proses (A,B,C) mengakses sebuah proses
yang terproteksi oleh kunci (lock) semaphore. Proses A mengesekusi
wait (lock); karena semaphore memiliki nilai 1 dalam suatu waktu dari
operasi wait. A dapat secara langsung memasuki daerah kritis dan
semaphore mengambil nilai 0. Sementara A berada dalam daerah kritis,
kedua B dan C melakukan sebuah operasi tunggu dan block di tunda
keberadaan dari semaphore. Ketika A ada dalam daerah kritis dan
melakukan signal (lock),B, yang merupakan proses yang pertama dalam
antrean dapat sekarang memasuki daerah kritisnya.
Program yang terdapat pada Gambar 5.2 dapat sama baiknya
menangani persyaratan yang mengizinkan lebih dari suatu proses
berada dalam bagian kritisnya pada suatu saat tertentu. Persyaratan ini
akan di penuhi cukup dengan memberi nilai awal tertentu kepada
semaphore.
Jadi, setiap saat, nilai s count dapat di interpretasikan sebagai
berikut:
 s.count (besar sama) 0; s.count adalah jumlah proses yang dapat
mengesekusi wait (s) tanpa suspend [Apabila tidak aada signal (s) di
eksekusi dalam waktu itu]
 s.count <0; magnitude s.count adalah jumlah proses yang terhenti di
dalam s.queue.

Gambar 5.2 Proses Mengakses Shared data terproteksi oleh Sebuah


Semaphore.

2. Masalah Producer/Consumer
Masalah yang paling umum yang dihadapi dalam proses proses
kongkuren ; masalah produser/consumer. Pernyataan umumnya adalah:
terdapat suatu proses atau lebih yang membuat beberapa jenis data
(record caracter) dan menempatkannya di dalam buffer. Terdapat suatu
consumer yang mengambil item item tersebut dari buffer pada saat
tertentu. Sistem terpaksa mencegah terjadinya tumpang tindih pada
operasi buffer. Dengan kata lain hanya satu agen (Producer atau
consumer) yang dapat mengakses buffer pada suatu saat tertentu. Kita
akan meninjau beberapa solusi bagi masalah ini untuk menjelaskan baik
kelebihan atau pun kekurangan yang di miliki semaphore.
Gambar 5.3 menjelaskan struktur buffer b. Produser dapat
menghasilkan item dan menyimpannya di dalam buffer menurut
kecepatanya. Setiap waktu, suatu indeks (in) ke dalam bufffer di naikan.
Consumer terus melanjutkan kegiatannya dengan cara yang sama,
namun harus yakin bahwa dirinya tidak mencoba melakukan
pembacaan terhadap buffer yang kosong.
Karena itu, consumer perlu meyakinkan bahwa produser telah
melakukan kegiatanya lebih dahulu daripada dirinya (in > out) sebelum
melakukan pembacaan.

Gambar 5.3 Buffer tak Terhingga bagi masalah produser/ Consumer

3. Implementasi semaphore
Penting sekali bahwa operasi wait dan sinyal diimlementasikan sebagai
primitive atomik, salah satu caranya adalah dengan mengimplementasikan
operasi tersebut dalan hardware dan firmware. Untuk menutupi
kekurangannya, diberikan pula beberapa teknik lainnya. Masalah penting yang
dihadapi adalah masalah muntual exclusion : pada suatu saat tertentu hanya
satu proses yang dapat memanipulasi satu semaphore baik dengan operasi
siyal maupun operasi wait. Jadi, software apa pun, misalnya algoritma Dekker
atau algoritma Peterson,dapat digunakan: hal ini akan menyebabkan terjadinya
overhead pengolahan yang cukup berpengaruh.

Gambar 5.4 Buffer sikular hingga untuk Persoalan produser/komsumer


A. KONGKURENSI
Pengertian
Kongkurensi merupakan landasan umum perancangan sistem operasi. Proses-proses
disebut kongkurensi jika proses-proses (lebih dari satu proses) berada pada saat yang
sama. Saat yang sama ini maksudnya proses-proses tersebut berlangsung pada waktu
yang sama dan menggunakan sumber daya yang sama.
Masalah-masalah Akibat Kongkurensi
a. Mutual exclusion (pengeluaran timbal balik)
Merupakan kondisi dimana terdapat sumber daya yang tidak dapat dipakai bersama pada
waktu yang bersamaan (misalnya : printer, disk drive). Kondisi demikian disebut sumber
daya kritis, dan bagian program yang menggunakan sumber daya kritis disebut critical
region / section. Hanya satu program pada satu saat yang diijinkan masuk ke critical
region. Pemrogram tidak dapat bergantung pada sistem operasi untuk memahami dan
memaksakan batasan ini, karena maksud program tidak dapat diketahui oleh sistem
operasi. Pentingnya mutual exclusion adalah jaminan hanya satu proses yang
mengakses sumber daya pada suatu interval waktu.Pemaksaan atau pelanggaran mutual
exclusion menimbulkan :
Ø Deadlock
Ø Starvation
b. Deadlock (buntu); merupakan kondisi terparah karena banyak proses dapat terlibat dan
semuanya tidak dapat mengakhiri prosesnya secara benar.
c. Starvation(kelaparan); adalah keadaan dimana pemberian akses bergantian terus-
menerus, dan ada suatu proses yang tidak mendapatkan gilirannya.
d. Sinkronisasi; adalah proses pengaturan jalannya beberapa proses pada saat yang
bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsitensi data
karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk
mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan
terhindar dari deadlock dan starvation. Sinkronisasi umumnya dilakukan dengan bantuan
perangkat sinkronisasi. Penyelesaian terhadap masalah ini sangat penting karena
perkembangan teknologi sistem komputer menuju ke sistem multiprocessing, terdistribusi
dan paralel yang mengharuskan adanya proses-proses kongkuren.

Prinsip-prinsip Kongkurensi
Kongkurensi merupakan kegiatan yang berhubungan dengan :
Ø Alokasi waktu pemroses untuk proses-proses yang aktif.
Ø Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
Ø Komunikasi antar proses.
B. MUTUAL EXCLUSION
Pengertian
Merupakan kondisi dimana terdapat sumber daya yang tidak dapat dipakai bersama pada
waktu yang bersamaan (misalnya : printer, disk drive) maka terdapat jaminan hanya satu
proses yang mengakses sumber daya pada satu interval tertentu.
Critical Section
Beberapa proses memiliki suatu segmen kode dimana jika segmen itu dieksekusi, maka
proses-proses itu dapat saling mengubah variabel, mengupdate suatu tabel, menulis ke
suatu file, dan lain sebagainya, dan hal ini dapat membawa proses tersebut ke dalam
bahaya race condition. Segmen kode yang seperti inilah yang disebut Critical Section.
Sedangkan race condition sendiri adalah kondisi dimana ada beberapa proses yang
memanipulasi suatu data secara kongkuren, sehingga data tersebut tidak sinkron lagi.
Nilai akhirnya akan tergantung pada proses mana yang terakhir dieksekusi. Maka
dibutuhkan sinkronisasi.
Metode-metode dan Algoritma untuk Menjamin Mutual Exclusion
a. Disabling interrupt / mematikan interupsi
Dengan cara mematikan interupsi yang masuk pada saat proses sedang berada pada
critical section-nya. Cara ini kadang cukup berguna untuk kernel tetapi tidak untuk
user. Dan cara inipun tidak terlalu baik untuk CPU yang jumlahnya lebih dari satu,
dimana disable interrupt hanya mengenai CPU yang sedang menjalankan proses itu
dan tidak berpengaruh terhadap CPU lain
b. Lock variables
Setiap proses yang akan mengakses ke critical section-nya harus meng-cek lock
variable. Jika 0 berarti proses dapat memasuki critical section-nya dan jika 1 maka
proses harus menunggu sampai lock variable = 0. Kelemahannya adalah 2 proses
masih dapat memasuki critical section-nya pada saat yang bersamaan. Sewaktu satu
proses meng-cek lock variable = 0, pada saat akan men-set 1 ada interupsi untuk
melaksanakan proses lain yang juga ingin memasuki critical sectionnya, maka akan
terjadi race condition.
c. Strict alternation
Dengan mengamati variable turn untuk menentukan siapa yang akan memasuki
critical section-nya bukanlah ide yang baik jika proses lebih lambat dari yang lain.
d. Peterson’s Solution
Proses tidak akan diteruskan sampai while terpenuhi, bila interested[other] = TRUE,
maka proses akan menunggu sampai FALSE.
Kelemahannya : jika proses memanggil enter_region-nya secara hampir bersamaan,
yang disimpan di turn adalah data yang ditulis terakhir.
e. Test and Set Lock Instruction / Instruksi TSL
Dengan bantuan hardware, menentukan siapa yang berhak memasuki critical_region
(section)
C. SINKRONISASI
Pengertian
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang
bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsitensi data
karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk
mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan
terhindar dari deadlock dan starvation. Sinkronisasi umumnya dilakukan dengan bantuan
perangkat sinkronisasi. Penyelesaian terhadap masalah ini sangat penting karena
perkembangan teknologi sistem komputer menuju ke sistem multiprocessing, terdistribusi
dan paralel yang mengharuskan adanya proses-proses kongkuren.
Prinsip Kerja Call Sleep Dan Call Wake Up Pada Kasus Produser Dan Consumer
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya
produser, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil informasi
dari buffer. Ini juga dapat digeneralisasi untuk masalah yang memiliki m buah produsen
dan n buah konsumen, tetapi kita hanya akan memfokuskan kasus dengan satu
produsen dan satu konsumen karena diasumsikan dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi
buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan
dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari buffer.
Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa buffer
sedang kosong, maka konsumen istirahat (sleep) sampai produsen meletakkan barang
pada buffer dan membangunkan (wake up) consumer.
Untuk mengetahui jumlah barang di buffer, kita membutuhkan sebuah variabel
kita namakan count. Jika jumlah maksimum dairi barang yang dapat ditampung buffer
adalah N, kode produser pertama kali akan mencoba untuk mengetahui apakah nilai
count sama dengan nilai N. Jika itu terjadi maka produsen akan istirahat (sleep), tetapi
jika nilai count tidak sama dengan N, produsen akan terus menambahkan barang dan
menaikkan nilai count.

Anda mungkin juga menyukai