Professional Documents
Culture Documents
Modul Sistem Operasi
Modul Sistem Operasi
Node Node
Clustered Systems
Clustering memungkinkan dua atau lebih sistem men-
sharing storage
Reliabilitas yang tinggi
Asymmetric clustering : satu server run aplikasi
sementara server yang lain standby
Symmetric clustering : semua N host running aplikasi
Struktur Clustered Systems
VI. Real-Time Systems
Rancangan OS khusus untuk aplikasi spesifik yang
memerlukan waktu response cepat :
hardware/software
Misal : kontrol proses kimia, alat kedokteran/scientifik,
ponsel, home appliances
Terdapat batasan waktu tertentu untuk eksekusi
(processing), response, dll
Hard & soft real-time system
Hard Real-Time Systems
Garansi bahwa task kritis pasti selesai dalam batasan
waktu tertentu (terdapat deadline yang harus
dipenuhi)
Optimasi dilakukan dengan melakukan prioritas task,
menghilangkan hardware yang lambat (disk). Data
disimpan dalam short term memory atau read-only
memory (ROM)
Overhead dikurangi (dengan membatasi feature untuk
aplikasi spesifik) : misal file-system
Soft Real-Time Systems
Versi lain dari OS yang umum dengan menambahkan
fasilitas prioritas task, buffering antar proses, dll
Aplikasi spesifik untuk melakukan processing
sementara secara cepat (multimedia, virtual reality,
etc)
Utilitas yang terbatas pada mesin kontrol industri atau
robotik
Migrasi OS – Konsep dan Fitur
Histori Singkat OS
First generation 1945 – 1955
Awal perkembangan sistem komputasi elektronik sebagai pengganti sistem
komputasi mekanik
vacuum tubes, plug boards
Second generation 1955 – 1965
- Belum dilengkapi Sistem Operasi.
transistors, batch systems
Third generation 1965 – 1980
perkembangan sistem operasi dikembangkan untuk melayani banyak pemakai
sekaligus, dimana para pemakai interaktif berkomunikasi lewat terminal
secara on-line ke komputer (multi-user & multi-programming)
ICs and multiprogramming
Fourth generation 1980 – present
- Jaringan Komputer
- Graphical User Interface
- Era komputasi tersebar dimana komputasi-komputasi tidak lagi berpusat di
satu titik
personal computers
CPU
Memory
Disk
Printer
Tape drive
Device controller
System bus
Memory controller
Operasi Sistem Komputer (2)
CPU dan I/O device dapat dieksekusi
secara bersamaan (concurrent)
Masing-masing device controller memiliki
spesifikasi yang sesuai dengan tipe device
dan memiliki local buffer
CPU memindahkan data dari main memory
ke local buffer dan sebaliknya
I/O dieksekusi dari device local buffer
controller
Device controller menginformasikan ke
CPU apabila operasi yang dilakukan telah
selesai dengan mekanisme interrupt
Interrupt mentransfer control ke interrupt
service routine, melalui interrupt vector (berisi
alamat service routine)
Arsitektur interrupt harus menyimpan address
(alamat) dari instruksi interrupt
Interrupt yang datang di-disabled jika terdapat
interrupt yang sedang diproses (menghindari lost
interrupt)
Trap adalah software yang men-generate
interrupt, baik karena error atau karena request
dari user
Operating System merupakan interrupt driven
Interrupt
Program : akibat eksekusi instruksi
(division by zero, invalid memory access,
dsb) – trap
Timer : timer processor
I/O controller, operasi I/O sudah selesai /
terjadi error
Hardware malfunction : kesalahan
hardware (power failure, memory parity
error, dsb)
Interrupt Handling
Contoh Interrupt Vector Table
Abstraksi Interrupt I/O Device
(a) (b)
Synchronous Asynchronous
Device-Status Table
Struktur I/O - DMA
Proteksi Hardware
Sharing resource sistem membutuhkan
OS untuk memastikan bahwa program
yang error tidak mengakibatkan program
lain dieksekusi juga error
Hardware mendukung dua mode operasi :
◦ User mode – eksekusi dilakukan oleh user
◦ Monitor mode (kernel mode / system mode) –
eksekusi dilakukan oleh OS
monitor user
set user mode
• Komponen-komponen Sistem
• Layanan OS
• System Calls
• System Programs
• System Structure
• Virtual Machines
• System Design & Implementasi
• System Generation
Struktur-struktur OS
• Process Control
• File Manipulation
• Device Manipulation
• Information Maintenance
• Communication
Process Control
• Selesai, abort
• Load, eksekusi
• Membuat dan mengakhiri proses
• Mengambil dan mengeset atribut proses
• Menunggu waktu
• Wait event, signal event
• Alokasi dan pengosongan memori
Eksekusi MS-DOS
• Struktur Sederhana
• Metode Pendekatan Terlapis (Layered Approach)
• Mikrokernel
Struktur Sederhana
Konsep Proses
Penjadualan Proses
Cooperating Processes
Interprocess Communication
short-term scheduler
DIAGRAM PERPINDAHAN PROSES
long-term scheduler
short-term scheduler
STATUS PROSES - UPDATE
I/O VS CPU BOUNDS
“Producer”
merupakan proses yang
menghasilkan informasi yang akan
dikonsumsi oleh proses “Consumer”. Contoh :
Compiler memproduksi assembly code yang dikonsumsi
oleh Assembler
Assembler memproduksi Object yang dikonsumsi oleh
Loader
Sebagai perantara digunakan suatu buffer
Unbound-buffer : tidak ada batas kapasitas
Bounded-buffer : buffer berukuran tetap
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
BOUNDED-BUFFER – CONSUMER PROCESS
item nextConsumed;
while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
ILUSTRASI PRODUCER-
CONSUMER PROBLEM
out
in
out
producer
Empty
in 0 0 Half-full 0 Full
out
11 11 11
consumer
Ring-buffer in
12 slots
ALGORITMA PRODUCER-CONSUMER
(PASCAL)
Shared data
var n; type item = …; var buffer : array [0..n-1] of item;
in, out : 0..n-1; n := 0; out := 0;
Producer : Consumer :
repeat repeat
… while in = out do no-op;
produce an item nextp nextc := buffer[out];
…
out := out+1 mod n;
while in+1 mod n =
out …
do no-op; consume the item in nextc
buffer[in] := nextp; …
in := in+1 mod n; until false;
until false;
INTERPROCESS
COMMUNICATION (IPC)
Menyediakan mekanisme yang memungkinkan
proses-proses berkomunikasi dan mensinkronisasi
aksi-aksinya
Message System – komunikasi tanpa memerlukan
penggunaan shared variabel milik proses user
OPERASI-OPERASI IPC
Operasi-operasi yang disediakan
Send(message)
Receive(message)
Menjawab pertanyaan-pertanyaan :
Cara penetapan link
Bisa berasosiasi dengan > 2 proses
Jumlah link yang ditetapkan antara 2 proses
Kapasitas link
Ukuran message : tetap atau variabel
Arah link : satu arah (unidirectional) atau dua arah (bi-
directional)
Satu arah : proses hanya send (atau receive) dan hanya
satu yang receive
METODOLOGI
Direct vs. Indirect Communication
Symmetric vs. Asymmetric Communication
P Q
SIFAT-SIFAT COMMUNICATION
LINK DIRECT COMM.
Producer : Consumer :
repeat repeat
… …
Produce(nextp)
receive(produser, nextc)
…
…
send(consumer,
nextp) Consume(nextc)
… …
until false; until false;
KEKURANGAN DIRECT COMM.
Modularitas terbatas
Pengubahan nama proses perlu pengubahan di seluruh call
Perlu pemeriksaan jika terdapat nama yang sama
INDIRECT COMMUNICATION
Message-message dikirim dan diterima melalui
suatu mailbox (juga disebut port)
Masing-masing mailbox memiliki id yang unik
Proses-proses hanya dapat berkomunikasi jika
mereka men-share mailbox
send(A, message)
Kirim message ke dalam mailbox A
receive(A, message)
Terima message dari dalam mailbox A
P A Q
SIFAT-SIFAT COMMUNICATION
LINK INDIRECT COMM.
Link ditetapkan saat dua proses men-share suatu
mailbox
Link dapat diasosiasikan dengan sejumlah proses
Solusi
Batasi link diasosiasikan hanya untuk max 2 proses
Hanya mengijinkan satu proses setiap saat yang meng-
eksekusi operasi receive
Sistem memilih siapa receiver-nya
Sender menyebutkan siapa receiver-nya
SINKRONISASI
Message passing dapat dibedakan menjadi :
blocking
non-blocking
Sockets
Remote Procedure Calls
try {
sock = new ServerSocket (5155);
// now listen for connections
New socket while (true) {
to connect client = sock.accept ();
to client
// we have a connection
To send data pout = new PrintWriter (client.getOutputStream(), true);
simply
using println
// write the Date to the socket
pout.println( new Java.util.Date().toString());
pout.close();
client.close();
…..
CLIENT FOR TIME OF DAY
Public class Client {
public static void main (String[], args) throws IOException {
InputStream in = null;
BufferedReader bin = null;
Socket sock = null;
try {
// make connection to socket
sock = new Socket (“127.0.0.1”, 5155);
in = sock.getInputStream ();
bin = new BufferedReader (new InputStreamReader (in));
String line;
• One-to-One
• Many-to-Many
Many-to-One
• Banyak user-level thread dipetakan ke kernel thread tunggal
• Digunakan pada sistem yang tidak men-support kernel thread
• Kekurangan : jika 1 thread block, maka thread yang lain juga block.
Many-to-One Model
One-to-One
• Each user-level thread maps to kernel thread.
• Masing-masing user-level thread dipetakan ke kernel thread
• Contoh :
- Windows 95/98/NT/2000
- OS/2
One-to-one Model
Many-to-Many
• Memungkinkan banyak user-level thread dipetakan ke banyak
kernel thread
• Memungkinkan sistem operasi membuat jumlah kernel thread yang
mencukupi
• Solaris 2
• Windows NT/2000 dengan ThreadFiber package
Many-to-Many Model
Threading Issues
Semantics of fork() and exec() system calls : jika dalam satu thread
memanggil fork(), apakah proses baru akan menduplikasi semua thread
atau single-thread?
Thread cancellation : terminate thread sebelum selesai running. Contoh :
multiple thread mengakses ke database secara concurrent(bersamaan).
Signal handling : masing-masing signal memiliki default signal handler
yang dijalankan oleh kernel. Signal selalu dikirim ke proses dan menjadi
kompleks dalam program multithreading dimana proses dapat memiliki
beberapa thread.
Thread pools : membuat sejumlah thread pada saat startup dan
menempatkannya ke dalam pool. Ketika server menerima request, thread
dipanggil.
Thread specific data : walaupun multithread share data, namun dalam
beberapa kondisi masing-masing thread memerlukan data sendiri.
Pthreads
• Suatu standar POSIX (IEEE 1003.1c) API untuk pembuatan
thread dan sinkronisasi.
• API yang menspesifikasikan perilaku thread library,
implementasi dilakukan diatas library.
• Umumnya digunakan pada UNIX operating systems.
Contoh kasus : Solaris 2 (1)
• Versi UNIX yang mendukung symmetric multiprocessing, dan
real-time scheduling mengimplementasikan :
• User-level thread
• Kernel-supported thread
• LWP – thread level menengah antara user-level thread dan
kernel-level thread
Solaris 2 Threads
Contoh kasus : Solaris 2 (2)
• Kernel thread membutuhkan suatu struktur data kecil dan
suatu stack
• Switching tidak memerlukan perubahan info, akses memori, jadi
relatif cepat
• Kernel LWP membutuhkan PCB dengan register data, info
accounting, dan info memori
• Switching antara LWP relatif lambat
Contoh kasus : Solaris 2 (3)
• User-level thread : hanya perlu suatu stack dan program
counter
• Switching cepat karena kernel tidak dilibatkan; Kernel hanya
berhubungan dengan LWP
Solaris Process
Windows 2000 Threads
• Mengimplementasikan pemetaan model One-to-One.
• Masing-masing thread berisi :
- thread id
- register set
- pemisahan user & kernel stacks
- private data storage area
Linux Threads
• Linux menggunakan istilah task daripada threads.
• Pembuatan thread menggunakan system call clone().
• Clone() memungkinkan suatu child task men-share address space
dari parent task (proses)
Preemptive Non-preemptive
Preemptive
Scheduler dalam situasi (2) dan (3) disebut
preemptive
CPU dapat dialihkan ke proses lain oleh OS misalnya
karena interrupt, timer, dsb.
Perlu penanganan masalah data sharing antara
sebelum dan sesudah
Perlu blocking CPU saat struktur data kernel berada
pada status yang inkonsisten
Dispatcher
FCFS Queue
SJF Queue
Priority Queue
Round Robin
Multi-Level Queue
Multi-Level Feedback Queue
Kriteria Scheduling (1)
CPU utilization : persentase jumlah waktu CPU sibuk
dari total waktu
Throughput : jumlah proses yang selesai dieksekusi
per satuan waktu
Turnaround time : selang waktu sejak submit proses
hingga terminate
Kriteria Scheduling (2)
Waiting time : jumlah waktu suatu proses menunggu
dalam ready queue
Response time : panjang waktu sejak submit hingga
respons pertama muncul
Predictability respons : variansi (ketersebaran) waktu
respons
Obyektif
Pemilihan algoritma untuk optimisasi :
Memaksimalkan CPU utilization
Memaksimalkan throughput
P1 P2 P3
0 24 27 30
– Waiting time : P1 = 0 ms, P2 = 24 ms, dan P3 = 27 ms
– Average waiting time = (0 + 24 + 27)/3 = 17 ms
• Jika urutannya : P2, P3, P1 maka :
– Gantt Chart
P2 P3 P1
0 3 6 30
– Average waiting time = (6 + 0 + 3)/3 = 3
Masalah FCFS : “Convoy Effect”
Kondisi terdapat suatu proses yang memiliki CPU-
burst time besar (CPU bound) dan sejumlah proses
lain dengan I/O burst time yang besar (I/O bound)
Proses CPU bound sedang hold CPU proses I/O bound
menunggu, I/O device idle
Proses I/O bound sedang melakukan I/O, proses CPU
bound menunggu, CPU idle
Shortest Job First (SJF)
0 3 7 8 12 16
0 2 4 5 7 11 16
P2 P1 P3
0 1 9 10
Internal
Bilamungkin, ditentukan berdasarkan indikator terukur
atau estimasinya
Time limit, memori requirement, jumlah file open, ratio I/O burst terhadap
CPU burst
External
Ditentukan berdasarkan kriteria yang eksternal bagi
OS
Tingkat kepentingan proses, charging, super-user (root), dll
Masalah Priority Scheduling
• Shared data
#define BUFFER_SIZE 10
typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int counter = 0;
Bounded-Buffer (2)
• Producer process
item nextProduced;
while (1) {
while (counter == BUFFER_SIZE)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}
Bounded-Buffer (3)
• Consumer process
item nextConsumed;
while (1) {
while (counter == 0)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
counter--;
}
Bounded-Buffer (4)
• Statement :
counter++;
counter--;
register1 = counter
register1 = register1 + 1
counter = register1
register2 = counter
register2 = register2 – 1
counter = register2
Bounded-Buffer (6)
• Shared data
boolean choosing[n];
int number[n];
Struktur data masing-masing diinisialisai false
dan 0.
Algoritma Bakery (3)
• Algoritma
do {
choosing[i] = true;
number[i] = max(number[0], number[1], …, number [n –
1])+1;
choosing[i] = false;
for (j = 0; j < n; j++) {
while (choosing[j]) ;
while ((number[j] != 0) && (number[j,j] <
number[i,i])) ;
}
critical section
number[i] = 0;
remainder section
} while (1);
Sinkronisasi Hardware
• Disabling Interrupt : hanya untuk uniprosesor
saja
• Atomic test and set : mengembalikan parameter
dan menge-set parameter ke atomic
• Test and modify the content of a word atomically
boolean TestAndSet(boolean &target) {
boolean rv = target;
tqrget = true;
return rv;
}
Semaphore (1)
• Sifat-sifat semaphore
▫ Dapat diinisialisasi dengan nilai non-negatif
▫ Terdapat dua operasi : Down (Wait) dan Up
(Signal)
• Operasi Down dan Up adalah atomic, tak dapat
diinterupsi sebelum diselesaikan.
Semaphore – Operasi Down (Wait)
• Operasi ini menurunkan menilai semaphore
▫ Jika nilai semaphore menjadi non-positif maka
proses yang mengeksekusinya di-block
Semaphore – Operasi Up (Signal)
• Operasi ini menaikkan menilai semaphore
▫ Jika satu proses atau lebih di-block pada
semaphore tidak dapat menyelesaikan operasi
Down, maka salah satu dipilih oleh sistem dan
menyelesaikan operasi Down-nya. Pemilihan
proses dilakukan secara acak.
Definisi Klasik Wait & Signal
Wait(S)
{
while S <= 0 do noop; /* busy wait! */
S = S – 1; /* S >= 0 */
}
Signal (S)
{
S = S + 1;
}
Implementasi Blocking pada
Semaphore
• Semaphore S memiliki nilai (S.val), dan suatu
thread list (S.list).
Wait (S) / Down(S)
S.val = S.val - 1
If S.val < 0 /* negative value of S.val */
{
add calling thread to S.list; /* is # waiting threads */
block; /* sleep */
}
Signal (S) / Up(S)
S.val = S.val + 1
If S.val <= 0
{
remove a thread T from S.list;
wakeup (T);
}
Problem Klasik pada Sinkronisasi
• Ada tiga hal yang selalu menjadi masalah pada
sinkronisasi :
▫ Problem Bounded Buffer
▫ Problem Dining Philosopher
▫ Problem Sleeping Barber
▫ Problem Readers and Writers
Problem Bounded Buffer
Permasalahan : bagaimana jika dua proses berbeda, yaitu
produsen dan konsumen, berusaha mengakses buffer
tersebut dalam waktu bersamaan.
InP
Producer
Producer and
consumer
are separate threads
8 Buffers OutP
Consumer
Is this a valid solution?
thread producer { thread consumer {
while(1){ while(1){
// Produce char c while (count==0) {
while (count==n) { no_op
no_op }
} c = buf[OutP]
buf[InP] = c OutP = OutP + 1 mod n
InP = InP + 1 mod n count--
count++ // Consume char
} }
} }
while(TRUE) {
Think();
Grab first fork;
Grab second fork;
Eat();
Put down first fork;
Put down second fork;
}
Is this a valid solution?
#define N 5
Philosopher() {
while(TRUE) {
Think();
take_fork(i);
take_fork((i+1)% N);
Eat();
put_fork(i);
put_fork((i+1)% N);
}
}
Procedure Mengambil Garpu
• Barber :
▫ Ketika ada orang yang menunggu untuk potong
rambut, letakkan satu orang ke kursi, dan
memotong rambut
▫ Jika sudah selesai, pindah ke pelanggan
berikutnya
▫ Jika tidak ada pelanggan maka tidur, sampai ada
pelanggan yang datang
• Customer :
▫ Jika tukang potong rambut tidur, bangunkan
barber
▫ Jika ada orang yang sedang potong rambut,
tunggu barber dengan duduk di kursi tunggu
▫ Jika kursi tunggu penuh, tinggalkan toko
Design Solusi
Customer Thread:
Lock(lock)
Barber Thread: if numWaiting < CHAIRS
while true numWaiting = numWaiting+1
Wait(customers) Signal(customers)
Lock(lock) Unlock(lock)
numWaiting = numWaiting-1 Wait(barbers)
Signal(barbers) GetHaircut()
Unlock(lock) else -- give up & go home
CutHair() Unlock(lock)
endWhile endIf
Problem Readers and Writers
• Banyak reader dan writer ingin mengakses suatu
database yang sama (masing-masing satu
thread)
• Banyak reader dapat diproses secara bersamaan
• Writer harus di-sinkronisasi dengan reader dan
writer yang lain
▫ Hanya satu writer pada satu waktu !
▫ Ketika seseorang ingin menulis, harus tidak ada
reader !
Tujuan :
▫ Memaksimumkan concurrency.
▫ Mencegah starvation.
Design Solusi
• Bagaimana membuat model readers dan
writers ?
• Bagaimana variabel keadaan yang kita perlukan
?
▫ .. dan yang mana di-share ?
▫ …. dan bagaimana kita akan memproteksinya ?
• Bagaimana membuat writers menunggu ?
• Bagaimana membuat writer bangun ?
• Bagaimana membuat readers menunggu ?
• Bagaimana membuat readers bangun ?
Is this a valid solution to readers &
writers?
var mut: Mutex = unlocked Reader Thread:
db: Semaphore = 1
rc: int = 0 while true
Lock(mut)
rc = rc + 1
Writer Thread: if rc == 1
Wait(db)
while true endIf
...Remainder Section... Unlock(mut)
Wait(db) ... Read shared data...
...Write shared data... Lock(mut)
Signal(db) rc = rc - 1
endWhile if rc == 0
Signal(db)
endIf
Unlock(mut)
... Remainder Section...
endWhile
• Contoh 2 :
• semaphores A dan B, di-inisialisasi 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
. .
. .
. .
signal(A) signal(B)
signal(B) signal(A)
Resources (3)
• Contoh 3 :
• Bridge Crossing
• Proses
Pi
• Pi meminta (requests) instance dari Rj
Rj
P1
I/O ke buffer Swap
memori
o Dapat dicegah dengan menggunakan I/OP2
buffer Hasil I/O ditransfer ke
memori yang sekarang
digunakan ole P2
Pencatatan Pemakaian
Memori (1)
• Pencatatan memori bertujuan agar dapat
diketahui lokasi-lokasi mana saja di memori
utama yang masih kosong dan sudah terisi
• Ada dua cara pencatatan memori
o Manajemen memori dengan Bit Map (Pemetaan Bit)
o Manajemen memori dengan Link List
Pencatatan Pemakaian
Memori (2)
0
OS
Proses User
512 K
Single-Partition Allocation
• Skema register realokasi (base register) :
digunakan untuk proteksi proses-proses user
terhadap yang lainnya, dan dari
pengubahan code dan data OS
o Relokasi register berisi nilai dari address fisik terkecil
o Register limit berisi range dari address logic
o Setiap address logic harus < register limit
Contoh :
• Misal :
o Register relokasi (base register) = 100040
register limit (limit register) = 74600
o Address logic = 10200
address fisik = 110240
o Address logic = 81000
address fisik = error
Support Perangkat Keras untuk Relokasi
dan Limit Register
Penggunaan Base and
Limit Register
Multiple-Partition
Allocation (1)
• Partisi Fixed-Sized (MFT = Multiprogramming
with a Fixed number of Task)
o Memori dibagi menjadi beberapa blok dengan ukuran tertentu yang
seragam
• Jumlah user process yang bisa running max hanya sejumlah blok
yang disediakan (misal IBM OS/360)
OS OS OS OS OS
P1 P1 P1 Free P5
Free
P4 P4 P4
P2 Free
p d
m- n n
Peng-address-an (2)
• Pembedaan antara user address space
(memori menurut pandangan user) dengan
memori fisik dinyatakan dengan perangkat
keras translasi address; address logic
ditranslasi ke dalam address fisik
Arsitektur Translasi
Address
Model Paging
Model Paging
Page Number
Page Number Frame Number
Frame Number
Perangkat Keras Paging
dengan TLB
Mekanisme TLB
• Translasi address (p,d)
o Bila p berada dalam TLB, dapatkan nomor frame
o Jika tidak, dapatkan nomor frame dari page table dalam memori
EAT = (1 + ) + (2 + )(1 – )
=2+–
Effective Access Time
(EAT)
Misal :
80% hit ratio, artinya page number yang dicari dalam associative register
adalah 80% dari waktu.
Jika terpakai waktu 20ns (nanosecond) untuk melakukan search pada
associative register, dan 100ns untuk akses ke memori, maka pemetaan akses
memori membutuhkan 120ns ketika page number ada dalam associative
register.
Jika page number gagal ditemukan pada associative register (20ns), maka
harus mengakses memori untuk mencari page table dan frame number (100ns),
dan kemudian mengakses byte dalam memori (100ns), sehingga total 220ns.
Effective Access Time (EAT) = 0.80 x 120 + 0.20 x 220 = 140ns
Dengan demikian, ada 40% perlambatan (slowdown) dalam waktu akses
memori (memory access time) yaitu dari 100 ke 140ns
Proteksi
• Proteksi memori diimplementasikan dengan
bit proteksi peng-asosiasi-an pada setiap
frame
• Setiap entry dalam page table memiliki bit
Valid-invalid :
o “valid” menunjukkan page yang terkait dalam address logic suatu proses
dan merupakan page yang legal
o “invalid” menunjukkan page yang tidak berada dalam address space
logic suatu proses
Valid (v) or Invalid (i) Bit
dalam
Page Table
Struktur Page Table
• Hierarchical Paging
• Inverted Page Table
Hierarchical Page Table
• Membagi ruang address logic ke dalam
banyak page table
• Teknik yang sederhana menggunakan dua
level page table
• Partisi page table memungkinkan partisi-
partisi dalam status tak terpakai tidak
berada dalam memori hingga suatu proses
memerlukannya
Struktur Pengaddressan
• Address logic terdiri atas : section number s,
page number p, dan offset d
• s indeks ke dalam outer page table dan p
displacement dalam page table
• Misalnya : pada mesin 32 bit dengan
pagesize 4K : 10 bit section, 10 bit page
number dan 12 bit offset
Section number Page number Page offset
s p d
Skema Page-Table Dua-
Level
Skema Translasi Address
Paging Dua-Level
Performance
• Karena setiap level disimpan sebagai tabel
terpisah dalam memori, konversi address
logic ke address fisik bisa memerlukan
empat (quantuple) akses memori
• Namun, dengan adanya caching maka
performance masih reasonable
o Misal rata-rata cache hit 98%, EAT = 0.98 x 120ns + 0.02 x 520ns = 128ns,
slowdown sebesar 28%
Inverted Page Table
• Page Table hanya menyimpan page
memori yang “real” serta id dari proses yang
memiliki page tersebut
o Mengurangi kebutuhan untuk menyimpan seluruh page dalam memori,
namun meningkatkan waktu untuk pencarian dalam tabel ketika
referensi terjadi
• Menggunakan tabel hash untuk membatasi pencarian ke suatu
(beberapa) entri tabel
Skema Inverted Page-
Table
Shared Page
• Keuntungan paging adalah sharing
common code : satu copy untuk code yang
read-only (reentrant) dan di-share oleh
sejumlah proses
o i.e text editor, compilers, windows system
Contoh Shared Page
Segmentasi
• Skema manajemen memori yang
mendukung pandangan user (user view)
dari memori
o Program merupakan kumpulan segmen
o Segmen merupakan satuan logic untuk :
• Main program, procedure, function
• Local variables, global variables
• Common block, stack
• Symbol table, array
User’s View of a Program
Logical View of
Segmentation
1
4
1
3 2
4
Demand page
0
0
page table
2015
(harddisk)
Struktur Disk
Secara fisik, disk cakram magnetis terdiri atas cakram yang
tersusun secara vertikal.
Kedua sisi atas bawah pada masing-masing cakram dapat
2015
ditulis data kecuali pada permukaan cakram paling atas dan
paling bawah.
Memiliki struktur 3 dimensi:
◦ Silinder
◦ Track
◦ Sector
Struktur Disk
Setiap sisi cakram terdiri atas alur melingkar atau track.
makin ke dalam sisi cakram , alurnya makin kecil
2015
Setiap track terbagi lebih lanjut atas sector.
2015
blue
Pengalamatan Disk
• Disk dialamati secara logika sebagai array satu dimensi.
• Unit terkecilnya adalah blok, baik untuk operasi read atau
write.
2015
• Ukuran blok dilakukan atau disusun pada saat pengformatan
disk.
Pengalamatan Disk
Urutan penomoran alamat logika disk mengikuti aturan :
1. Alamat paling awal, yaitu sektor 0 adalah sektor pertama dari
track pertama pada silinder paling luar.
2. Proses pemetaan dilakukan secara berurut dari Sektor 0, lalu ke
2015
seluruh track dari silinder tersebut, lalu ke seluruh silinder
mulai dari silinder terluar sampai silinder terdalam.
3. Urutan yang mendahulukan silinder yang sama sebelum pindah
ke track berikutnya bertujuan mengurangi perpindahan head
pembacaan pada setiap sisi cakram
Penanganan Disk Request
Operasi disk merupakan operasi khusus yang hanya dapat dilakukan
oleh rutin SO
Mekanisme penanganan disk request adalah sebagai berikut:
2015
1. Suatu proses yang membutuhkan transfer data dari dan ke disk,
maka proses akan memanggil system call SO
2. System call akan memicu SO memblok proses bersangkutan karena
operasi I/O disk akan memakan waktu. Disk request akan ditangani
oleh device driver yang sesuai dengan piranti I/O yang hendak
diakses.
3. Device driver akan memeriksa status disk. Jika sedang sibuk, maka
akan dimasukkan pada antrian disk bersangkutan
Penanganan Disk Request
4. Jika disk tidak sedang digunakan, maka disk request tersebut
akan dilayani dan alamat disk dikirimkan ke disk controller.
5. Operasi write data akan disalinkan oleh DMA controller
2015
atau prosessor dari memori utama ke buffer disk controller
untuk selanjutnya disalin ke piringan disk
operasi read data yang akan dibaca, akan disalin ke buffer
disk controller lebih dulu, baru disalin ke memori utama.
Waktu Penanganan Disk Request
Disk request oleh suatu proses akan menimbulkan waktu
tunda.
proses akan berstatus blocked sampai data yang diminta telah
2015
dipindah ke memori utama.
Waktu yang dibutuhkan untuk memproses disk request terdiri
atas:
1. Overhead time total waktu yang dihabiskan SO untuk
menangani disk request.
2. Queuing time waktu yang dihabiskan di antrian disk.
Waktu Penanganan Disk Request
3. Latency (Random Access Time) waktu yang dibutuhkan
untuk menempatkan head ke lokasi yang hendak diakses.
Latency terdiri atas 2 komponen:
2015
a. Seek time : waktu yang dibutuhkan untuk memindahkan head
ke silinder yang berisi sektor yang dituju.
b. Rotational latency : waktu tambahan yang dibutuhkan untuk
menunggu putaran disk sehingga head beradatepat dibawah
sektor yang hendak diakses.
4. Transfer time waktu untuk mentransfer data dari atau ke
lokasi disk.
2015
Penjadwalan Disk Request
Terjadi pada sistem multitasking.
Berbeda dengan penjadwalan prosessor,
penjadwalan disk request ditujukan untuk meminimalkan total
2015
latency (access time) dan seek time pada operasi transfer data.
Contoh algoritma penjadwalan disk antara lain:
1. FCFS (First Come First Serve)
berdasarkan urutan masuknya di antrian. Umumnya
menghasilkan total access time yang buruk dan terlalu tinggi
Contoh antrian FCFS: (posisi awal head =50)
10, 45, 37, 56, 60, 25, 78, 48, 88, 70, 5, 20
2015
Penjadwalan Disk Request
2. SSTF (Shortest Seek Time First)
disk request yang memiliki seek distance yang paling dekat
dengan posisi head terkini, akan dilayani lebih dahulu
2015
algoritma ini meminimalkan pergerakan head.
• Contoh antrian SSTF: (posisi awal head =50)
10, 45, 37, 56, 60, 25, 78, 48, 88, 70, 5, 20
2015
Penjadwalan Disk Request
3. Elevator / SCAN
mengasumsikan head bergerak satu arah. Jika head sudah
mencapai bagian terluar atau terdalam dari cakram, maka
2015
arah gerak head dibalik.
Contoh antrian SCAN: (posisi awal head =50)
10, 45, 37, 56, 60, 25, 78, 48, 88, 70, 5, 20
2015
Penjadwalan Disk Request
4. One-way elevator /C-SCAN
mirip dengan elevator/SCAN. Bedanya head tidak melakukan
pembalikan arah. Misal: pada saat head bergerak dari arah luar
kedalam, jika head sudah berada didalam, maka arah pergerakan
head akan dikembalikan ke luar lagi, baru gerak head dilanjutkan
2015
lagi. Selama pengembalian posisi, tidak ada operasi baca/tulis.
Contoh antrian C- SCAN: (posisi awal head =50)
10, 45, 37A, 56, 60, 25, 78, 48, 88, 70, 5, 20
2015
Penjadwalan Disk Request
5. LOOK
mirip dengan SCAN. Bedanya head tidak perlu melakukan
perjalanan penuh dari bagian terluar sampai terdalam bila sudah
tidak ada disk request lagi.
2015
pergerakan head bisa langsung dilakukan sebelum sampai track
terdalam.
Contoh antrian LOOK: (posisi awal head =50)
10, 45, 37A, 56, 60, 25, 78, 48, 88, 70, 5, 20
2015
Organisasi Disk
1. Pemformatan fisik (Low-level Formatting)
membagi disk kedalam sektor-sektor, sehingga disk
controller dapat membaca/menulis
2015
operasi ini umumnya dilakukan dari pabrik pembuat disk
2. Pemartisian
membagi disk menjadi satu atau lebih partisi dimana dapat
dipandang secara logika sebagai disk yang terpisah.
suatu partisi belum dapat ditulis sebelum di format secara
logika.
Organisasi Disk
3. Pengformatan secara logika
membangun struktur pengelolaan berkas sebelum data atau
berkas dapat disimpan ke suatu partisi disk.
2015
menentukan unit alokasi berkas atau blok terkecil untuk
alokasi berkas. Pada SO Windows cluster
4. Alokasi blok Booting
membangun struktur untuk malakukan operasi booting yang
biasanya terletak diawal disk bootstrap yaitu program kecil
untuk inisialisasi booting SO.
biasa tersimpan di ROM BIOS pada motherboard.
Organisasi Disk
5. Manajemen Bad Sector.
mengelola, mencatat dan mengalihkan bad block, yaitu satu
atau lebih sektor yang rusak pada disk ke tempat lain agar
2015
tidak ditulisi data.
• Queue : 13, 55, 57, 25, 63, 31, 7, 15, 29, 33
• Initial head : 30
• Silinder : 70
2015
• Algorima apa yang tercepat dalam Penjadwalan Disk Request!