Anda di halaman 1dari 21

Laporan Hasil

Mata Kuliah Sistem Operasi

Kelompok 2

Program Studi Sistem Informasi


Fakultas Ilmu Komputer
Universitas Muhammadiyah Riau
2018
Daftar Anggota Kelompok

Peran
No Nama Deskripsi Tugas dan Tanggungjawab
(Ketua/Anggota)

KETUA

ANGGOTA

ANGGOTA

ANGGOTA

ANGGOTA

ANGGOTA
Riwayat Perubahan Dokumen

Jenis
Tanggal Perubahan
Perubahan Editor
Perubahan (Mayor/Mino
r)
Kata Pengantar
Puji dan syukur ke hadirat Tuhan Yang Maha Kuasa atas segala rahmat yang
diberikan-Nya sehingga tugas Makalah yang berjudul “” ini dapat saya
selesaikan.
Makalah ini saya buat sebagai kewajiban untuk memenuhi tugas. Dalam
kesempatan ini, penulis menghaturkan terimakasih yang dalam kepada semua
pihak yang telah membantumenyumbangkan ide dan pikiran mereka demi
terwujudnya makalah ini.
Akhirnya saran dan kritik pembaca yang dimaksud untuk mewujudkan
kesempurnaan makalah ini penulis sangat hargai.

 Pekanbaru, Mei 2018

     Penyusun
Daftar Isi
BAB I
 PENDAHULUAN

   Latar Belakang
Sinkornisasi di perlukan untuk menghindari terjadinya ketidak konsistenan
data akibat adanya akses secara konkuren. Proses-Proses tersebut disebut konkuren
jika Proses itu ada dan berjalan pada waktu yang bersamaan. istilah Sinkronisasi
sering terdengar ketika kita menggunakan alat elektronik. Sinkronisasi sendiri
berasal dari bagian sistem operasi. Sistem operasi adalah perangkat lunak sistem
yang bertugas untuk melakukan kontrol dan manajemen perangkat keras serta
operasi-operasi dasar sistem, termasuk menjalankan perangkat lunak aplikasi seperti
program-program pengolah kata dan peramban web.
Jadi, agar sinkronisasi bisa berjalan, sangat di butuhkan yang namanya sistem
operasi. Dalam kehidupan sehari-hari tanpa di sadari, kita sering melakukan
sinkronisasi dalam berbagai hal. Mulai pada saat menggunakan smartphone,
komputer dan lain sebagainya.

Rumusan Masalah
 Apa Itu Sinkronisasi?
 Apa saja masalah dalam sinkronisasi?
 Apa itu problem klasik saat sinkronisasi pada S.O reader
writer?
 Apa itu proses penjadwalan di prosesor pada MFQ?

Manfaat
Manfaat yang di dapat dari pembutan makalah tentang Interprise Architecture adalah
agar dapat di pergunakan untuk mempelajari lebih dalam tentang Interprise
Architecture dan juga untuk pembelajaran dalam mata kuliah “”. Pembelajaran yang
kita dapat dari makalah ini :
1. Mengetahui apa itu Apa sinkronisasi
2. Mengetahui Apa-apa saja masalah dalam sinkronisasi dan solusinya?
3. Mengetahui apa saja problem klasik saat sinkronisasi pada s.o
reader writer
4. Mengetahui Apa itu proses penjadwalan di prosesor pada MFQ
BAB II
Pembahasan

2.1 Sinkronisasi
Sinkronisasi merupakan suatu proses yang mengatur jalannya beberapa proses
pada waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi
inconsitensi data akibat adanya akses data yang memberikan hasil bagus dan sesuai
dengan apa yang diharapkan.
2.2 Tujuan Sinkronisasi
Tujuan untuk menghindari terjadinya inkonsitensi data yang di akibatkan
pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan jalannya
proses sehingga dapat berjalan dengan baik dan sesuai dengan apa yang di harapkan.
2.3 Masalah Dalam Sinkronisasi
A. Race Condition
Adalah situasi dimana beberapa proses mengakses dan memanipulasi data
bersama pada saat bersama. Dimana untuk menentukan nilai akhir dari data bersama
tersebut tergantung pada proses yang terakhir selesai. Untuk mencegah terjadinya
race condition harus mensinkronisasi proses-proses yang berjalan secara bersamaan.
Dalam system operasi lainnya proses yang berjalan secara bersamaan
digunakan untuk membagi beberapa penyimpanan umum yang dapat melakukan
berbagai proses yaitu proses baca(read) dan proses tulis(write).
1. Contoh Race Condition
1.int counter = 0;
2.//Proses yang dilakukan oleh produsen
3.item nextProduced;
4.while (1) {
5.while (counter == BUFFER_SIZE) { ... do nothing ... }
6.buffer[in] = nextProduced;
7.in = (in + 1) % BUFFER_SIZE;
8.counter++;
9.}
10.//Proses yang dilakukan oleh konsumen
11.item nextConsumed;
12.while (1) {
13.while (counter == 0) { ... do nothing ... }
14.nextConsumed = buffer[out] ;
15.out = (out + 1) % BUFFER_SIZE;
16.counter--;
17.}

Pada program di atas, terlihat bahwa terdapat variabel counter yang diinisialisasi
dengan nilai 0, dan ditambah 1 setiap kali terjadi produksi serta dikurangi 1 setiap
kali terjadi konsumsi. Pada bahasa mesin, baris kode counter++ dan counter--
diimplementasikan seperti di bawah ini:

2. Contoh Race Condition dalam bahasa mesin

//counter++
register1 = counter
register1 = register1 + 1
counter = register1

//counter--
register2 = counter
register2 = register2 - 1
counter = register2

Jika perintah counter++ dan counter-- berusaha mengakses nilai counter


secara konkuren, maka nilai akhir dari counter bisa salah. Hal ini tidak berarti
nilainya pasti salah, tapi ada kemungkinan untuk terjadi kesalahan. Contoh urutan
eksekusi baris kode tersebut yang mengakibatkan kesalahan pada nilai akhir counter:

3..Contoh Program yang memperlihatkan Race Condition

2//misalkan nilai awal counter adalah 2

1.produsen: register1 = counter (register1 = 2)

2.produsen: register1 = register1 + 1 (register1 = 3)

3.konsumen: register2 = counter (register2 = 2)

4.konsumen: register2 = register2 - 1 (register2 = 1)

5.konsumen: counter = register2 (counter = 1)

6.produsen: counter = register1 (counter = 3)

Status akhir dari counter seharusnya adalah 0, tapi kalau urutan pengeksekusian
program berjalan seperti di atas, maka hasil akhirnya menjadi 3. Perhatikan bahwa
nilai akhir counter akan mengikuti eksekusi terakhir yang dilakukan oleh komputer.
Pada program di atas, pilihannya bisa 1 atau 3. Perhatikan bahwa nilai dari counter
akan bergantung dari perintah terakhir yang dieksekusi. Oleh karena itu maka kita
membutuhkan sinkronisasi yang merupakan suatu upaya yang dilakukan agar proses-
proses yang saling bekerjasama dieksekusi secara beraturan demi mencegah
timbulnya suatu keadaan race condition.
Gambar 18.1. Ilustrasi program produsen dan konsumen
Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan
memori bersama, berkas bersama, dan sumber daya lain yang digunakan secara
bersama-sama adalah menemukan beberapa jalan untuk mencegah lebih dari satu
proses melakukan proses tulis dan baca kepada data yang sama pada saat yang sama.
Dengan kata lain, kita membutuhkan mutual exclusion, sebuah jalan yang menjamin
jika sebuah proses sedang menggunakan variabel atau berkas yang digunakan
bersama-sama, proses lain akan dikeluarkan dari pekerjaan yang sama.
Cara untuk menghindari race condition adalah kita harus dapat menjamin
bahwa jika suatu proses sedang menjalankan critical section, maka proses lain tidak
boleh masuk ke dalam critical section tersebut. Critical section dijelaskan dibawah.

B. Critical Section
Critical Section adalah bagian dari suatu proses yang akan melakukan akses
dan manipulasi data.
Ketika sebuah proses sedang dijalankan dalam critical section nya, tidak ada
proses lain yang boleh dijalankan dalam critical section tersebut, karena akan
menyebabkan keadaan mutually exclusive.
Mutually exclusive yakni keadaan terjadinya akses resources yang sama
disaat yang bersamaan. Mutually exclusive memerlukan kondisi tertentu agar dapat
terpenuhi.
Critical section biasanya digunakan saat program multithreading, dimana
program tersebut terdiri dari banyak thread, akan mengubah nilai dari variabel. Dalam
hal ini critical section diperlukan untuk melindungi variabel dari concurrent access
(pengaksesan program di saat yang bersamaan) yang dapat membuat nilai dari
variabel tersebut menjadi tidak konsisten.
Seperti yang telah kita ketahui bahwa proses dapat bekerja sendiri
(independent process) dan juga dapat bekerja bersama proses-proses yang lain
(cooperating process). Pada umumnya ketika proses saling bekerjasama (cooperating
process) maka proses-proses tersebut akan saling berbagi data. Pada saat proses-
proses berbagi data, ada kemungkinan bahwa data yang dibagi secara bersama itu
akan menjadi tidak konsisten dikarenakan adanya kemungkinan proses-proses
tersebut melakukan akses secara bersamaan yang menyebabkan data tersebut
berubah, hal ini dikenal dengan istilah Race Condition.
Oleh karena itu, dibutuhkan solusi yang tepat untuk menghindari munculnya
Race Condition.
Solusi tersebut harus memenuhi ketiga syarat berikut:
1. Mutual Exclusion
2. Progress
3. Bounded Waiting
Ada dua jenis solusi untuk memecahkan masalah critical section, yaitu:
a. Solusi Perangkat Lunak. Solusi ini menggunakan algoritma algoritma
untuk mengatasi masalah critical section.
b. Solusi Perangkat Keras. Solusi ini tergantung pada beberapa instruksi
mesin tertentu, misalnya dengan me-non-aktifkan interupsi, mengunci
suatu variabel tertentu atau menggunakan instruksi level mesin seperti
tes dan set.
Berikut ini algoritma-algoritma yang digunakan untuk mengatasi masalah
critical section:
1. Algoritma I
Algoritma I memberikan giliran kepada setiap proses untuk memproses
critical section-nya secara bergantian.
Asumsi yang digunakan disini setiap proses secara bergantian memasuki critical
section-nya.
Statement while(turn != 4) akan memeriksa apakah pada saat itu proses 4
mendapatkan turn, jika tidak maka proses 4 akan busy waiting(lihat kembali bahwa
printah while diakhiri dengan “;”). Jika ternyata pada saat itu merupakan giliran
proses 4 maka proses 4 akan mengerjakan critical section-nya. Sampai sini jelas
terlihat bahwa mutex terpenuhi! Proses yang tidak mendapatkan turn tidak akan dapat
mengerjakan critical section-nya dan turn hanya akan diberikan pada satu proses saja.
Setelah proses 4 selesai mengerjakan critical section maka turn diberikan pada
proses lainnya (turn= j, j merupakan proses selanjutnya yang dapat mengerjakan
critical section). Setelah turn-nya diberikan kepada proses lain, proses 4 akan
mengerjakan remainder section. Disini jelas terlihat bahwa syarat bounded waiting
jelas terpenuhi. Ingat asumsi yang digunakan dalam algoritma ini adalah setiap proses
secar bergantian memasuki critical section-nya, jika pada saat itu proses 4 ternyata
belum mau mengerjakan critical section-nya maka proses ke-j tidak akan
mendapatkan kesempatan untuk mengerjakan critical section walau saat itu
sebenarnya proses ke-j akan memasuki critical section. Artinya syarat progress tidak
terpenuhi pada algoritma ini.
2. Algoritma II
Masalah yang terjadi pada algoritma 1 ialah ketika di entry section terdapat
sebuah proses yang ingin masuk ke critical section, sementara di critical section
sendiri tidak ada proses yang sedang berjalan, tetapi proses yang ada di entry section
tadi tidak bisa masuk ke critical section. Hal ini terjadi karena giliran untuk
memasuki critical section adalah giliran proses yg lain sementara proses tersebut
masih berada di remainder section. Untuk mengatasi masalah ini maka dapat diatasi
dengan merubah variabel trun pada algoritma pertama dengan array
Boolean flag [2];
Elemen array diinisialisasi false. Jika flag[i] true, nilai tersebut menandakan
bahwa Pi ready untuk memasuki critical section. Pada algoritma ini. hal pertama yang
dilakukan ialah mengeset proses Pi dengan nilai True, ini menandakan bahwa Pi
ready untuk masuk ke critical section. kemudian, Pi memeriksa apakah Pj tidak ready
untuk memasukui critical section. Jika Pj ready, maka Pi menunggu sampai Pj keluar
dari critical section (flag[j] bernilai false). Ketika keluar dari critcal section, Pi harus
merubah nilai flag[i] menjadi false agar prores lain dapat memasuki critical section.
Contoh:
Pada algoritma ini, kriteria Mutual-exclusion terpenuhi, tetapi tidak
memenuhi kriteria progress. Ilustrasinya seperti di bawah ini.

T0 : Po set flag [0] = true


T1 : Po set flag [1] = true
Dari ilustrasi diatas terlihat bahwa algoritma ini memungkinkan terjadinya
nilai true untuk kedua proses, akibatnya tidak ada proses yang akan berhasil
memasuki critical section. Jadi untuk algoritma 2 masih terdapat kelemahan, seperti
yang terjadi di atas.
3. Algoritma III
Idenya berasal dari algoritma 1 dan 2. Algoritma 3 mengatasi kelemahan pada
algoritma 1 dan 2 sehingga progres yang diperlukan untuk mengatasi critical section
terpenuhi.
Algoritma III ditemukan oleh G.L. Petterson pada tahun 1981 dan dikenal
juga sebagai Algoritma Petterson. Petterson menemukan cara yang sederhana untuk
mengatur proses agar memenuhi mutual exclusion. Algoritma ini adalah solusi untuk
memecahkan masalah critical section pada dua proses. Ide dari algoritma ini adalah
menggabungkan variabel yang di- sharing pada Algoritma I dan Algoritma II, yaitu
variabel turn dan variabel flag.
Sama seperti pada Algoritma I dan II, variabel turn menunjukkan giliran proses mana
yang diperbolehkan memasuki critical section dan variabel flag menunjukkan apakah
suatu proses membutuhkan akses ke critical section atau tidak. Awalnya flag untuk
kedua proses diinisialisai bernilai false, yang artinya kedua proses tersebut tidak
membutuhkan akses ke critical section. Kemudian jika suatu proses ingin memasuki
critical section, ia akan mengubah flag-nya menjadi true (memberikan tanda bahwa ia
butuh critical section) lalu proses tersebut memberikan turn kepada lawannya. Jika
lawannya tidak menginginkan critical section (flag-nya false), maka proses tersebut
dapat menggunakan critical section, dan setelah selesai menggunakan critical section
ia akan mengubah flag-nya menjadi false. Tetapi apabila proses lawannya juga
menginginkan critical section maka proses lawan-lah yang dapat memasuki critical
section, dan proses tersebut harus menunggu sampai proses lawan menyelesaikan
critical section dan mengubah flag-nya menjadi false.
Misalkan ketika P0 membutuhkan critical section, maka P0 akan mengubah
flag[0] = true, lalu P0 mengubah turn= 1. Jika P1 mempunyai flag[1] = false,
(berapapun nilai turn) maka P0 yang dapat mengakses critical section.
Namun apabila P1 juga membutuhkan critical section, karena flag[1] = true
dan turn= 1, maka P1 yang dapat memasuki critical section dan P0 harus menunggu
sampai P1 menyelesaikan critical section dan mengubah flag[1] = false, setelah itu
barulah P0 dapat mengakses critical section.
Bagaimana bila kedua proses membutuhkan critical section secara
bersamaan? Proses mana yang dapat mengakses critical section terlebih dahulu?
Apabila kedua proses (P0 dan P1) datang bersamaan, kedua proses akan menset
masing-masing flag menjadi true (flag[0] = true dan flag[1] = true), dalam kondisi ini
P0 dapat mengubah turn = 1 dan P1 juga dapat mengubah turn = 0. Proses yang dapat
mengakses critical section terlebih dahulu adalah proses yang terlebih dahulu
mengubah turn menjadi turn lawannya. Misalkan P0 terlebih dahulu mengubah turn=
1, lalu P1 akan mengubah turn= 0, karena turn yang terakhir adalah 0 maka P0-lah
yang dapat mengakses critical section terlebih dahulu dan P1 harus menunggu.
Algoritma III memenuhi ketiga syarat yang dibutuhkan. Syarat progress dan
bounded waiting yang tidak dipenuhi pada Algoritma I dan II dapat dipenuhi oleh
algoritma ini karena ketika ada proses yang ingin mengakses critical section dan tidak
ada yang menggunakan critical section maka dapat dipastikan ada proses yang bisa
menggunakan critical section, dan proses tidak perlu menunggu selamanya untuk
dapat masuk ke critical section.
4. Algoritma Tukang Roti
Algoritma ini didasarkan pada algoritma penjadwalan yang biasanya
digunakan oleh tukang roti, dimana urutan pelayanan ditentukan dalam situasi yang
sangat sibuk. Algoritma ini dapat digunakan untuk memecahkan masalah critical
section untuk n buah proses, yang diilustrasikan dengan n buah pelanggan. Ketika
memasuki toko, setiap pelanggan menerima sebuah nomor. Sayangnya, algoritma
tukang roti ini tidak dapat menjamin bahwa dua proses (dua pelanggan) tidak akan
menerima nomor yang sama. Dalam kasus di mana dua proses menerima nomor yang
sama, maka proses dengan nomor ID terkecil yang akan dilayani dahulu. Jadi, jika Pi
dan Pj menerima nomor yang sama dan i < j, maka Pi dilayani dahulu. Karena setiap
nama proses adalah unik dan berurut, maka algoritma ini dapat digunakan untuk
memecahkan masalah critical section untuk n buah proses.
Struktur data umum algoritma ini adalah:
boolean choosing[n];
int number [n];
Awalnya, struktur data ini diinisialisasi masing-masing ke false dan 0, dan
menggunakan notasi berikut:
– (a, b) < (c, d) jika a < c atau jika a= c dan b < d
– max(a0, …, an-1) adalah sebuah bilangan k, sedemikian sehingga k >= ai
untuk setiap i= 0, …, n – 1
Dengan demikian, diketahui bahwa Algoritma I dan II terbukti tidak dapat
memecahkan masalah critical section untuk dua proses karena tidak memenuhi syarat
progress dan bounded waiting. Algoritma yang dapat menyelesaikan masalah critical
section pada dua proses adalah Algoritma III. Sedangkan untuk masalah critical
section pada n-buah proses dapat diselesaikan dengan menggunakan Algoritma
Tukang Roti.

C. Semaphore

Semaphore merupakan 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.
2.4 Problem Klasik Saat Sinkronisasi Pada S.O Reader Writer

Reader and Writer Problem Terdapat dua variasi pada masalah ini, yaitu :
1. seorang reader tidak perlu menuggu reader lain untuk selesai hanya karena
ada writer menunggu (reader memiliki prioritas lebih tinggi disbanding
dengan writer)
2. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain
yang bekerja (writer memiliki prioritas yang lebih tinggi) Jika terdapat writer
dalam critical section dan terdapat n reader yang menunggu, maka satu reader
akan antri di wrt dan n-1 reader akan antri di mutex. Jika writer mengeksekusi
signal(wrt), maka dapat disimpulkan bahwa eksekusi adalah menunggu reader
atau menunggu satu writer.
Variabel umum yang digunakan adalah
semaphore mutex, wrt;
Inisialisasi variable di atas adalah mutex = 1, wrt = 1, readcount = 0. Struktur
proses writer adalah:
2.6 Proses Penjadwalan Di Prosesor Pada MFQ
Penjadwalan MFQ ini merupakan Penjadwalan berprioritas dinamis,
Penjadwalan ini mencegah (mengurangi) banyaknya swapping dengan proses-proses
yang sangat banyak menggunakan pemroses (karena menyelesaikan tugasnya
memakan waktu lama) diberi jatah waktu (jumlah kwanta) lebih banyak dalam satu
waktu. Penjadwalan ini juga menghendaki kelas-kelas prioritas bagi proses-proses
yang ada. Kelas tertinggi berjalan selama satu kwanta, kelas berikutnya berjalan
selama dua kwanta, kelas berikutnya berjalan empat kwanta, dan seterusnya.
. Ketentuan yang berlaku adalah sebagai berikut :
 Jalankan proses-proses yang berada pada kelas prioritas tertinggi
 Jika proses telah menggunakan seluruh kwanta yang dialokasikan maka
proses itu diturunkan kelas prioritasnya
 Proses yang masuk untuk pertama kali ke sistem langsung diberi kelas
tertinggi
Proses yang masuk untuk pertama kali ke sistem langsung diberi kelas tertinggi.
Mekanisme ini mencegah proses yang perlu berjalan lama swapping berkali-kali dan
mencegah proses-proses interaktif yang singkat harus menunggu lama.
I. Penutup

Kesimpulan
Berdasarkan tulisan makalah yang kami buat diatas dapat kita simpulkan
beberapa hal sebagi berikut:
1. Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada
saat yang bersamaan. Tujuan utama sinkronisasi adalah menghindari
terjadinya inkonsistensi 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 atau starvation.
2. Masalah sinkronisasi pada sinkronisasi ada:

a) Race Condition yaitu situasi di mana beberapa proses


mengakses dan memanipulasi data bersama pada saat besamaan.
Nilai akhir dari data bersama tersebut tergantung pada proses
yang terakhir selesai
b) Crtical Section adalah bagian dari suatu proses yang akan
melakukan akses dan manipulasi data.
Ketika sebuah proses sedang dijalankan dalam critical section
nya, tidak ada proses lain yang boleh dijalankan dalam critical
section tersebut, karena akan menyebabkan keadaan mutually
exclusive.
c) Semaphore merupakan 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
3. Reader and Writer Problem Terdapat dua variasi pada masalah ini,
yaitu :
a. seorang reader tidak perlu menuggu reader lain untuk selesai hanya
karena ada writer menunggu (reader memiliki prioritas lebih tinggi
disbanding dengan writer)
b. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain
yang bekerja (writer memiliki prioritas yang lebih tinggi) Jika terdapat
writer dalam critical section dan terdapat n reader yang menunggu, maka
satu reader akan antri di wrt dan n-1 reader akan antri di mutex. Jika
writer mengeksekusi signal(wrt), maka dapat disimpulkan bahwa
eksekusi adalah menunggu reader atau menunggu satu writer.
4. Proses pPenjadwalan pada MFQ merupakan Penjadwalan berprioritas
dinamis, Penjadwalan ini mencegah (mengurangi) banyaknya swapping
dengan proses-proses yang sangat banyak menggunakan pemroses
(karena menyelesaikan tugasnya memakan waktu lama) diberi jatah
waktu (jumlah kwanta) lebih banyak dalam satu waktu.
II. Daftar Pustaka

 http://blog.unsri.ac.id/medik
 https://guruinformatika.blogspot.co.id/2015/04/makalah-
sinkronisasi-pada-sistem-operasi.html
 http://download.portalgaruda.org/article.php?
article=196390&val=6534&title=Masalah-Masalah
%20Klasik%20Sinkronisasi
 https://aristysaputri3.wordpress.com/sistem-
operasi/penjadwalan-proses/
 https://www.academia.edu/9271486/Makalah_Algoritma_Pe
njadwalan_Proses

Anda mungkin juga menyukai