Kelompok 2
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.
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:
//counter++
register1 = counter
register1 = register1 + 1
counter = register1
//counter--
register2 = counter
register2 = register2 - 1
counter = register2
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.
C. Semaphore
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:
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