Anda di halaman 1dari 24

BAB I

PENDAHULUAN
1.1 Latar Belakang
Perkembangan komputer sudah sangat pesat dan banyak digunakan dalam bidang
kehidupan. Sangat jarang pengguna komputer mengetahui bagaimana komputer memproses
permasalahan yang dihadapi pengguna. Seperti halnya tentang sistem operasi yang
merupakan interface antara pengguna dengan perangkat keras computer. Sehingga kita tidak
dirumitkan rincian-rincian pengoperasian perangkat keras.
Sistem operasi melakukan beragam tugas, salah satu tugas yang paling penting adalah
manajemen proses, dimana mengelola semua proses aktif dan mengalokasikan sumber daya
ke proses-proses itu sesuai kebijaksanaan yang diambil untuk memenuhi sasaran kinerja.
Untuk memutuskan proses yang harus berjalan, kapan dan selama berapa lama proses itu
berjalan maka diperlukan suatu teknik penjadwalan yang efektif.
Sinkronisasi juga bagian penting karena bisa menghindari sesuatu yang tidak
konsisten akibat data akses yang kurang akurat. Banyak proses yang mengakses satu data
pada saat yang bersamaan. Sehingga memungkinkan terjadinya ketidakkonsistenan data.
Untuk itulah, sinkronisasi proses dipelukan untuk menjaga agar data tersebut tetap konsisten.
1.2

Rumusan Masalah

a. Bagaimana Konsep Dasar Penjadwalan CPU dan sikronisasi proses ?


b. Bagaimana Kriteria Penjadwalan ?
c. Bagaimana Algoritma dan Penjadwalan berdasarkan dapat atau tidaknya suatu proses
diambil alih secara paksa?
d. Bagaimana solusi critical section dan syarat solusi crtical section?
e. Bagaimana metode dan pendekataan pada sinkronisasi perangkat ?
f. Bagaimana kinerja operasi semaphore ?
g. Bagaimana permasalahan-permasalahan klasik dalam sinkronisasi ?
1.3

Tujuan
a. Untuk mengetahui apa saja konsep dasar penjadwalan CPU dan sikronisasi proses ?
b. Untuk mengetahui apa saja kriteria penjadwalan ?

c. Untuk mengetahui bagaimana algoritma dan penjadwalan berdasarkan dapat atau


tidaknya suatu proses diambil alih secara paksa?
d. Untuk mengetahui bagaimana solusi critical section dan syarat solusi crtical section?
e. Untuk mengetahui metode dan pendekataan apa saja pada sinkronisasi perangkat ?
f. Untuk mengetahui bagaimana kinerja operasi semaphore ?
g. Untuk mengetahui permasalahan-permasalahan klasik dalam sinkronisasi ?

BAB II
PEMBAHASAN
2.1

Konsep Dasar
Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang

ada di dalam komputer. Dimana proses-proses tersebut berjalan dalam pola yang disebut
Siklus Burst. Penjadwalan bertugas memutuskan :

Proses yang harus berjalan.

Kapan dan selama berapa lama proses itu berjalan.


Penjadwalan CPU merupakan suatu konsep dasar dari multiprograming, multiprograming

bertujuan untuk memaksimalkan penggunaan CPU dengan cara mengatur alokasi waktu yang
digunakan oleh CPU, sehingga proses berjalan sepanjang waktu dan memperkecil waktu idle.
Penjadwalan CPU secara garis besar dibagi menjadi dua , yaitu Penjadwalan
Preemptive dan Penjadwalan Non Preemptive. Kriteria yang baik bagi suatu konsep
penjadwalan dan penjelasan mengenai dispatcher. Penjadwalan sangat penting dalam
menentukan performance sebuah komputer karena mengatur alokasi resource dari CPU untuk
menjalankan proses-proses di dalam komputer. Karena dengan adanya penjadwalan dari
CPU itu sendiri maka proses-proses tersebut akan mendapatkan alokasi resource dari CPU.
CPU Scheduler
Pada saat CPU menganggur, maka sistem operasi yang harus menyeleksi proses-proses
yang ada di memori utama,untuk di eksekusi dan mengalokasikan CPU untuk salah satu dari
proses tersebut. Seleksi semacam ini di sebut dengan short term scheduler(CPU scheduler).
1. Apabila proses berpindah dari keadaan ruuning ke waiting
2. Apabila proses berpindah dari keadaan ruuning ke ready
3. Apabila proses berpindah dari keadaan waiting ke ready
4. Apabila proses berhenti
Dispatcher
Dispatcher adalah suatu modul yang akan memberikan kontrol pada CPU terhadap
penyelesaian proses yang di lakukan selama short-term scheduling.

2.2

Kriteria Penjadwalan
2.2.1

Utilisasi

Penggunaan waktu CPU (CPU Time) seoptimal mungkin processor terpakai


terus menerus selama masih ada antrian ready. CPU utilization akan mempunyai range
dari 0 sampai 100 persen. Di sistem yang sebenarnya ia mempunyai range dari 40
sampai 100 persen.
2.2.2

Waiting time

Harus seminim mungkin. Merupakan durasi waktu yang dihabiskan suatu proses
dalam antrian ready selama siklus hidupnya. Algoritma penjadwalan CPU tidak
mempengaruhi waktu untuk melaksanakan proses tersebut atau M/K, itu hanya
mempengaruhi jumlah waktu yang dibutuhkan proses di antrian ready. Waiting time
adalah jumlah waktu yang dibutuhkan proses di antrian ready.
2.2.3

Throughput

Throughput adalah jumlah kerja yang dapat diselesaikan dalam satu unit waktu.
Cara untuk mengekspresikan throughput adalah dengan jumlah job pemakai yang
dapat dieksekusi dalam satu unit/interval waktu.
2.2.4

Turn Arround Time

Turn Arround Time adalah waktu yang dihabiskan dari saat program atau job
mulai masuk ke system sampai proses diselesaikan system. Waktu yang dimaksud
adalah waktu yang dihabiskan di dalam system, diekspresikan sebagai penjumlah
waktu eksekusi (waktu pelayanan job) dan waktu menunggu, yaitu: Turn Arround
Time = waktu eksekusi + waktu menunggu
2.2.5

Respon Time

Mempercepat (secepat dan sependek mungkin) waktu tanggap dengan pemakai


secara interaktif. Response time adalah waktu antara pengguna memberikan input
dengan SO memberikan output atau umpan balik ke pengguna. Sering sebuah proses
dapat memproduksi output di awal, dan dapat meneruskan hasil yang baru sementara
hasil yang sebelumnya telah diberikan ke pengguna. Ukuran lain adalah waktu dari
pengiriman permintaan sampai respon yang pertama diberikan. Ini disebut response
time, yaitu waktu untuk memulai memberikan respon, tetapi bukan waktu yang
dipakai output untuk respon tersebut.

2.3

Algoritma dan Penjadwalan


4444
2.3.1

Algoritma Nonpreemptive

Algoritma nonpreemptive adalah setiap proses yang sedang dieksekusi oleh CPU
tidak dapat di-interrupt oleh proses yang lain.
A. First In First Out (FIFO)
First In First Out (FIFO) merupakan penjadwalan tidak berprioritas. FIFO
adalah penjadwalan paling sederhana, yaitu proses-proses diberi jatah waktu pemroses
berdasarkan waktu kedatangan. Pada saat proses mendapat jatah waktu pemroses,
proses dijalankan sampai selesai.
Contoh : Ada tiga buah proses yang datang secara bersamaan yaitu pada 0 ms,
P1 memiliki burst time 24 ms, P2 memiliki burst time 3 ms, dan P3 memiliki burst
time 3 ms. Hitunglah waiting time rata-rata dan turnaround time( burst time + waiting
time) dari ketiga proses tersebut dengan menggunakan algoritma FCFS. Waiting time
untuk P1 adalah 0 ms (P1 tidak perlu menunggu), sedangkan untuk P2 adalah sebesar
24 ms (menunggu P1 selesai), dan untuk P3 sebesar 27 ms (menunggu P1 dan P2
selesai).
Gantt Chart Kedatangan Proses :

Urutan kedatangan adalah P1, P2 , P3; gantt chart untuk urutan ini adalah:
Waiting time rata-ratanya adalah sebesar(0+24+27)/3 = 17ms. Turnaround
time untuk P1 sebesar 24 ms, sedangkan untuk P2 sebesar 27 ms (dihitung dari awal
kedatangan P2 hingga selesai dieksekusi), untuk P3 sebesar 30 ms. Turnaround time
rata-rata untuk ketiga proses tersebut adalah (24+27+30)/3 = 27 ms
Kelebihan algoritma ini :

Efisiensi, sangat efisien.

Baik untuk sistem batch yang sangat jarang berinteraksi dengan pemakai.
5

Kekurangan algoritma ini :

Waktu tanggap sangat jelek, tidak cocok untuk sistem interaktif apalagi untuk
sistem waktu nyata.

Turn around time kurang baik.

Throughtput kurang baik. FIFO jarang digunakan secara mandiri, tetapi


dikombinasikan dengan skema lain.

Sangat tidak baik (tidak berguna) untuk sistem interaktif, karena tidak memberi
waktu tanggap yang baik.

Tidak dapat digunakan untuk sistem waktu nyata (real-time applications).

B. Shortest Job First (SJF)


Penjadwalan ini mengasumsikan waktu berjalannya proses sampai selesai
telah diketahui sebelumnya. Mekanismenya adalah menjadwalkan proses dengan
waktu jalan terpendek lebih dulu sampai selesai, sehingga memberikan efisiensi yang
tinggi dan turn around time rendah dan penjadwalannya tak berprioritas.
Contoh :
Terdapat empat proses (job) yaitu A,B,C,D dengan waktu jalannya masing-masing
adalah 8,4,4 dan 4 menit. Apabila proses-proses tersebut dijalankan, maka turn around
time untuk A adalah 8 menit, untuk B adalah 12, untuk C adalah 16 dan untuk D
adalah 20. Apabila keempat proses tersebut menggunakan penjadwalan shortest job
fisrt, maka turn around time untuk B adalah 4, untuk C adalah 8, untuk D adalah 12
dan untuk A adalah 20.
Kelebihan algoritma ini adalah memperhatikan rata-rata waktu respon terkecil,
maka sangat baik untuk proses interakif. Dan kekuranganya tidak mengetahui ukuran
job saat job masuk. Sehingga sulit untuk memprediksi burst time proses yang akan
dieksekusi selanjutnya.
C. Highest Ratio Next (HRN)
Highest Ratio Next merupakan strategi penjadwalan dengan prioritas proses
tidak hanya berdasarkan fungsi waktu layanan tetapi juga jumlah waktu tunggu
proses. Begitu proses mendapat jatah pemroses, proses berjalan sampai selesai.
Prioritas dinamis HRN dihitung berdasarkan rumus : Prioritas = (waktu
tunggu + waktu layanan ) / waktu layanan.
Kelebihan:
6

Karena waktu layanan muncul sebagai pembagi, maka job lebih pendek
berprioritas lebih baik

Karena waktu tunggu sebagai pembilang maka proses yang telah menunggu lebih
lama juga mempunyai kesempatan lebih bagus.
Disebut HRN, karena waktu tunggu ditambah waktu layanan adalah waktu

tanggap, yang berarti waktu tanggap tertinggi yang harus dilayani.


D. Multiple Feedback Queues (MFQ)
Multilevel feedback queue adalah salah satu algoritma yang berdasar pada
algoritma mulilevel queue. Perbedaan mendasar yang membedakan multilevel
feedback queue dengan multilevel queue biasa adalah terletak pada adanya
kemungkinan suatu proses berpindah dari satu antrian ke antrian lainnya, entah
dengan prioritas yang lebih rendah ataupun lebih tinggi. Misalkan :
a. Semua proses yang baru datang akan diletakkan pada queue 0 (quantum = 8 ms)
b. Jika suatu proses tidak dapat diselesaikan dalam 8 ms, maka proses tersebut akan
dihentikan dan dipindahkan ke queue 1 (quantum = 16 ms)
c. Queue 1 hanya akan dikerjakan jika tidak ada lagi proses di queue 0, dan jika
suatu proses di queue 1 tidak selesai dalam 16 ms, maka proses tersebut akan
dipindahkan ke queue 2 4. Queue 2 akan dikerjakan bila queue 0 dan 1 kosong,
dan akan berjalan dengan algoritma FCFS
Disini terlihat bahwa ada kemungkinan terjadinya perpindahan proses antar
queue, dalam hal ini ditentukan oleh time quantum, namun dalam prakteknya
penerapan algoritma multilevel feedback queue akan diterapkan dengan
mendefinisikan terlebih dahulu parameter- parameternya, yaitu:
a. Jumlah antrian
b. Algoritma internal tiap queue
c. Aturan sebuah proses naik ke antrian yang lebih tinggi
d. Aturan sebuah proses turun ke antrian yang lebih rendah
e. Antrian yang akan dimasuki tiap proses yang baru datang.
Kelebihan algoritma ini adalah dapat digunakan secara fleksibel dan diterapkan
sesuai dengan kebutuhan sistem. Pada zaman sekarang ini algoritma multilevel
feedback queue adalah salah satu yang paling banyak digunakan.

2.3.2

Algoritma Preemptive

Algoritma preemptive adalah setiap proses yang sedang dieksekusi oleh CPU
bisa diinterrupt oleh proses yang lain.
A. Round Robin (RR)
Merupakan :

Penjadwalan yang paling tua, sederhana, adil, dan banyak digunakan algoritmanya

Penjadwalan ini bukan dipreempt oleh proses lain tetapi oleh penjadwal
berdasarkan lama waktu berjalannya proses (preempt by time).

Penjadwalan tanpa prioritas.

Kelebihan algoritma ini :

Mudah diimplementasikan.

Berasumsi bahwa semua proses memiliki kepentingan yang sama, sehingga tidak
ada prioritas tertentu. Semua proses dianggap penting sehingga diberi sejumlah
waktu oleh pemroses yang disebut kwanta (quantum) atau time slice dimana
proses itu berjalan.Jika proses masih running sampai akhir quantum, maka CPU
akan mempreempt proses itu dan memberikannya ke proses lain. Penjadwal
membutuhkannya dengan memelihara daftar proses dari runnable. Ketika
quantum habis untuk satu proses tertentu, maka proses tersebut akan diletakkan
diakhir daftar (list).

Kelemahan algoritma ini adalah mempunyai waktu lebih lama dalam turnaround
dibandingkan dengan SJF (Shortes Job First).
Contoh: sebuah CPU dengan quantum 4 mendapat beberapa proses yang
kedatangannya sebagai berikut :
Proses

Burst Time

P1

P2

P3

P4

P5

Gantt chart

AWT ( Average waiting time);


Waktu tunggu untuk tiap-tiap proses :
Proses

Waiting Time

P1

P2

4 + (19 - 8) + (26 - 23) = 18

P3

8 + (23 - 12) = 19

P4

12 + (25 - 16) = 21

P5

16

AWT yang terjadi : ( 0 + 18 + 19 + 21 + 16 ) / 5 = 74 / 5 = 14,8


ATR ( average turn around)

B. Shortest Remaining First (SRF)


Merupakan :

Penjadwalan berprioritas dinamis.

Melengkapi SJF
Kelebihan algoritma ini adalah jika pada SRF, proses dengan sisa waktu jalan

diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba. Pada SJF,
begitu proses dieksekusi, proses dijalankan sampai selesai. Pada SRF, proses yang
sedang berjalan (running) dapat diambil alih proses baru dengan sisa waktu jalan yang
diestimasi lebih rendah.
Kelemahan :
9

Mempunyai overhead lebih besar dibanding SJF. SRF perlu penyimpanan waktu
layanan yang telah dihabiskan job dan kadang-kadang harus menangani peralihan.

Tibanya proses-proses kecil akan segera dijalankan.


SRF perlu menyimpan waktu layanan yang telah dihabiskan , menambah

overhead. Secara teoritis, SRF memberi waktu tunggu minimum tetapi karena
overhead peralihan, maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik
dibanding SRF.
C. Priority Schedulling (PS)
Setiap proses diberi prioritas dan proses yang berprioritas tertinggi mendapat
jatah waktu lebih dulu (running). Diasumsikan bahwa masing-masing proses
memiliki prioritas tertentu, sehingga akan dilaksanakan berdasar prioritas yang
dimilikinya. Ilustrasi yang dapat memperjelas prioritas tersebut adalah dalam
komputer militer, dimana proses dari jendral berprioritas 100, proses dari kolonel 90,
mayor berprioritas 80, kapten berprioritas 70, letnan berprioritas 60 dan seterusnya.
Dalam UNIX perintah untuk mengubah prioritas menggunakan perintah nice.
Pemberian prioritas diberikan secara:
1) Statis (Static Priorities) berarti prioritas tidak berubah.
Keunggulan :

Mudah diimplementasikan.

Mempunyai overhead relatif kecil.

Kelemahan algoritma ini adalah tidak tanggap terhadap perubahan lingkungan


yang mungkin menghendaki penyesuaian prioritas.
2) Dinamis (Dynamic Priorities) merupakan mekanisme untuk menanggapi
perubahan lingkungan system beroperasi. Prioritas awal yang diberikan ke proses
mungkin hanya berumur pendek setelah disesuaikan ke nilai yang lebih tepat
sesuai lingkungan.
Kelemahan : Implementasi mekanisme prioritas dinamis lebih kompleks dan
mempunyai overhead lebih besar. Overhead ini diimbangi dengan peningkatan
daya tanggap sistem.
Contoh penjadwalan berprioritas :
Proses-proses yang sangat banyak operasi masukan/keluaran menghabiskan
kebanyakan waktu menunggu selesainya operasinya masukan/keluaran. Proses10

proses ini diberi prioritas sangat tinggi sehingga begitu proses Memerlukan
pemroses

segera

diberikan,

proses

akan

segera

memulai

permintaan

masukan/keluaran berikutnya sehingga menyebabkan proses blocked menunggu


selesainya operasi masukan/keluaran. Dengan demikian pemroses dapat
dipergunakan proses-proses lain. Proses-proses I/O berjalan paralel bersama
proses-proses lain yang benar-benar memerlukan pemroses, sementara prosesproses I/O itu menunggu selesainya operasi DMA.
Proses-proses yang sangat banyak operasi I/O-nya, kalau harus menunggu lama
untuk memakai pemroses (karena prioritas rendah) hanya akan membebani
memori, karena harus disimpan tanpa perlu proses-proses itu dimemori karena
tidak selesai-selesai menunggu operasi masukan dan menunggu jatah pemroses.
D. Guaranteed Schedulling (GS)
Algoritma penjadwalan ini memberikan daya pemroses yang sama untuk
membuat dan menyesuaikan kinerja. Algoritma yang memiliki kinerja yang cukup
bagus akan menjanjikan kelangsungan yang baik pula. Misalnya ada X pemakai,
maka setiap proses atau pemakai akan mendapatkan 1/X dari daya pemroses CPU.
Untuk mewujudkannya, system harus selalu menyimpan informasi tentang jumlah
waktu CPU untuk semua proses sejak login dan juga harus selalu menyimpan
informasi tentang berapa lama pemakai sedang login. System harus tahu berapa CPU
time untuk meyakinkan bahwa setiap pengguna mendapatkan jatah waktu
menggunakan CPU sesuai haknya dan juga berapa CPU time yang diperlukan oleh
setiap proses 1 pengguna serta berapa CPU time yang diperlukan oleh tiap-tiap
pengguna
Misalkan ada 5 pengguna, seperti pada table berikut:
Pengguna
A
B
C
D
E

CPU Time
5
4
8
1
2

Total waktu yang digunakan untuk mengakses kelima pengguna tersebut


adalah 20ms, sehingga diharapkan tiap pengguna mendapatkan 20/5=4 ms.
Kenyataannya, mulai sejak login sampai saat ini tiap-tiap pengguna telah
11

mendapatkan CPU seperti pada table berikut. Rasio antara CPU yang diperoleh
sampai saat ini (actual) dengan CPU tang seharusnya diperoleh (4 ms) dapat dicari
dengan:
Pengguna
A
B
C
D
E

CPU Aktual
3
6
2
1
1

Rasio
3/4=0.75
6/4=1.5
2/4=0.5
1/4=0.25
1/4=0.25

Dapat dilihat bahwa Pengguna A memiliki rasio 0.75, artinya A baru mendapatkan
dari jatah waktu yang seharusnya diterima. Pengguna B memiliki rasio 1.5, artinya B
mendapatkan 1.5 waktu dari jatah yang seharusnya didapatkan. Algoritma ini
menjalankan proses dengan rasio yang paling rendah dulu sampai proses tersebut
mendapatkan rasio melebihi rasio proses yang sebelumnya mempunyai rasio satu
tingkat labih tinggi darinya.
2.4

Permasalahan Critical Section


Kunci untuk mencegah terjadinya Race Condition (suatu kondisi dimana beberapa

proses mengakses dan memanipulasi suatu data secara konkuren) adalah dengan mencegah
suatu proses melakukan manipulasi data secara bersamaan. Suatu code proses terdiri dari
beberapa bagian :

Critical Section adalah bagian dari code proses yang berisi code-code untuk
memanipulasi suatu data
Struktur umum dari proses Pi yang memiliki segmen critical section adalah :
do {
entry section

12

critical section
exit section
remainder section
} while (1);

2.4.1

Solusi masalah critical sosial harus memenuhi tiga syarat :

a) Mutual Exclusion.
Jika suatu proses sedang menjalankan critical section-nya, maka proses-proses
lain tidak dapat menjalankan critical section mereka. Dengan kata lain, tidak ada dua
proses yang berada dicritical section pada saat yang bersamaan.
b) Terjadi kemajuan (progress).
Jika tidak ada proses yang sedang menjalankan critical section-nya dan ada
proses-proses lain yang ingin masuk ke critical section, maka hanya proses-proses
yang yang sedang berada dalamentry section saja yang dapat berkompetisi untuk
mengerjakan critical section.
c) Ada batas waktu tunggu (bounded waiting).
Jika seandainya ada proses yang sedang menjalankan critical section, maka
proses lain memiliki waktu tunggu yang ada batasnya untuk menjalankan critical
section -nya,

sehingga

dapat

dipastikan

bahwa

proses

tersebut

dapat

mengakses critical section-nya (tidak mengalami starvation: proses seolah-olah


berhenti, menunggu request akses ke critical section diperbolehkan).

2.4.2

Solusi masalah critical section, yaitu:

A. Solusi perangkat lunak.


Dengan menggunakan algoritma-alogoritma yang nilai kebenarannya tidak
tergantung pada asumsi-asumsi lain, selain bahwa setiap proses berjalan pada
kecepatan yang bukan nol.
1) Solusi sinkronisasi untuk 2 proses :

Algoritma Turn
Hanya proses yang mempunyai ID yang sama dengan ID giliran (Turn) yang
boleh masuk ke critical sectionnya

Algoritma Flag
13

Setiap proses berusaha untuk mengecek state (keadaan) proses yg lain. Jika proses
lain sedang berada di critical sectionnya, maka dia akan menunggu sampai proses
lain tersebut keluar dari state critical sectionnya.

Algoritma Turn-Flag
Merupakan penggabungan antara algoritma Turn dan algoritma Flag.

2) Solusi sinkronisasi untuk banyak proses :

Bakery Algorithm ( Algoritma Tukang Roti )


Ketika memasuki toko, setiap pelanggan menerima sebuah nomor. Sayangnya,
tukang roti 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.


B. Solusi perangkat keras.
Tergantung pada beberapa instruksi mesin tertentu, misalnya dengan me-nonaktifkan interupsi atau dengan mengunci suatu variabel tertentu
2.5

Sinkronisasi Perangkat Keras


Sebelum adanya berbagai macam teknik sinkronisasi seperti yang ada sekarang, para

programmer sering memanfaatkan fasilitas yang telah diberikan oleh hardware dari
komputer.

Pendekatan

melalui

perangkat

lunak

cenderung

sulit

dan

kompleks

diimplementasikan, selain itu dapat menyebabkan turunnya kinerja dari suatu produk yang
dibuat. Sehingga sinkronisasi tidak akan terlepas dari peran hardware. Algoritma turn, flag,
dan algoritma tunr and flag dapat menjadi solusi atas berbagai masalah seperti : mutual
exclusion dan progres, akan tetapi tidak untuk busy waiting.
2.5.1

Metode dalam sinkronisasi hardware

Seperti yang telah kita ketahui bahwa, sinkronisasi haruslah mutual exclusive, atau
dengan kata lain, harus ada satu atau sekelompok instruksi yang tidak dapat
diberhentikan pada waktu eksekusi (sifat mutual exclusive). Jadi, solusi untuk
sinkronisasi dengan cara pendekatan hardware lebih menekankan kepada usaha-usaha
untuk membuat suatu atau sekelompok instruksi menjadi mutual exclusive.

14

2.5.2

Pendekatan dari sisi Hardware

Pendekatan dari sisi hardware di bagi menjadi dua :


a) Processor Synchronous
Central Processing Unit (CPU) mempunyai suatu mekanisme yang dinamakan
interrupt. Di dalam sistem operasi, mekanisme ini digunakan secara intensif, atau
dengan kata lain, banyak konsep-konsep sistem operasi yang menggunakan
mekanisme ini. Sebagai contoh : system call dan process scheduling .
Berbicara mengenai sinkronisasi berarti kita mengasumsikan bahwa akan ada
2 atau lebih proses yang sedang berjalan di komputer secara concurrent, atau dengan
kata lain konsep time-shared sudah diimplementasikan di sistim operasi.
Sistim time-shared yang sering diimplementasikan dengan algoritma RR
(Round Robin), memanfaatkan mekanisme interrupt di CPU. Jadi di dalam RR ada
suatu satuan waktu yg dinamakan quantum yang mana setiap quantum dibatasi oleh
satu software interrupt.
Teknisnya, akan ada suatu interrupt - yang biasanya adalah timer interrupt yang secara berkala akan menginterrupt sistim. Pada saat interrupt dilakukan sistim
operasi akan segera melakukan proses pergantian dari proses yang satu ke proses yang
lainnya sesuai dengan algoritma.
Seperti yang telah dikatakan di atas, isu yang ada di sini adalah, ada satu atau
sekelompok instruksi yang tidak dapat diberhentikan sampai satu atau sekelompok
instruksi tersebut selesai.
Sangat jelas bahwa yang membuat suatu instruksi diberhentikan adalah
mekanisme yang di sistim operasi . Mekanisme ini sangat bergantung kepada
mekanisme interrupt dari hardware. Jadi, jika kita dapat menon-aktifkan interrupt
pada saat critical section tersebut, maka masalah sinkronisasi dapat terselesaikan.
Ternyata para designer komputer melihat celah ini, dan sekarang ini sudah
hampir semua komputer yang ada telah mengimplementasi instruksi mesin yang mana
instruksi ini akan menon-aktifkan serfis interrupt, dan ada instruksi yang lain yang
akan mengaktifkan interrupt tersebut.
Sebagai contoh sederhana, kita akan melihat contoh program dari prosesor
Atmel ARM tm
mainModul :
00 CLI

' masuk ke Critical Section dengan cara

15

' men-disable interrupt


01 ADD r1,r2
02 ....

' Critical Section

' Critical Section

03 SBI

' pergi dari Critical Section dengan cara


' men-enable interrupt

04 ..

' Remainder Section

Pada baris ke 0, prosesor akan menon-aktifkan interrupt, instruksi - instruksi


selanjutnya tidak akan diganggu oleh interrupt. Selanjut setelah keluar dari critical
section, pada baris 3, prosesor akan mengaktifkan kembali interrupt sehingga
mekanisme scheduling di sistim operasi dapat berjalan kembali.
Bila kita melihat dari yang di atas, terlihat bahwa dengan mekanisme ini saja
sudah cukup mengatasi isu yang ada. Tetapi ternyata mekanisme ini tidak terlalu
berhasil di dalam lingkungan multiprocessor. Jikalau kita menon-aktifkan interrupt,
maka yang dinon-aktifkan hanya satu prosesor, hal ini dapat mengakibatkan hal - hal
yang tidak diinginkan.
b) Memory Synchronous
Dilihat dari nama mekanismenya, maka kita sudah dapat memprediksi bahwa
mekanisme ini akan menggunakan jasa memori. Memang hal tersebut benar,
mekanisme memory synchronous memakai suatu nilai yang disimpan di memori, dan
jikalau suatu proses berhasil mengubah nilai ini, maka proses ini akan meneruskan ke
instruksi selanjutnya, jika tidak, maka proses ini akan berusaha terus untuk dapat
mengubahnya.
Jika dilihat dari paragraf di atas, mekanisme ini lebih cocok dikategorikan
sebagai pendekatan dari software. Tetapi, jika kita perhatikan lebih lanjut, ternyata
mekanisme ini memerlukan jasa hardware. Syarat yang harus dipenuhi agar
mekanisme ini dapat berjalan adalah perlunya hardware mempunyai kemampuan
untuk membuat suatu instruksi dijalankan secara atomic. Pengertian dari instruksi
atomic adalah satu atau sekelompok instruksi yang tidak dapat diberhentikan sampai
instruksi tsb selesai.
Sebagai contoh, kita dapat memperhatikan contoh program Java tm yang ada di
bawah ini :
00 boolean testAndSet( boolean variable[] )
16

01

02

boolean t = variable[0];

03

variable[0] = true;

04

return t;

05

.....
56 while (testAndSet(lock)) { /* do nothing */ }
57 // Critical Section
58 Lock[0] = false;
59
// Remainder Section
Method testAndSet haruslah bersifat atomic , sehingga method ini dianggap
sebagai satu instruksi mesin. Perhatikan pada baris 56 dimana method ini dipakai.
Pada baris ini proses berusaha untuk mengubah nilai dari variable reference lock.
Jikalau ia tidak berhasil maka akan terus mencoba, tapi jika berhasil maka proses akan
masuk ke bagian kritis dan setelah ini proses akan mengubah nilai dari lock sehingga
memberikan kemungkinan proses lain untuk masuk.
Keunggulan

dari

memory

synchronous

adalah

pada

lingkungan

multiprocessor, semua processor akan terkena dampak ini. Jadi semua proses yang
berada di processor, yang ingin mengakses critical section, meskipun berada di
processor yang berbeda - beda, akan berusaha untuk mengubah nilai yang dimaksud.
Sehingga semua processor akan tersinkronisasi.
c) Instruksi Atomic
Instruksi atomic adalah satu atau sekelompok instruksi yang tidak dapat
diberhentikan sampai instruksi tersebut selesai.

Instruksi yang dimaksud di sini

adalah instruksi-instruksi pada high-level programming, bukanlah pada tingkat


instruksi mesin yang memang sudah bersifat atomic. Sebagai contoh : i++ pada suatu
bahasa pemrograman akan diinterpertasikan beberapa instruksi mesin yang bersifat
atomic :
00 Load R1,i ' load nilai i ke register 1
01 Inc R1

' tambahkan nilai register 1 dengan angka 1

02 Store i,R1 ' simpan nilai register 1 ke i


17

Instruksi baris 00-02 bersifat atomic , tetapi i++ tidak bersifat atomic. Sebagai
contoh kasus, katakanlah sekarang processor baru menyelesaikan baris 01, dan
ternyata pada saat tersebut interrupt datang, dan menyebabkan processor melayani
interrupt terlebih dahulu. Hal ini menyebabkan terhentinya instruksi i++ sebelum
instruksi ini selesai. Jikalau instruksi ini (i++) bersifat atomic, maka ketiga instruksi
mesin tersebut tidak akan diganggu dengan interrupt.
Instruksi ini bukanlah seperti pada processor synchronous yang mana akan
mematikan interrupt terlebih dahulu, tetapi instruksi ini sudah build-in di processor.
Designer processor dapat mengimplementasi konsep ini dengan dua cara yaitu :
1) Mengimplementasi instruksi yg build-in
2) Mengimplementasi processor mampu membuat suatu instruksi menjadi atomic
Intel Pentium memakai cara yang kedua, yaitu dengan adanya suatu perintah
LOCK-Assert. Dengan perintah ini maka semua instruksi dapat dijadikan atomic.
Sedangkan SPARC dan IBM mengimplementasikan suatu rutin yang bersifat
atomic seperti swap dan compareAndSwap.
2.5.3

Sleep And Wake


Sleep adalah system call yang mengakibatkan dihentikan sementara sebuah

proses, sampai proses lain membangunkan. Wake up adalah system call yang
mengakibatkan sebuah proses terbangun. Masalah yang timbul kemudian signal wake
up tidak tersampaikan karena berbagai kondisi, sehingga kedua proses akan sleep
forever. Solusi untuk kasus diatas adalah dengan menggunakan wake up waiting bit.
Ketika proses berjalan maka wake up waiting bit di set on pada saat proses akan sleep
maka proses akan diset off

18

2.6

Semaphora
Pada tahun 1967, Djikstra mengajukan suatu konsep dimana kita memakai suatu

variable integer untuk menghitung banyaknya proses yang sedang aktif atau yang sedang
tidur. Tipe dari variable ini dinamakan semafor. Tahun-tahun berikutnya, semafor banyak
dipakai sebagai primitif dari mekanisme sinkronisasi yang lebih tinggi dan kompleks lagi.
Sebagai contoh : monitor dari Javatm. Selain untuk hal tersebut, kebanyakkan semafor juga
digunakan untuk sinkronisasi dalam komunikasi antar device (perangkat keras).
Semaphore adalah alat untuk sinkronisasi yang tidak membutuhkan busy waiting.
Semaphore S berupa variable integer. Semaphore hanya dapat diakses melalui operasi atomic
yang tak dapat diinterupsi sampai kode selesai. Operasi dari semaphore S adalah wait dan
signal

2.6.1

Subrutin wait

Di dalam subrutin wait, proses akan memeriksa harga dari semafor, apabila
harganya 0 atau kurang maka proses akan menunggu, sebaliknya jika lebih dari 0,
maka proses akan mengurangi nilai dari semaphore tersebut dan menjalankan operasi
yang lain.
Arti dari harga semafor dalam kasus ini adalah hanya boleh 1 proses yang dapat
melewati subrutin wait pada suatu waktu tertentu, sampai ada salah satu atau proses
itu sendiri yang akan memanggil signal. Cara proses menunggu dapat dibagi menjadi
dua :
a) Pinlock waiting
Spinlock waiting berarti proses tersebut menunggu dengan cara menjalankan
perintah-perintah yang tidak ada artinya. Dengan kata lain proses masih running state
di dalam spinlock waiting. Keuntungan spinlock pada lingkungan multiprocessor
adalah, tidak diperlukan context switch. Tetapi spinlock yang biasanya disebut busy
waiting ini menghabiskan cpu cycle karena, daripada proses tersebut melakukan
perintah-perintah yang tidak ada gunanya, sebaiknya dialihkan ke proses lain yang
mungkin lebih membutuhkan untuk mengeksekusi perintah-perintah yang berguna.
b) Non-spinlock waiting
Berbeda dengan spinlock waiting , non-spinlock waiting, memanfaatkan
fasilitas sistim operasi. Proses yang melakukan non-spinlock waiting akan memblock
dirinya sendiri dan secara otomatis akan membawa proses tersebut ke dalam waiting
19

queue. Di dalam waiting queue ini proses tidak aktif dan menunggu sampai ada proses
lain yang membangunkan dia sehingga membawanya ke ready queue.
Subrutin dari kedua versi wait
00 void waitSpinLock(int semaphore[] )
01 {
02

while(semaphore[0] <= 0)
{ .. Do nothing .. } // spinlock

03

semaphore[0]--;

04 }
10 void synchronized
waitNonSpinLock( int semaphore [])
11 {
12

while(semaphore[0] <= 0)

13

14

wait(); // blocks thread

15

16

semaphore[0]--;

17 }

Perbedaan dari kedua subrutin ini adalah terletak pada aksi dari kondisi nilai semafor
kurang atau sama dengan dari 0 (nol). Untuk yang spinlock , kita dapat melihat proses
akan berputar-putar di while baris no 2. Sedangkan pada non-spinlock, proses dengan
mudah memanggil perintah wait, setelah itu sistim operasi akan mengurus mekanisme
selanjutnya.
2.6.2

Subrutin signal

Karena subrutin wait memiliki 2 versi maka hal ini juga berpengaruh kepada
subrutin signal. Subrutin signal akan terdiri dari 2 versi sesuai dengan yang ada di
subrutin wait.
00 void signalSpinLock( int semaphore [])
01 {
02

semaphore[0]++;

03 }
20

10 void synchronized
11 signalNonSpinLock( int semaphore [])
12 {
13

semaphore[0]++;

14

notifyAll(); // membawa waiting thread

15

// ke ready queue

16 }
Letak perbedaan dari kedua subrutin di atas adalah pada notifyAll. NotifyAll
berarti membangunkan semua proses yang sedang berada di waiting queue dan
menunggu semaphore yg disignal.
Setelah semaphore disignal, proses-proses yang sedang menunggu, apakah itu
spinlock waiting ataukah non-spinlock waiting, akan berkompetisi mendapatkan
akses semafor tersebut. Jadi memanggil signal bukan berarti membangunkan salah
satu proses tetapi memberikan kesempatan proses - proses untuk berkompetisi.
Macam - macam Semaphora
Ada 2 macam semafor yang cukup umum, yaitu :
a. Binary semaphore. Merupakan semafor yang bernilai hanya 1 dan 0.
b. Counting semaphore. Merupakan semafor yang dapat bernilai 1 dan 0 dan nilai
integer yang lainnya.

2.7 Masalah Masalah Klasik Dalam Sinkronisasi


2.7.1 Bounded-Buffer (Producer-Consumer) Problem
Produsen menghasilkan barang dan konsumen yang akan menggunakannya. Ada
beberapa batasan yang harus dipenuhi, antara lain :
a) Barang yang dihasilkan oleh produsen terbatas
b) Barang yang dipakai konsumen terbatas
c) Konsumen hanya boleh menggunakan barang yang dimaksud setelah produsen
menghasilkan barang dalam jumlah tertentu
d) Produsen hanya boleh memproduksi barang jika konsumen sudah kehabisan
barang

21

2.7.2

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)

2.7.3

Dining-Philosophers Problem

Permasalahan dining-philosophers digambarkan pada Gambar 5-2 dimana


terdapat 5 filosof yang akan makan. Di sana disediakan 5 supit. Jika filosof lapar, ia
akan mengambil 2 supit yaitu di tangan kanan dan kiri. Namun adakalanya hanya
diambil supit satu saja. Jika ada filosof yang mengambil 2 supit, maka ada filosof
yang

harus

menunggu

sampai

supit

diimplementasikan dengan wait dan signal.

22

tersebut

diletakkan.

Hal

ini

dapat

BAB III
PENUTUP

3.1

Kesimpulan

A. Penjadwalan CPU adalah suatu proses pengaturan atau penjadwalan proses-proses yang
ada di dalam komputer. Yang memiliki kriteria-kriteria dan algoritma penjadwalan
teretntu untuk mempermudah pengguna menyelesaikan permasalahan pekerjaaan.
B. Sinkronisasi CPU 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.

23

DAFTAR PUSTAKA

https://pioniezez.wordpress.com/2011/04/12/algoritma-penjadwalan/

http://dedisbb.blogspot.co.id/2011/02/jenis-jenis-algoritma-penjadwalan.html

http://agustriadi17.blogspot.co.id/2011/03/critical-section.html

http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/44/produ
k/SistemOperasi/c43.html

https://ayuewiejayantie.wordpress.com/sinkronisasi-proses/

http://sc-hunter.blogspot.co.id/2013/04/algoritma-penjadwalan_2.html

http://triyatnoize.blogspot.co.id/2011/10/algoritma-penjadwalan.html

http://wahyu.staff.umm.ac.id/files/2011/04/8-Sinkronisasi-Proses.pptx

http://sistemoperasi32.blogspot.co.id/2015/04/konsepdasar-penjadwalan-proses.html

http://andry-informatika.blogspot.co.id/2012/04/algoritma-penjadwalan.html

24

Anda mungkin juga menyukai