You are on page 1of 507

Buku Pegangan

 A. Silberschatz, P.B. Galvin, Operating System


Concepts 5th Ed., Addison-Wesley, 1998
 A. Silberschatz, P.B. Galvin, G. Gagne, Operating
System Concepts with Java 6th Ed., John Wiley & Sons,
2004
 Stalling, W, Operating System, 2th Ed, New-Jersey :
Prentice-Hall, 1995
 Tanenbaum. Operating System : Design,
Implementation, 4th Ed, New-Jersey : Prentice-Hall,
1995
 Selected papers : case study on various OS : NT,
Solaris, Linux, etc.
Pembahasan
 Apakah suatu Operating System ?
 Perkembangan Operating System
 Struktur-struktur Sistem Komputer
 Struktur-struktur Operating System
Apakah suatu Operating System ?
 Sebagai perantara (intermediatary) user
komputer dengan hardware,
 dalam hal user mengeksekusi program
 dalam hal berinteraksi dengan system resource
Fungsi dan Tujuan SO secara
Obyektif
 Convenience : user merasakan kemudahan dan
kenyamanan dalam penggunaan
 Efficiency : resources system dapat diutilisasi
semaksimal mungkin
 Robustness : kehandalan sistem proteksi terhadap
kesalahan user
 Evolution : memudahkan pengembangan,
mendukung sistem baru dan program aplikasi yang
berkembang
Abstraksi Sistem Komputer
Komponen-komponen Sistem Komputer
 Perangkat keras
 CPU, RAM, storage (hardisk, floppy disk, CDROM, dsb),
piranti I/O (printer, scanner, dsb)
 Operating System
 Mengontrol dan mengkoordinasikan penggunaan
hardware dari berbagai program aplikasi dan user
 Program-program aplikasi
 Pengaturan penggunaan system resources untuk
pemecahan problem kebutuhan user (kompiler, sistem
basis data, games, dan program-program untuk bisnis)
 User
 Orang, mesin, atau komputer lain
Definisi Operating System
 Sebagai System Resource Allocator
 OS sebagai resource manager diperlukan
 karena adanya beberapa user/program aplikasi
 Karena adanya beberapa resource untuk dapat diutilisasi oleh
user/program aplikasi dalam suatu keterbatasan
 Manajemen diperlukan untuk mencegah konflik dan
berperan sebagai interface
Definisi Operating System
(Lanjutan…)
 Sebagai Control Program
 Mengontrol eksekusi program dari adanya kesalahan
utilisasi
 Menghindari pemakaian komputer yang tidak benar
 Khususnya untuk I/O device
 Sebagai Kernel
 OS merupakan program yang berjalan sepanjang sistem
perangkat keras dihidupkan
Jadi apa definisi Operating System ?
 Dalam hal OS sebaiknya kita tidak membatasi diri dengan
definisi karena definisi akan berkembang sejalan dengan
perkembangan teknologi dan kebutuhan, tetapi secara
garis besar system operasi bisa diberi defenisi sbb :
• Software yang mengontrol hardware
• Program yang menjadikan hardware lebih mudah untuk
digunakan
• Kumpulan program yang mengatur kerja hardware sesuai
keinginan user
• Manager sumber daya atau pengalokasian sumber daya
• Sebagai program pengendali
• Sebagai kernel
• Sebagai guardian (pengawal) yang menjaga komputer dari
berbagai kejahatan komputer
Konsep Dasar SO Secara Global
 Sistem komputasi adalah hanya sebuah mesin yang
dijalankan oleh programmer yang juga bertindak
sebagai operator
 Proses-proses masih sederhana dan diaktifkan melalui
console dan tombol-tombol pada panel
 Punch card / paper
 Bahasa mesin
 Buffer, flag, register dan control bit lain
Hasil Perkembangan Teknologi HW
 Teknologi storage : magnetic tape
 Program dan data dapat disimpan dalam media yang
berkapasitas besar dan relatif mudah di-load
 Modul-modul perangkat lunak pendukung yang
membantu pengoperasian perangkat keras serta
memberikan lingkungan yang lebih baik bagi pembuat
program aplikasi
 Device driver (misalnya I/O), library fungsi komputasi,
assembler, modul loader
High Level Language
 Hasil lebih lanjut : munculnya high level language
 Sehingga penulisan program menjadi jauh lebih mudah
 Tahapan pemrograman :
 Program (source code) ditulis dalam bahasa ybs
 Dikompilasi oleh compiler ke dalam assembly
 Ditranslasikan ke dalam bahasa mesin (object code) oleh
assembler
Tahapan Eksekusi
 Load compiler
 Masukan : source code, keluaran : assembly code
 Me-load assembler
 Masukan : assembly code, keluaran : object code
 Me-load linker
 Masukan : object code & library, keluaran : executable code
 Run executable code
 Jika terjadi error seluruh rangkaian harus diulangi
I. Sistem-sistem Batch Sederhana
 Operator
 Secara khusus menangani beroperasinya sistem
 Programmer
 Menspesifikasikan aktifitas-aktifitas job
 Automatic Job Sequencing : transfer kontrol secara
otomatis dari satu job ke job yang lain. Menjadi
dasar awalnya operating system
 Resident Monitor
 Program kecil untuk melakukan Automatic Job
Sequencing
Ilustrasi Batch System

 Operator membawa card ke 1401 : card dibaca oleh card reader


 Hasil pembacaan data dari card reader dismpan ke dalam tape
 Operator membawa ke 7094 untuk melakukan komputasi
 Outputnya kemudian dimasukkan ke output tape
 Operator membawa hasil output tape ke 1401 untuk dicetak
Layout Memori Sistem Batch
Sederhana
1. Resident Monitor
 Program selalu resident di Loader

memory Job sequencing


Control card interpreter
 Diaktifkan saat komputer
dihidupkan
 Transfer kontrol ke program User program area
yang di-load & dikembalikan
saat program selesai
 Control card berisi spesifikasi
bagaimana program
dijalankan
Kelemahan Batch System
 Masih ketergantungan pada operator manusia untuk
setup dan sequencing
 CPU lebih banyak idle saat pergantian job atau I/O
2. Overlapped Operations
 Overlapping bekerjanya CPU dan I/O
 Maksimalisasi utilisasi CPU dan I/O devices
 Aktifitas-aktifitas dalam running job : card reading, CPU,
line printing
 Metode off-line : loading job ke dalam memory
dari tape, card reading, dan line printing secara off-
line
 Spooling : ketika melakukan suatu job, OS :
 Membaca job berikutnya dari card reader ke dalam
storage pada disk (job queue)
 Output pada job sebelumnya dicetak dari disk ke printer
Overlapped Operations (lanjutan)
 Job pool : struktur data yang memungkinkan OS
memilih job yang mana yang akan dieksekusi
berikutnya untuk meningkatkan utilisasi CPU
II. Multiprogramming Sistem Batch
 Beberapa job di simpan dalam memori pada
waktu yang sama, dan CPU mengerjakan job
tersebut secara bersamaan (multiplexing)
Kebutuhan OS untuk
Multiprogramming
 Fungsi/routine untuk I/O disediakan oleh sistem
 Manajemen memori : sistem harus dapat
mengalokasikan memori untuk beberapa job
 CPU scheduling : sistem harus mampu mengorganisir
penjadualan beberapa job yang di-run.
 Pengalokasian devices
III. Sistem Time-Sharing, Interactive
Computing
 CPU di-multiplex antara beberapa job dan
disimpan dalam memori & disk (CPU dialokasikan
untuk job jika job tersebut ada di memori)
 Job di swap-in dan swap-out dari memori ke disk
 Komunikasi on-line antara user dan sistem; ketika
OS menyelesaikan eksekusi dari suatu command ,
maka OS akan mencari ‘control statement’
berikutnya dari user (keyboard)
 Sistem on-line harus tersedia untuk user untuk
mengakses data dan code
IV. Multiprocessing System
 Merupakan suatu system yang memiliki lebih dari
1 CPU (Processor).
 Pengerjaan Job dilakukan dgn 2 cara :
1. Paralel System
2. Distributed system
Parallel System
 Sistem multiprocessor dimana terdapat lebih dari satu
CPU
 Tightly coupled system – processor membagi bersama
(sharing) memori dan clock; komunikasi terjadi
biasanya melalui shared memory
 Keuntungan Sistem Parallel
 Meningkatkan throughput
 Ekonomis
 Meningkatkan reliabilitas
Parallel System (Lanjutan..)
 Symmetric multiprocessing (SMP)
 Masing-masing processor run dan memiliki OS yang
identik
 Pemrosesan yang banyak tidak menyebabkan
penurunan performance
 OS modern banyak yang mendukung sistem SMP
 Asymmetric multiprocessing
 Masing-masing processor diberikan tugas (task) yang
spesifik; master processor menjadual dan
mengalokasikan pekerjaan (work) pada slave processor
 Umumnya digunakan pada sistem yang besar
Arsitektur Symmetric Multiprocessing
Distributed System
 Loosely coupled system : Setiap site memiliki
processor, memori lokal dan clock sendiri namun
semua resource dapat diakses dari setiap site (eg.
Database)
 OS mengatur alokasi resources & load sharing untuk
speedup tingkat komputasi
 Jika suatu site down, site yang lain tetap bisa running
(khusus data diperlukan duplikasi) - reliability
 Komunikasi data digunakan melalui jaringan atau
sistem interkoneksi (switch)
Distributed System (Lanjutan..)
 Membutuhkan infrastruktur jaringan (network)
 Local Area Network (LAN), Wide Area Network
(WAN), Wireless LAN (WLAN)
 Metode sistem dapat bersifat client-server atau peer-
to-peer
Struktur Umum Client-Server
Struktur Umum Peer-to-Peer
 Arsitektur sistem terdistribusi
 Tidak ada kontrol tersentralisasi
 Node-node memiliki fungsi
symmetric
 High capacity Node
 Many disk Node
Node
 Many network connection
 Many CPU Internet

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

View publication stats


Struktur Sistem
Komputer
Pembahasan
 Operasi Sistem Komputer
 Struktur I/O
 Struktur Storage
 Hirarki Storage
 Proteksi Perangkat Keras
 Sistem Arsitektur Umum
Arsitektur Sistem Komputer
Booting
 Bootstrap program
◦ Inisialisasi sistem, seperti : CPU register,
device controllers, memory, dsb
◦ Load and run the OS
 Operating system: run init untuk
inisialisasi sistem proses, seperti :
various daemons, login processes, dsb.
Operasi Sistem Komputer (1)

 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)

Penyebab Terjadinya Interrupt


 OS menjaga kondisi (state) dari CPU
dengan menyimpan register dan program
counter
 Menentukan tipe interrupt :
◦ Polling
◦ Vectored interrupt system
 Segmen-segmen kode yang terpisah
menentukan action apa yang dilakukan
untuk masing-masing tipe interrupt

Interrupt Handling
Contoh Interrupt Vector Table
Abstraksi Interrupt I/O Device

(a) (b)

 (a) Tahapan eksekusi I/O device dan


generate interrupt
 (b) Bagaimana proses CPU di-interrupt
Interrupt Time Line For a Single
Process Doing Output
Siklus Interrupt I/O (1)
Siklus Interrupt I/O (2)
Struktur I/O - Interrupt
 Synchronous I/O. Ketika I/O dijalankan,
control dikembalikan ke user proses setelah
proses I/O selesai
 Menunggu instruksi idle sampai instruksi berikutnya
 Menunggu loop (akses memory)
 Hanya satu permintaan I/O dijalankan, tidak ada
pemrosesan I/O secara simultan
 Asynchronous I/O. Ketika I/O dijalankan,
control dikembalikan ke user proses tanpa
menunggu proses I/O selesai
 System call, permintaan ke OS dari user untuk
menjalankan I/O
 Device status table, berisi entry I/O device : tipe,
address dan status
 OS mengindeks I/O device table untuk menentukan
status device dan memodifikasi table untuk interrupt
Dua Metode I/O

Synchronous Asynchronous
Device-Status Table
Struktur I/O - DMA

 I/O device dengan kecepatan tinggi tanpa


memerlukan CPU
 Device controller mentransfer block data
dari buffer storage langsung ke memory
tanpa intervensi CPU
 Interrupt di-generate per-block, tidak per-
byte
Proses DMA
Struktur Storage
 Main memory : media storage yang dapat
diakses langsung oleh CPU, kapasitas kecil
(volatile)
◦ Volatile : isi data hilang jika power dimatikan
 Secondary storage : penyimpanan data
dengan kapasitas besar (non-volatile)
◦ Non-volatile : data masih tersimpan walaupun
power dimatikan
 Magnetic disk : permukaan disk dibagi
dalam track dan sector
 Magnetic tape
Hirarkhi Storage (1)

 Hirarki sistem storage diorganisasikan


berdasarkan :
◦ Speed
◦ Cost
◦ Volatility
 Caching : copy informasi ke sistem
storage yang lebih cepat; main memory
dapat dipandang sebagai cache terakhir
dari secondary storage
Hirarkhi Storage (2)

 Trade-off : cost & speed


Caching

 Memory dengan kecepatan akses tinggi


 Membutuhkan aturan cache management
 Penggunaan caching mengharuskan data
yang secara simultan tersimpan dalam
lebih dari satu level hirarki storage
konsisten
Abstraksi Migrasi Data
 Dual-mode Operation
 I/O Protection
 Memory Protection
 CPU Protection

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

Operasi Dual-Mode (1)


Operasi Dual-Mode (2)
 Mode bit digunakan untuk mengindikasikan
mode yang sedang dijalankan : monitor (0)
atau user (1).
 Ketika interrupt atau kesalahan terjadi
hardware di-switch ke monitor mode
Interrupt/fault

monitor user
set user mode

Privileged instructions hanya dapat dilakukan oleh monitor mode


Proteksi I/OI/O menggunakan
 Semua instruksi
privileged instructions
 Harus dipastikan bahwa user program
tidak mendapat control komputer dalam
kondisi monitor mode (dimana user
program, sebagai bagian dari eksekusi,
menyimpan alamat baru dalam interrupt
vector)
Prosedur Request I/O
 Instruksi I/O adalah privileged, bagaimana
user program menjalankan I/O ?
 System call – Metode yang digunakan oleh
proses untuk meminta suatu tindakan
(action) oleh OS
◦ Biasanya memanfaatkan trap pada lokasi spesifik
dalam interrupt vector
◦ Control dilewatkan melalui interrupt vector ke
service routine OS, dan mode bit di-set menjadi
monitor mode
◦ Monitor memeriksa apakah parameter benar &
legal, kemudian mengeksekusi request, dan
mengembalikan control ke instruksi system call
berikutnya
System Call untuk
Menjalankan I/O
Proteksi Memory
 Harus menyediakan proteksi memory untuk
interrupt vector dan interrupt service
routines (ISR)
 Prosedur proteksi memory, tambahkan dua
register yang menentukan range legal
address akses program :
◦ Base register – menyimpan alamat memory fisik
terkecil
◦ Limit register – berisi ukuran range
 Memory diluar range yang didefinisikan
diproteksi
Penggunaan Base and Limit
Register
Proteksi Hardware Address
Proteksi Hardware
 Ketika eksekusi pada kondisi monitor
mode, OS memiliki akses bebas (monitor
dan memory user)
 Instruksi yang di-load pada base & limit
register adalah priviliged instruction
Proteksi CPU
 Timer – interrupt komputer setelah
periode tertentu untuk memastikan OS
me-maintain control
 Timer diturunkan setiap clock tick
 Ketika nilai timer = 0, interrupt terjadi
 Timer biasanya digunakan untuk
implementasi time sharing
 Time juga digunakan untuk menghitung
waktu sekarang
 Load-timer adalah privileged instruction.

View publication stats


STRUKTUR
SISTEM OPERASI
Pembahasan

• Komponen-komponen Sistem
• Layanan OS
• System Calls
• System Programs
• System Structure
• Virtual Machines
• System Design & Implementasi
• System Generation
Struktur-struktur OS

• Tanpa adanya modularitas maka fungsi dan


struktur OS secara keseluruhan rumit
• Dibagi dalam modul dengan fungsi tertentu,
dengan akses (input, output) tertentu
I. Modul/Komponen dalam Sistem
• Modul Manajemen Proses
• Modul Manajemen Memori
• Modul Manajemen Storage/Data
• Modul Manajemen I/O dan Berkas (File)
• Modul Proteksi
• Modul Networking
• Modul Interface dengan user (command
interpreter)
1. Manajemen Proses

• Proses adalah program yang dieksekusi,


memerlukan resource, CPU time, memory, file,
I/O device.
• OS bertanggung jawab dalam :
• Create & delete ; baik proses user maupun sistem
• Suspend & meneruskan proses
• Mendukung mekanisme-mekanisme sinkronisasi
proses
• Mendukung mekanisme proses communication
• Mendukung mekanisme penanganan deadlock
2. Manajemen Memori Utama

• Memory merupakan array words/byte dalam


jumlah besar. Akses share data secara cepat oleh
CPU dan I/O device
• Volatile storage device
• OS bertanggung jawab dalam :
• Keep track bagian mana dari memori yang sedang
digunakan & oleh siapa
• Memutuskan proses-proses mana yang di-load ke
ruang memori saat available
• Alokasi & dealokasi ruang memori
3. Manajemen Secondary-Storage
• Back up main memory, non-volatile
• Data dan program disimpan dalam secondary storage
(penyimpanan sekunder; disk)
• OS bertanggung jawab dalam :
– Bagaimana mengelola ruang yang kosong dalam storage
– Bagaimana mengalokasi storage
– Bagaimana melakukan scheduling penggunaan disk
4. Manajemen I/O
• OS bertanggung jawab dalam :
• “menyembunyikan” kekhususan perangkat keras
tertentu dari user
• Melakukan optimalisasi dalam akses
• Buffer cache system : menampung sementara data dari/ke
piranti I/O
• Spooling : melakukan penjadwalan pemakaian I/O sistem
supaya lebih efisien (antrian, dsb)
• Interface device-driver : open, read, write, close
• Drivers untuk spesifik perangkat keras :
• Menyediakan driver untuk melakukan operasi detail
untuk perangkat keras tertentu
Manajemen File
• Berkas (File) adalah kumpulan informasi yang
berhubungan (sesuai dengan tujuan pembuat
berkas tersebut). Biasanya berkas
merepresentasikan program dan data
• OS bertanggung jawab dalam :
• Pembuatan dan penghapusan file
• Pembuatan dan penghapusan direktori
• Mendukung primitif-primitif manipulasi file dan direktori
• Pemetaan file dalam secondary storage
• Backup file dalam media yang stabil (non-volatile)
5. Networking (Distributed System)
• Distributed system : kumpulan prosesor yang
terdistribusi, tidak berbagi (share) memory atau
clock. Setiap prosesor memiliki memori lokal masing-
masing
• Prosesor-prosesor dalam sistem terhubung dalam
jaringan komunikasi
• Sebagai pengatur (protokol) dalam komunikasi data
• Menentukan strategi-strategi menangani masalah-
masalah komunikasi
• Mengatur network file system
• Dengan adanya shared resource :
– Peningkatan kecepatan komputasi
– Peningkatan penyediaan data
– Meningkatkan reliabilitas (kehandalan)
6. Sistem Proteksi

• Mekanisme untuk mengontrol akses yang dilakukan oleh


program, prosesor atau user ke resource-resource dalam
sistem komputer
• Mekanisme proteksi :
• Dapat membedakan pemakaian yang sah (authorized) & yang
tidak sah (unauthorized)
• Spesifikasi kontrol yang dikenakan
• Menyediakan alat untuk pemberlakuan sistem
7. Command Interpreter (1)
• Memungkinkan sistem berkomunikasi dengan user
melalui perintah-perintah menjalankan proses yang
telah didefinisikan dan parameternya serta melakukan
respon
• OS menunggu instruksi dari user (command driven)
• Control statement berhubungan dengan :
– process creation and management
– I/O handling
– secondary-storage management
– main-memory management
– file-system access
– protection
– networking
Command Interpreter (2)
• Program yang membaca instruksi dan mengartikan
control statements (keinginan pengguna)
umumnya disebut :
• control-card interpreter
• command-line interpreter
• UNIX Shell
• Command-Interpreter System sangat bervariasi
dari satu sistem operasi ke sistem operasi yang
lain dan disesuaikan dengan tujuan dan teknologi
I/O peranti yang ada.
• Contohnya : CLI, Windows, Pen-based (touch), dll
II. Layanan Operating System (1)
• Eksekusi program : load program user ke memory dan
menjalankannya (run)
• Operasi-operasi I/O : pengguna tidak bisa mengontrol I/O
secara langsung (untuk efisiensi & keamanan), sistem
harus bisa menyediakan mekanisme untuk melakukan
operasi I/O
• Manipulasi file system : read, write, create & delete
Layanan Operating System (2)
• Komunikasi antar proses :
• Baik yang run di komputer yang sama atau berlainan via jaringan.
Implementasi melalui shared memory atau message passing
• Error detection
• Menjamin komputasi yang benar dengan mendeteksi error : CPU,
memori, I/O device, atau user program
Layanan OS Internal
• Resource allocation
• Alokasi resources bagi sejumlah user atau job yang running pada
saat yang sama
• Accounting
• Mencatat user mana, berapa banyak, dan resource komputer apa
saja (untuk account billing atau penghitungan statistik)
• Protection
• Menjamin agar semua akses ke resource-resource sistem
terkendali
III. System Call
• Menyediakan antarmuka antara proses (program
yang run) dengan OS
• Umumnya dalam bentuk instruksi bahasa assembly
• Bahasa untuk system programming tingkat tinggi
biasanya memungkinkan system call dilakukan
langsung
– Misal C, C++, Bliss, PL/360
• Tiga metode untuk passing parameter antara running
program dan OS :
– Pass parameter melalui register
– Meyimpan parameter dalam blok atau tabel pada memory,
dan alamat tabel di-passing sebagai parameter dlm register
– Menyimpan parameter (push) ke dalam stack (oleh
program), dan pop off parameter pada stack (oleh OS)
Passing Parameter menggunakan
Tabel
Contoh System Call
• Urutan System call untuk meng-copy isi file ke file yang
lain
Hubungan API – System Call – OS
Standard C Library Example
• C program memanggil fungsi printf() library call, yang
memanggil write() system call
Jenis-jenis System Call

• 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

At System Start-up Running a Program


UNIX Menjalankan Multiple Program
Model Komunikasi
• Komunikasi dapat dilakukan dengan cara message
passing atau shared memory

Message Passing Shared Memory


IV. Pemrograman Sistem
• Pemrograman sistem menyediakan lingkungan
yang memungkinkan pengembangan program
dan eksekusi berjalan dengan baik
• Dapat dikategorikan :
• Manipulasi Berkas (File)
• Informasi Status : tanggal, jam, jumlah memori, disk, dll
• Modifikasi Berkas
• Mendukung bahasa pemrograman : kompilator,
assembly, interpreter
• Loading & eksekusi program
• Komunikasi : menyediakan mekanisme komunikasi
antara proses, user dan sistem komputer yang berbeda
• Dari sisi user, operasional sistem dilakukan
dengan system program, bukan system call
V. Struktur Sistem

• Struktur Sederhana
• Metode Pendekatan Terlapis (Layered Approach)
• Mikrokernel
Struktur Sederhana

• Dimulai dengan sistem yang kecil, sederhana dan


terbatas kemudian berkembang dengan cakupan original
• Struktur sistem MS-DOS :
• disusun untuk mendukung fungsi yang banyak pada ruang yang
kecil
Struktur Lapisan MS-DOS
Struktur Sistem UNIX (1)
• Memiliki struktur yang terbatas
• Terdiri dari 2 bagian :
• Kernel :
• Berada dibawah antarmuka system call dan diatas hardware
• Menyediakan sistem berkas, penjadualan CPU, manajemen memori,
device driver, dan fungsi OS lainnya
• Program Sistem
Struktur Sistem UNIX (2)
Pendekatan Terlapis (Layered
Approach) (1)
• Lapisan adalah implementasi dari objek abstrak yang
merupakan enkapsulasi dari data dan operasi yang bisa
memanipulasi data tersebut
• Lapisan paling bawah : perangkat keras
• Lapisan paling atas : antarmuka pengguna
Pendekatan Terlapis (Layered
Approach) (2)
• Keuntungan : modularitas
• Mempermudah debug dan verifikasi sistem
• Lapisan pertama bisa di-debug tanpa mengganggu sistem yang
lain
• Kesulitan :
• Hanya bisa menggunakan lapisan dibawahnya
• Tidak efisien dibandingkan tipe yang lain
Lapisan Operating System
System Structure – Layered Approach
• Suatu rancangan yang pertama digunakan dalam OS,
terdiri atas 6 layer : THE Operating System (Dijkstra,
1968)
• Level 5 : user program
• Level 4 : buffering untuk input & output device
• Level 3 : operator-console device driver
• Level 2 : memory management
• Level 1 : CPU scheduling
• Level 0 : hardware

THE : Technische Hogeschool at Eindhoven


Abstraksi Lapisan Operasi OS
Struktur Lapisan OS/2
Kernel
• Kategori kernel :
• Monolithic kernel. Kernel yang menyediakan abstraksi
akses ke perangkat keras yang kaya dan handal.
Semua layanan OS dilakukan pada kernel .
• Microkernel. Kernel yang menyediakan hanya
sekumpulan kecil abstraksi perangkat keras
sederhana, dan menggunakan aplikasi-aplikasi yang
disebut sebagai server untuk menyediakan fungsi-
fungsi lainnya.
• Hybrid (modifikasi dari microkernel). Kernel yang mirip
microkernel, tetapi ia juga memasukkan beberapa
service tambahan di kernel (network stack, file
system) agar menjadi lebih cepat.
• Exokernel. Kernel yang tidak menyediakan sama
sekali abstraksi hardware, tapi ia menyediakan
sekumpulan library yang menyediakan fungsi-fungsi
akses ke perangkat keras secara langsung.
Diagram Monolithic Kernel

• Semua code pada address space yang sama


(kernel space)
• Meningkatkan performance system
• Mudah dalam hal design dan implementasi
• Bugs dapat menyebabkan sistem crash
Diagram Mikrokernel

• Banyak layanan OS yang run pada user space


untuk me-minimalisasi kernel (seperti
networking)
• Modularity : mudah dalam me-memaintain code
Diagram Hybrid Kernel

• Running beberapa layanan OS (network stack,


file system) dalam kernel space untuk
mengurangi performance overhead dari metode
microkernel, tetapi tetap menjalankan kernel
code (seperti device driver) sebagai server di
user space
Mikrokernel (1)

• Menyusun sistem operasi dengan menghapus


semua komponen yang tidak esensial dari
kernel, dan mengimplementasikannya sebagai
sistem program dan level pengguna
• Fungsi utama : mendukung fasilitas komunikasi
antara program klien dan bermacam-macam
layanan yang juga berjalan di user-space
Mikrokernel (2)
• Keuntungan :
• Ketika layanan baru akan ditambahkan ke user-space,
kernel tidak perlu di-modif
• OS lebih mudah ditempatkan (porting) pada suatu
desain perangkat keras ke desain perangkat keras
lainnya (asrsitektur sistem yang baru)
• Mendukung keamanan & reliabilitas lebih
• Contoh sistem operasi :
• Tru64 UNIX, MacOSX, QNX
Virtual Machine (VM) (1)
• Menggunakan layered approach
• Melihat hardware dan kernel OS sebagai suatu
“hardware”
• Menyediakan interface yang identik dengan
underlaying bare hardware
• OS menyediakan illusion dari banyak proses
yang masing-masing berjalan pada prosesornya
serta memorinya (virtual) sendiri
Virtual Machine (VM) (2)
• Resource dari komputer fisiknya di-share menjadi
sejumlah mesin-mesin virtual
• CPU scheduling yang menciptakan penampilan seakan-akan user
memiliki prosesor sendiri
• Spooling & file system menyediakan virtual card readers dan virtual
line printers
• Sebuah time-sharing terminal user berlaku sebagai virtual console
• VM software membutuhkan ruang di dalam disk untuk
menyediakan memori virtual dan spooling, yaitu sebuah
disk virtual
Perbandingan Model Sistem

Non-virtual Machine Virtual Machine


Windows Vista Host Operating System
Keuntungan & Kerugian VM (1)
• Memberikan proteksi terhadap system resources karena
setiap VM terisolasi dari yang lainnya
• Isolasi ini tidak memungkinkan direct sharing dari
resources
• Merupakan alat research & development dalam OS
Keuntungan & Kerugian VM (2)
• Pengembangan sistem dilakukan pada VM
sehingga tidak menganggu OS
• Konsep VM sulit diimplementasi akibat perlunya
menyediakan duplikat yang persis dari mesin
dibawahnya (underlaying machine)
• Harus punya virtual-user mode dan virtual-monitor
mode yang keduanya berjalan di-physical mode.
Akibatnya, saat instruksi yang hanya membutuhkan
virtual monitor mode dijalankan, register berubah dan
bisa berefek pada virtual user mode, bahkan bisa me-
restart VM
• Waktu yang dibutuhkan I/O bisa lebih cepat
(karena ada spooling), tapi bisa lebih lambat (
karena di-interpreted)
Java Virtual Machine (1)
• Program Java yang telah di-compile adalah platform-
neutral bytecodes yang dieksekusi oleh Java Virtual
Machine(JVM)
• JVM terdiridari :
• class loader
• class verifier
• runtime interpreter
• Just In-Time(JIT) kompilator meningkatkan kinerja
Java Virtual Machine (2)

• Java Development Environment (JDE) terdiri dari sebuah


compile time environment yang mengubah java sources
code menjadi bytecode, dan sebuah run time environment
yang menyediakan Java platform system
Java Virtual Machine (3)
VI. Perancangan Sistem
• Masalah : menentukan tujuan dan spesifikasi
sistem.
• Perancangan sistem dipengaruhi oleh perangkat keras
dan jenis sistem sehingga kebutuhan-nya akan lebih
sulit untuk dispesifikasikan.
• User goals
• OS harus nyaman untuk digunakan, mudah dipelajari,
reliable, aman dan cepat
• System goals
• OS harus mudah dirancang, diimplementasikan dan di-
maintain, serta fleksibel, reliable, error-free dan efisien
Mekanisme & Kebijakan

• Mekanisme menjelaskan bagaimana melakukan


sesuatu, kebijakan menentukan apa yang akan
dilakukan
• Pemisahan kebijakan dari mekanisme adalah hal
yang sangat penting, untuk memungkinkan
fleksibilitas yang tinggi jika kebijakan akan diubah
suatu saat.
• Kebijakan penting untuk semua alokasi sumber
daya dan menjadualkan masalah, menentukan
perlu atau tidaknya mengalokasikan sumber
daya.
• Mekanisme yang menentukan apa dan
bagaimana
Implementasi Sistem
• Secara tradisional OS ditulis dalam bahasa assembly, tapi
sekarang OS dapat ditulis dalam bahasa pemrograman
tingkat tinggi (HLL)
• Keuntungan penulisan dengan HLL :
• Dapat ditulis lebih cepat
• Lebih padat (compact)
• Mudah dipahami & di-debug
• Lebih portabel : mudah dipindahkan ke perangkat keras lain
System Generation (SYSGEN)
• OS dirancang untuk run pada berbagai kelas
mesin, harus dikonfigurasikan untuk setiap
spesifikasi komputer
• Program SYSGEN memperoleh informasi
berkaitan dengan konfigurasi spesifik suatu
sistem HW, antara lain :
• CPU apa yang digunakan, pilihan yang diinstal
• Berapa banyak memori yang tersedia
• Peralatan yang tersedia
• Sistem operasi pilihan apa yang diinginkan atau
parameter apa yang digunakan
System Boot
• Booting – memulai komputer dengan me-load kernel
• Bootstrap program – code yang disimpan dalam ROM
(Firmware) yang mencari kernel dan me-loadnya ke
memori serta memulai eksekusinya

View publication stats


PROSES
PEMBAHASAN

 Konsep Proses
 Penjadualan Proses

 Operasi-operasi pada Proses

 Cooperating Processes

 Interprocess Communication

 Komunikasi pada Sistem Client-Server


KONSEP PROSES

 Proses : suatu program yang sedang


dieksekusi dan memiliki status jalannya
eksekusi yaitu minimal informasi-informasi
sbb :
◦ Program counter : menunjukkan instruksi berikutnya
yang akan dieksekusi
◦ Register : data hasil eksekusi antara
◦ Stack : tempat penyimpanan temporary data yang
dibutuhkan selama program dieksekusi
◦ Data section : mengandung variabel global dari suatu
proses
 Dalam literatur, istilah job dan proses dan
task sering dapat dipertukarkan
PERKEMBANGAN KONSEP PROSES
 Konsepproses berkembang sejalan dengan
modus operasi sistem komputer :
 Fase-fase monoprogramming : pada suatu saat di
memori hanya sebuah program yang sedang dijalankan
(mungkin disertai suatu monitor proses)
 Fase-fase multiprogramming : pada suatu saat di
memori bisa terdapat beberapa program yang sedang
dijalankan
KONSEP PROSES MONOPROGRAMMING

 Program oleh proses monitor (atau


operator) di-load ke memori, dieksekusi
(kontrol diberikan pada proses), dan selesai
(sukses atau abort), kemudian kontrol
dikembalikan ke proses monitor (atau
operator)
 Status proses direkam dan di-print hanya
diperlukan untuk keperluan debugging
KONSEP PROSES MODERN

 Karena adanya sejumlah program yang di-load


dimemori dalam status sedang dijalankan, maka
setiap saat jumlah aktual proses yang
dieksekusi maksimum sama dengan jumlah CPU
 Untuk pembahasan konsep proses selanjutnya
akan berdasarkan paradigma ini
STATUS PROSES

 Selama eksekusinya proses berada dalam salah


satu dari status-status berikut ini :
 New : proses sedang di-create
 Running : instruksi-instruksi sedang dieksekusi
 Waiting : proses sedang menunggu terjadinya event-
event tertentu
 Ready : proses menunggu di-assign ke prosesor
 Terminated : proses selesai eksekusi
DIAGRAM STATUS PROSES
PROCESS CONTROL BLOCK (PCB)
 Agar suatu proses yang running, lalu
waiting/ready, dan kemudian running kembali
dapat meneruskan proses tanpa kehilangan
konteks maka diperlukan struktur data untuk
menyimpan informasi dan status proses, disebut
Process Control Block (PCB)
 Satu blok digunakan untuk satu proses dan
isinya bisa bervariasi dari proses ke proses
INFORMASI DALAM PCB

 Informasi Manajemen Memori


 Posisi program di memori, dll
 Informasi Accounting
 Jumlah waktu eksekusi/elapse, time limit, account/job
number, dll
 Informasi Status I/O
 List dari I/O device yang dialokasi proses, list file yang
status sedang dibuka (baca/tulis), dll
PROCESS CONTROL BLOCK (PCB)
PROSES-PROSES DARI MEMORI UTAMA KE
REGISTER
CPU SWITCH DARI PROSES KE
PROSES
SCHEDULING PROSES

 Dalam multiprogramming sejumlah proses yang running


secara concurrent menggunakan resources : CPU dan
devices
 Jika hanya ada satu prosesor (uniprosesor) maka hanya
satu proses setiap saat yang benar-benar running dan
yang lainnya menunggu (waiting) dalam queue atau
melakukan aktifitas I/O
QUEUE UNTUK SCHEDULING

 Job queue berisi seluruh proses di dalam sistem


 Ready queue berisi proses-proses yang berada di
memori dan siap (ready)/ menunggu (wait) untuk
dieksekusi
 Device queue – proses-proses yang menunggu giliran
penggunaan device tertentu
 Proses berpindah antara bermacam-macam queue
READY QUEUE DAN I/O DEVICE
QUEUES
REPRESENTASI PROCESS SCHEDULING

= queue (ready queue & device queue)

= resource yang melayani queue


SCHEDULER

 Long-term scheduler (job scheduler)


 Memilih proses yang mana yang harus dibawa ke dalam
ready queue
 Menentukan degree of multiprogramming
 Lebih jarang (second, minute)  (may be slow)

 Short-term scheduler (CPU scheduler)


 Memilih proses mana yang harus dieksekusi berikutnya dan
mengalokasi CPU untuknya
 Lebih sering (milisecond)  (must be fast)

 Medium-term scheduler : swap proses In dan


Out antara memori dan swap-device untuk
mengubah karakteristik dari proses dalam
penggunaan memori atau I/O device
STATUS PROSES - SCHEDULER
long-term scheduler

short-term scheduler
DIAGRAM PERPINDAHAN PROSES

Swap in Swap out


Baru terproses sebagian &
di swap-out sementara medium term scheduler

new Ready queue CPU end

I/O I/O waiting queue

long-term scheduler
short-term scheduler
STATUS PROSES - UPDATE
I/O VS CPU BOUNDS

 Proses-proses dapat dideskripsikan sbb :


 I/O-bound process : proses-proses yang melakukan I/O
dalam jumlah waktu yang lebih banyak daripada untuk
komputasi; banyak terdapat CPU burst yang pendek
 CPU-bound process : proses-proses yang melakukan lebih
banyak komputasi; beberapa CPU burst yang panjang
CONTEXT SWITCH

 Saat CPU dipindahkan dari suatu proses ke proses


yang lain sistem harus menyimpan status dari proses
lama dan me-load status proses yang baru
 Tugas ini dilakukan oleh context switch
 Waktu untuk context-switch merupakan overhead
(waktu sistem “terbuang” saat switching)
 Jumlah waktu ini bergantung pada dukungan
Hardware
OPERASI PADA PROSES-PROSES

 Dalam multiprogramming akan ada proses yang baru


mulai, dan ada proses yang selesai, disamping proses-
proses yang sedang running
 Untuk dapat dimanage maka diperlukan mekanisme
tertentu untuk menangani aktifitas create dan
terminate proses
PROSES CREATION

 Mekanisme “ayah-anak” atau “parent-child” : proses


“parent” meng-create proses “child” yang juga dapat
meng-create proses-proses lainnya membentuk pohon
(tree) dari proses-proses
 Pada fase-fase awal : code dari user program di-load ke
memori, control dialihkan ke program, proses berjalan
hingga selesai/abort, dan control kembali ke monitor
MODUS-MODUS SAAT
CREATE PROSES (1)
 Dalam hal resource sharing
 Parent & child men-share semua resource
 Child men-share subset dari resource-resource milik
parent
 Parent & child tidak men-share apa pun

 Dalam hal eksekusi


 Parent & child dieksekusi secara concurrent
 Parent menunggu hingga child terminate
MODUS-MODUS SAAT
CREATE PROSES (2)
 Dalam hal address space :
 Child menduplikasi milik parent
 Child memiliki suatu program yang akan di-load ke
dalamnya
 Contoh UNIX
 System call fork() meng-create proses baru
 System call execve() digunakan setelah itu untuk
mengganti memory space dari proses dengan
program yang baru
PROSES TREE PADA UNIX
SYSTEM
PROCESS TERMINATION
 suatu proses mengalami terminasi akibat
inisiatif child atau parent
TERMINASI KARENA CHILD

 Proses mengeksekusi statement terakhir yang juga


meminta OS untuk mengahapusnya ( misalnya
dengan exit() )
 Data output dihasilkan child kepada parent ( misalnya
sebagai return dari fork() )
 Resource-resource proses didealokasi oleh OS
TERMINASI KARENA PARENT

 Parent mengakhiri eksekusi proses-proses child (


misalnya dengan abort() )
 Child telah menggunakan jumlah resource melebihi dari
yang telah dialokasi
 Task yang diberikan pada child sudah tidak diperlukan
lagi
 Parent telah exit
 OS tidak mengijinkan child untuk berlanjut jika parent
terminate
 Cascading termination
COOPERATING PROCESSES
 Independent process tidak dapat dipengaruhi oleh
eksekusi proses lain
 Cooperating process dapat mempengaruhi dan
dipengaruhi oleh eksekusi proses lain
 Keuntungan proses berkooperasi :
 Sharing informasi : Menggunakan informasi(resource) yang
sama untuk beberapa proses
 Peningkatan kemampuan komputasi (Computation Speedup) :
Suatu task tertentu bisa dipecah menjadi beberapa cooperating
processes sehingga bisa dikerjakan secara paralel sehingga
menjadi lebih cepat selesai
 Modularitas : Pembuatan suatu sistem yang moduler dengan
memecahkan fungsi-fungsi dari sistem tersebut menjadi
beberapa proses atau thread
 Convenience : User bisa dengan mudah mengerjakan sesuatu
yang berbeda dalam waktu yang sama
PRODUCER-CONSUMER PROBLEM

 “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

 Consumerharus menunggu jika buffer kosong


dan Producer harus menunggu jika buffer
penuh.
BOUNDED-BUFFER – SHARED-
MEMORY SOLUTION
 Shared data
#define BUFFER_SIZE 10
typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
 Hanya dapat menggunakan BUFFER_SIZE-1
elemen
BOUNDED-BUFFER – PRODUCER PROCESS

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)

 Message dapat berukuran tetap atau


variabel
 Ukuran tetap; implementasi fisik lebih simple, tapi lebih
sulit bagi user dalam pemrograman
 Ukuran variabel; pemrograman lebih mudah tapi
implementasi fisik lebih sulit
COMMUNICATION LINK

 Bila P dan Q hendak berkomunikasi


 mereka perlu menetapkan suatu communication link di
antara mereka lalu melakukan tukar-menukar message
melalui send/receive
 IPC
dalam implementasinya memerlukan
communication link
 Secara fisik, contohnya shared memory, hardware bus
 Secara logic, contohnya logical properties
IMPLEMENTASI

 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

 Automatic vs. Explicit Buffering

 Send by Copy vs. Send by Reference

 Fixed Sized vs. Variabel Sized Message


DIRECT COMMUNICATION
 Proses-proses harus menyebutkan
pasangannya secara eksplisit
 send(Q, message)
 Q adalah receiver
 receive(P, message)
 P adalah sender

P Q
SIFAT-SIFAT COMMUNICATION
LINK DIRECT COMM.

 Link ditetapkan secara otomatis


 Link diasosiasikan dengan pasangan proses yang
sedang berkomunikasi tsb
 Antara sepasang proses hanya bisa ada 1 link

 Link bisa satu arah tapi biasanya dua arah


CONTOH PRODUCER-CONSUMER

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

 Setiap pasang proses bisa men-share beberapa link

 Link bisa satu arah atau dua arah


OPERASI-OPERASI INDIRECT
COMM.

 Proses memulai komunikasi dengan men-create


mailbox
 Komunikasi berlangsung dengan pemanggilan
perintah send & receive message melalui mailbox
tersebut
 Saat proses hendak exit maka proses men-destroy
mailbox
MASALAH PADA MAILBOX
SHARING
 Mailbox sharing P2
 P1, P2, and P3 share mailbox A.
 P1, sends; P2 dan P3 receive. P1 A

 Siapa yang mendapatkan message? P3

 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

 Blocking adalah synchronous


 Non-blocking adalah asynchronous

 Primitif send and receive dapat blocking or non-


blocking.
BUFFERING UNTUK LINK
 3 kemungkinan cara implementasi
 Zero capacity – tidak ada buffer
 Sender harus menunggu sampai muncul receiver dan sebaliknya
(sinkronisasi - rendezvous)
 Bounded capacity – bisa berisi max n message
 Sender harus menunggu jika penuh
 Unbounded capacity – tak terbatas
 Sender tidak pernah menunggu
KOMUNIKASI CLIENT-SERVER

 Sockets
 Remote Procedure Calls

 Remote Method Invocation (Java)


SOCKET
 Socket didefinisikan sebagai suatu endpoint
for communication.
 Sebuah programming interface ke OS yang
memungkinkan proses untuk saling
berkomunikasi ke proses lainya
 Eksekusi TCP/UDP berlangsung di level
kernel, socket bertindak sebagai jembatan ke
user space.
 Merupakan gabungan IP address dan port
 Socket 161.25.19.8:1625 menunjukkan bahwa
port 1625 pada host 161.25.19.8
 Komunikasi terdiri dari pasangan socket.
KOMUNIKASI ANTAR SOCKET

 Contoh standard port :


 TELNET menggunakan port 23
 FTP menggunakan port 21
 HTTP server menggunakan port 80
ILUSTRASI SOCKET
KOMUNIKASI SOCKET
DETAIL KOMUNIKASI SOCKET
SOCKETS IN UNIX

Server membuat socket


menggunakan bind(), sehingga
dapat dimanfaatkan oleh clients
SERVER FOR TIME OF DAY (IN JAVA)
Public class Server {
public static void main (String[], args) throws IOException {
Socket client = null; // connection-oriented socket
PrintWriter pout = null;
ServerSocket sock = null;

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;

while ( (line = bin.readLine ()) != null)


System.out.println (line);
}
…….
…..
REMOTE PROCEDURE CALLS (RPC) (1)

 Remote Procedure Call (RPC) membuat abstraksi


pemanggilan prosedur antara proses dalam sistem
jaringan (network)
 Stubs – client-side proxy untuk procedure aktual pada
server
 Client-side stub mengalokasikan server dan
mengirimkan marshalls parameter
 Server-side stub menerima message, membuka
parameter marshall, dan menjalankan procedure pada
server
MEKANISME RPC
REMOTE PROCEDURE CALLS (RPC) (2)

 Dalam sistem single-processor :


 message send = pemanggilan fungsi
 reply = function return
 sender mengaktifkan receiver dengan message
sebagai argument, dan sender wait untuk
mendapatkan reply dari function return
 Skema RPC ini dilakukan juga pada proses-
proses yang running di komputer berlainan
MEKANISME IPC

 Sebelum mekanisme IPC digunakan, data harus di-


packaging ke dalam format transimisi. Langkah ini
dinamakan marshalling
 Proxy bertanggung jawab untuk marshalling data,
kemudian mengirimkan data dan meminta instans dari
komponen (remote)
 Stub menerima request, unmarshall data, dan memanggil
method yang diminta. Kemudian proses mengembalikan
nilai yang diinginkan
 Contoh : COM (Component Object Model) - Microsoft,
CORBA (Common Object Request Broker Architecture -
OMG)
CONTOH RPC

 Serverhosts subroutines which can be called


from a client machine
KELEBIHAN RPC
 Relatif mudah digunakan :
 Pemanggilan remote procedure tidak jauh berbeda
dibandingkan pemanggilan local procedure. Sehingga
pemrogram dpt berkonsentrasi pd software logic, tidak
perlu memikirkan low level details seperti socket,
marshalling & unmarshalling.
 Relatively portable :
 S/W developed using RPC is easier to be ported compared to
sockets.
 Robust :
 Sejak th 1980-an RPC telah banyak digunakan dalam
pengembangan mission-critical application yg memerlukan
scalability, fault tolerance, & reliability.
KEKURANGAN RPC
 Tidak fleksibel terhadap perubahan :
 Static relationship between client & server at run-time.
 Berdasarkan prosedural /structured programming
yang sudah ketinggalan jaman dibandingkan OOP.
REMOTE METHOD INVOCATION (RMI)
 Remote Method Invocation (RMI) adalah
mekanisme Java yang sama dengan RPC
 RMI memungkinkan program Java pada satu
komputer untuk memanggil suatu method
pada remote object
MARSHALLING PARAMETERS

- Local objects passed by copy (object serialization)


- Remote objects passed by reference

View publication stats


Threads
Pembahasan
• Overview
• Multithreading Models
• Threading Issues
• Pthreads
• Solaris 2 Threads
• Windows 2000 Threads
• Linux Threads
Threads & Task (1)
• Suatu thread (atau lightweight process disingkat
LWP) merupakan unit dasar dari utilisasi CPU yang
berisi :
• Program counter
• Register set
• Stack space
• Mekanisme untuk memungkinkan sharing resource
dalam address space yang sama
Threads & Task (2)
• Suatu thread bersama thread-thread lainnya bisa
men-share :
• Code section
• Data section
• Operating system resources
• Kumpulan thread tersebut disebut task
• Proses tradisional (atau heavyweight process) adalah
suatu task dengan satu thread
Task dengan Multiple Thread
• Jika suatu thread server mengalami block dan
wait, thread-thread lain dalam task yang sama
dapat run
• Bisa menghasilkan throughput dan performance
sistem yang lebih tinggi
Contoh Multithreading
• Aplikasi yang memerlukan sharing buffer (contoh
producer-consumer problem) dapat
memanfaatkan multiple thread ini
• Web browser : memiliki satu thread untuk display
image, dan thread yang lain untuk mengambil
data dari network.
• Web server : menerima request dari client untuk
halaman web, image, sound, dll. Web server
melayani client secara bersamaan (concurrent).
Implementasi
• Kernel-supported threads pada Mach and OS/2
• User-level thread di atas kernel, melalui sejumlah library call
pada user level (Project Andrew from CMU)
• Hybrid approach mengimplementasikan baik user-level
maupun kernel-supported threads pada Solaris 2
Single & Multithreaded Processes
Keuntungan
 Responsif
◦ Multithreading memungkinkan suatu program running walaupun
sebagian program di-block atau menjalankan operasi yang lain.
Contoh : web browser.
 Resource Sharing
◦ Thread dapat men-share memori dan resource dengan thread
yang lain.
 Ekonomis
◦ Alokasi memori dan resource untuk pembuatan proses memiliki
cost yang mahal. Dalam hal context-switch, lebih ekonomis bila
dilakukan dengan thread context-switch.
 Utilisasi CPU
◦ Meningkatkan kinerja pada arsitektur multiprocessor, dimana
thread running secara paralel pada prosesor yang berbeda.
User Threads
• Manajemen thread dilakukan oleh user-level thread
• Contoh :
- POSIX Pthreads
- Mach C-threads
- Solaris threads
Kernel Threads
• Manajemen trhread dilakukan oleh kernel-level thread
• Contoh :
- Windows 95/98/NT/2000/XP
- Solaris
- Tru64 UNIX
- BeOS
- Linux
Thread Library
• Thread library menyediakan API (Application Program Interface) bagi
programmer untuk membuat dan mengelola thread.
• User-level library : semua code dan struktur data library berada pada
level user space, tanpa kernel support. Pemanggilan fungsi library dalam
fungsi lokal, bukan system call
• Kernel-level library : didukung secara langsung oleh OS. Code dan
struktur data library berada pada kernel space. Pemanggilan fungsi
library melalui system call ke kernel.
Model-model Multithreading
• Many-to-One

• 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)

View publication stats


CPU SCHEDULING
Pembahasan
 Konsep Dasar
 Kriteria Scheduling
 Algoritma Scheduling
CPU Scheduling
 Merupakan basis dari OS yang multiprogramming,
sementara multiprogramming untuk meningkatkan
produktifitas sistem
 Topik pembahasan :
 Konsep dasar CPU Scheduling
 Algoritma-algoritma CPU Scheduling
Konsep Dasar CPU Scheduling
 Dalam multiprogramming
 Suatu proses dieksekusi s.d wait untuk I/O, setelah itu CPU
diberikan ke proses lain, dst.
 Membentuk siklus yang terdiri atas
 Sequence eksekusi CPU (CPU burst time)
 Sequence dalam service I/O (I/O burst time)
 Pola distribusi CPU burst time adalah eksponensial atau
bahkan hipereksponensial
Pola Distribusi CPU Burst Time
Keputusan Scheduling
 Scheduler memilih dari antara proses-proses dalam
memori yang ready dan mengalokasi CPU untuk
proses yang terpilih
 Terjadinya keputusan scheduler saat :
 (1) status proses berubah dari run ke wait
 (2) status proses berubah dari run ke ready

 (3) status proses berubah dari wait ke ready

 (4) status proses menjadi terminate


Non-preemptive
 Scheduler dalam situasi (1) dan (4) disebut non-
preemptive
 Sekali CPU ditetapkan untuk suatu proses maka proses
tidak akan melepaskannya hingga terminate atau untuk
melakukan I/O
 Untuk hardware tertentu skema ini merupakan satu-
satunya pilihan (misalnya tidak ada timer)
 Digunakan oleh MS Windows
Status Proses - Scheduler

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

 Modul yang memberikan kontrol CPU bagi proses


yang terpilih untuk mendapat giliran meliputi :
 Context switching
 Set operasi sistem ke user-mode

 Jump ke lokasi untuk meneruskan proses yang mendapat


giliran dan run
Dispatch Latency
 Waktu yang diperlukan oleh dispatcher untuk
menghentikan proses yang sedang running hingga
proses yang di-dispatch berikutnya running
CPU Scheduling Algorithms

 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

 Meminimumkan turnaround time

 Meminimumkan waiting time

 Meminimumkan response time

 Meminimumkan response time variance


First Come, First-Served (FCFS)
 Proses yang merequest CPU lebih dulu adalah yang
dilayani terlebih dahulu
 Jika suatu proses running menjadi ready maka ia
antri lagi dibelakang
 Performance : waktu tunggu rata-rata lama serta
akan bervariasi jika burst time amat bervariasi
Contoh FCFS
• P1 : 24 ms, P2 : 3 ms, P3 : 3 ms.
• Datang dalam urutan P1, P2, P3
– Gantt Chart

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)

 Tepatnya “shortest CPU burst-time first”


 Bila CPU burst time tiap proses diketahui
sebelumnya maka proses dengan CPU burst time
terkecil yang dilayani terlebih dahulu
 Preemptive scheme : proses running P1 bisa dihentikan
di tengah saat muncul proses P2 yang lebih pendek
 Nonpreemptive scheme : proses running akan terus
sampai terminate atau I/O wait
Contoh SJF - Non-Preemptive

Process Arrival Time Burst Time


P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (non-preemptive)
P1 P3 P2 P4

0 3 7 8 12 16

 Average waiting time = (0 + 6 + 3 + 7)/4 = 4


Contoh SJF - Preemptive

Process Arrival Time Burst Time


P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (preemptive)
P1 P2 P3 P2 P4 P1

0 2 4 5 7 11 16

 Average waiting time = (9 + 1 + 0 +2)/4 = 3


Masalah SJF : informasi CPU burst time

 Algoritma memberikan performance yang optimal,


tapi bagaimana caranya mendapatkan informasi
CPU burst time ?
 Untuk long-term schedule dalam batch system, dapat
digunakan panjang time limit yang dispesifikasikan
user pada saat submit job.
 Untuk short-term scheduling tidak mungkin. Tidak ada
cara untuk mengetahui secara pasti CPU burst
berikutnya, hanya dapat diaproksimasi secara stokastik
(prediksi).
Priority Scheduling

 Proses dengan prioritas lebih tinggi akan dilayani


lebih dulu
 Preemptive scheme : proses running P1 bisa dihentikan
di tengah saat muncul proses P2 yang lebih tinggi
prioritasnya
 Non-preemptive scheme : proses yang running akan
diteruskan sampai terminate atau I/O wait
Contoh Priority Scheduling

Process Burst Time Priority


P1 8 2
P2 1 1
P3 1 3

P2 P1 P3

0 1 9 10

 Average waiting time = (1 + 0 + 9)/3 = 3.3


Pendefinisian Prioritas

 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

 Indefinite blocking (starvation) pada proses-proses


berprioritas rendah terutama jika sistemnya
heavilyloaded
 Rumor : ketika IBM 7093 di-shutdown tahun 1973,
ditemukan adanya proses-proses low priority yang di-
submit tahun 1967 dalam status wait
Solusi dari Starvation

 Solusi : “aging” (peningkatan prioritas pada proses-


proses yang sudah menunggu cukup lama)
 Misalnya setiap 15 menit dinaikkan 1 tingkat
Round Robin (RR)
 Masing-masing proses diberikan interval waktu
tertentu yang disebut time quantum
 Mengikuti FCFS & setelah kuantum waktu tertentu
proses yang running di-preempt & kembali ke ready
queue
 Mekanisme kuantum waktu menggunakan timer, jika
proses sudah terminate atau melakukan I/O wait
sementara timer belum habis, timer di-reset untuk
giliran proses berikutnya
Contoh : RR
 Contoh : dengan time quantum = 20 ms
Process Burst Time
P1 53
P2 17
P3 68
P4 24
 Gantt chart :
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3

0 20 37 57 77 97 117 121 134 154 162

 Khususnya, rata-rata turnaround lebih tinggi


daripada SJF, tetapi lebih baik untuk respons.
Masalah RR : Penentuan Kuantum Waktu

 Menentukan performance sistem :


 Jika terlalu besar sistem menjadi FCFS murni
 Jika terlalu kecil terjadi “processor sharing”
 Pada n proses yang running pada prosesor dengan kecepatan K,
bagi setiap proses terasa masing-masing memiliki prosesor sendiri
dengan kecepatan K/n (misalnya respons interaksi jadi lambat)
 Jika terlalu kecil overhead untuk context switching jadi
besar
Time Quantum dan Context Switch Time
Multi-Level Queue (MLQ)
 Proses diklasifikasi ke dalam sejumlah kelas &
masing-masing kelas memiliki antrian sendiri dengan
aturan berbeda
 Contoh kelas-kelas dalam beberapa OS
 Proses sistem
 Proses interaktif
 Proses editing interaktif
 Proses batch
 Proses student
Diagram Contoh MLQ
MLQ pada Uniprocessor
 Kelas-kelas perlu diantrikan juga
 Dengan prioritas berbeda secara fixed dan
preemptive; proses dari kelas yang lebih rendah harus
menunggu proses dari kelas yang lebih tinggi selesai
 Dengan menerapkan time sharing dengan kuota waktu
yang berbeda (misalnya foreground 80% dan
background 20%)
Multi-Level Feedback Queue

 MLQ overhead rendah tetapi tidak fleksibel


 MLFQ memungkinkan perpindahan antara level
antrian untuk meng-aproksimasi SJF :
 Proses mula-mula masuk ke level pertama, jika dalam
batas waktu proses belum berakhir maka ia di-preempt
dan dimasukkan ke antrian level berikutnya yang
prioritasnya lebih rendah
 Proses yang menunggu terlalu lama bisa naik ke antrian
ber-prioritas lebih tinggi
Contoh MLFQ

 Contoh MLFQ dengan 3 antrian : Q0, Q1, dan Q2.


Kuantum Q0 = 8 ms, kuantum Q1 = 16 ms dan Q2
menggunakan skema FCFS
 Awalnya proses P masuk ke Q0, apabila saat running
belum selesai saat timer habis (8 ms) maka P di-
preempt dan dipindahkan ke Q1
 Jika Q0 sudah kosong, Q1 baru dilayani; saat P belum
selesai juga saat timer habis (16 ms) maka P masuk
dalam skema FCFS Q3
Diagram Contoh MLFQ
Parameter Menentukan MLFQ

 Jumlah Queue (level)


 Algoritma scheduling untuk tiap queue
 Metode penentuan kapan upgrade prioritas proses
ke queue yang lebih tinggi
 Metode penentuan kapan menurunkan prioritas
proses ke queue yang lebih rendah
 Metode penentuan queue mana yang dimasuki
proses

View publication stats


Proses Sinkronisasi
Pembahasan
• Background
• Problem Critical-Section
• Sinkronisasi Hardware
• Semaphore
• Problem Klasik Sinkronisasi
• Monitor
Background
• Akses secara bersamaan pada data yang di-sharing
mengakibatkan data menjadi inkonsistensi
• Maintain data yang konsisten membutuhkan
mekanisme untuk memastikan bahwa eksekusi proses
dari cooperating proses dilakukan secara berurutan
• Shared-memory solution to bounded-butter problem
(Chapter 4) allows at most n – 1 items in buffer at the
same time. A solution, where all N buffers are used is
not simple.
• Solusi shared-memory pada problem bounded-buffer
(Consumer-Producer) memungkinkan paling banyak
n-1 item dalam buffer pada waktu yang sama.
▫ Misal kita memodifikasi code producer-consumer dengan
menambahkan variabel counter, diinisialisasi 0 dan di-
increment setiap ada item baru yang ditambahkan ke dalam
buffer
Bounded-Buffer (1)

• 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--;

dijalankan secara atomic.

• Operasi atomic adalah operasi yang


menyelesaikan program didalamnya tanpa
interupsi.
Bounded-Buffer (5)

• Statement “count++” diimplementasikan dalam


bahasa mesin :

register1 = counter
register1 = register1 + 1
counter = register1

• Statement “count--” diimplementasikan dalam bahasa


mesin :

register2 = counter
register2 = register2 – 1
counter = register2
Bounded-Buffer (6)

• If both the producer and consumer attempt to


update the buffer concurrently, the assembly
language statements may get interleaved.

• Interleaving depends upon how the producer


and consumer processes are scheduled.
Bounded-Buffer (7)

• Misal counter diinisialisasi 5. Interleaving statemen


adalah :

producer : register1 = counter (register1 = 5)


producer : register1 = register1 + 1 (register1 = 6)
consumer : register2 = counter (register2 = 5)
consumer : register2 = register2 – 1 (register2 = 4)
producer : counter = register1 (counter = 6)
consumer : counter = register2 (counter = 4)

• Nilai counter bisa 4 atau 6, dimana seharusnya


adalah 5.
Race Condition (1)

• Race condition : adalah situasi dimana


beberapa proses mengakses dan memanipulasi
data bersama pada saat yang bersamaan. Nilai
akhir dari data bersama tersebut tergantung
pada proses yang terakhir selesai.
• Untuk mencegah race condition proses-proses
yang berjalan bersamaan harus disinkronisasi
(synchronized).
Contoh : Print Spooler
• Ketika sebuah proses ingin mencetak sebuah
berkas (file), proses tersebut memasukkan nama
berkas ke dalam spooler direktori khusus. Proses
lain, printer daemon, secara periodik memeriksa
untuk mengetahui jika ada banyak berkas yang
akan dicetak, dan jika ada berkas yang sudah
dicetak dihilangkan nama berkasnya dari
direktori.
▫ Out = penunjuk berkas berikutnya untuk dicetak
▫ In = menunjuk slot kosong di direktori
Race Condition (2)
Problem Critical-Section
• Bagian dari program dimana shared memory
diakses disebut critical section atau critical
region
• n proses berkompetisi untuk menggunakan
shared data
• Masing-masing memiliki code segment,
dinamakan critical section dimana shared data
diakses
• Problem : bagaimana memastikan satu proses
dieksekusi dalam critical section, dan tidak ada
proses lain yang boleh dieksekusi dalam critical
section tersebut
Solusi Problem Critical-Section (1)

4 kondisi solusi yang baik :


• Tidak ada dua proses secara bersamaan masuk
ke dalam critical section
• Tidak ada asumsi mengenai kecepatan atau
jumlah CPU
• Tidak ada proses yang berjalan di luar critical
section yang dapat mem-blok proses lain
• Tidak ada proses yang menunggu selamanya
untuk masuk critical section
Solusi Problem Critical-Section (2)
• Mutual Exclusion. Jika proses Pi dieksekusi dalam
critical section, maka tidak ada proses lain dapat
dieksekusi dalam critical section tersebut.
• Progress. Artinya ketika tidak ada proses yang
menggunakan critical section dan ada proses-proses
yang ingin menggunakan critical section tersebut, maka
harus ada proses yang menggunakan critical section
tersebut.
• Bounded Waiting. Maksud dari Bounded Waiting
adalah setiap proses yang menunggu menggunakan
critical section, maka proses-proses yang menunggu
tersebut dijamin suatu saat akan menggunakan critical
section. Dijamin tidak ada thread yang mengalami
starvation : proses seolah-olah berhenti, menunggu
request akses ke critical section diperbolehkan.
Komponen Critical Section
• Entry section : kode yang digunakan untuk
masuk ke dalam critical section.
• Critical section : kode dimana hanya ada satu
proses yang dapat dieksekusi dalam satu waktu.
• Exit section : akhir dari critical section,
mengijinkan proses lain.
• Remainder section : kode istirahat setelah masuk
ke critical section.
Aturan Critical-Section
Solusi yang diberikan harus memenuhi
permintaan berikut :
• Mutual exclusion
• Deadlock free
• Starvation free
Critical Region
Pendekatan Solusi Proses
Sinkronisasi
• Solusi Software
▫ Tanpa sinkronisasi
▫ Dengan sinkronisasi
 Low-level primitif : semaphore
 High-level primitif : monitors
• Solusi Hardware
Mutual Exclusion

• Tiga kondisi untuk menentukan mutual


exclusion :
▫ Tidak ada dua proses yang pada saat bersamaan
berada dalam critical region
▫ Tidak ada proses yang berjalan diluar critical
region yang bisa menghambat proses lain
▫ Tidak ada proses yang tidak bisa masuk ke critical
region
Cara Pemecahan Masalah
• Hanya dua proses , P0 and P1
• Struktur umum dari proses adalah Pi (proses lain
Pj)
do {
entry section
critical section
exit section
reminder section
} while (1);

• Proses-proses dapat share variabel untuk


sinkronisasi
Algoritma 1
• Shared variabel :
▫ int turn;
initially turn = 0
▫ turn = i  Pi dapat masuk ke dalam critical section
• Process Pi
do {
while (turn != i) ;
critical section
turn = j;
reminder section
} while (1);
• Memenuhi mutual exclusion, tapi tidak menuhi
progres
Algoritma 2 (1)
• Menggunakan flag untuk setiap proses dan
memeriksa flag proses yang lain dan tidak akan
masuk critical section bila ada proses lain yang
sedang masuk.
Algoritma 2 (2)
• Shared variabel :
▫ boolean flag[2];
initially flag [0] = flag [1] = false.
▫ flag [i] = true  Pi siap untuk masuk ke dalam critical
section
• Process Pi
do {
flag[i] := true;
while (flag[j]) ;
critical section
flag [i] = false;
remainder section
} while (1);
• Memenuhi mutual exclusion, tapi tidak menuhi
progres
Algoritma 3 (1)

• Flag untuk meminta ijin masuk


▫ Setiap proses menge-set sebuah flag untuk
meminta ijin masuk. Lalu setiap proses men-toggle
bit untuk mengijinkan proses yang lain untuk yang
pertama
• Kombinasi shared variabel algoritma 1 & 2
Algoritma 3 (2)
• Process Pi
do {
flag [i]:= true;
turn = j;
while (flag [j] and turn = j) ;
critical section
flag [i] = false;
remainder section
} while (1);

• Memenuhi ketiga persyaratan, memecahkan


masalah critical-section untuk kedua proses.
Algoritma Bakery (1)

Critical section untu n proses :


• Sebelum masuk ke dalam critical section, proses
menerima sebuah nomor. Pemegang nomor
yang terkecil masuk ke critical section.
• Jika ada dua proses atau lebih (Pi and Pj)
menerima nomor sama, maka proses dengan
indeks terkecil (i < j) yang dilayani lebih dulu
untuk masuk ke critical section. Misal Pi
dilayani lebih dulu, baru kemudian Pj.
• Skema penomoran selalu naik secara berurut,
contoh : 1,2,3,3,3,3,4,5...
Algoritma Bakery (2)

• 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)

• Semaphore adalah pendekatan yang diajukan


oleh Djikstra
• Prinsipnya dua proses atau lebih dapat
bekerjasama dengan menggunakan penanda-
penanda sederhana.
• Variabel khusus untuk penanda disebut
semaphore
Semaphore (2)

• 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
} }
} }

n-1 0 Global variables:


char buf[n]
1 int InP = 0 // place to add
int OutP = 0 // place to get
int count
… 2
Solusi Menggunakan Semaphore
Global variables
semaphore full_buffs = 0;
semaphore empty_buffs = n;
char buff[n];
int InP, OutP;

0 thread producer { 0 thread consumer {


1 while(1){ 1 while(1){
2 // Produce char c... 2 down(full_buffs)
3 down(empty_buffs) 3 c = buf[OutP]
4 buf[InP] = c 4 OutP = OutP + 1 mod n
5 InP = InP + 1 mod n 5 up(empty_buffs)
6 up(full_buffs) 6 // Consume char...
7 } 7 }
8 } 8 }
Problem Dining Philosophers
• Lima filosof duduk dalam satu meja
• Satu garpu terletak diantara
masing-masing filosof
• Saat makan membutuhkan 2 garpu Each philosopher is
modeled with a thread
• Bagaimana mencegah deadlock ?

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

int state[N] // only called with mutex set!


semaphore mutex = 1
semaphore sem[i] test(int i) {
if (state[i] == HUNGRY &&
state[LEFT] != EATING &&
state[RIGHT] != EATING){
take_forks(int i) { state[i] = EATING;
wait(mutex); signal(sem[i]);
state [i] = HUNGRY; }
test(i); }
signal(mutex);
wait(sem[i]);
}
Procedure Meletakkan Garpu

int state[N] // only called with mutex set!


semaphore mutex = 1
semaphore sem[i] test(int i) {
if (state[i] == HUNGRY &&
state[LEFT] != EATING &&
state[RIGHT] != EATING){
put_forks(int i) { state[i] = EATING;
wait(mutex); signal(sem[i]);
state [i] = THINKING; }
test(LEFT); }
test(RIGHT);
signal(mutex);
}
Problem Sleeping Barber (1)
Problem Sleeping Barber (2)

• 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

• Bagaimana kita memodelkan barber dan


customer ?
• What state variables do we need?
• Variabel keadaan seperti apa yang kita
butuhkan ?
▫ .. dan yang mana di-share ?
▫ …. dan bagaimana kita akan memproteksinya ?
• Bagaimana membuat barber tidur ?
• Bagaimana membuat barber bangun ?
• Bagaimana membuat customer menunggu ?
• What problems do we need to look out for?
Is this a good solution?
const CHAIRS = 5
var customers: Semaphore
barbers: Semaphore
lock: Mutex
numWaiting: int = 0

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

View publication stats


Deadlock
Pembahasan
• System Model
• Karakteristik Deadlock
• Metode-metode Penanganan Deadlock
• Deadlock Prevention
• Deadlock Avoidance
• Deadlock Detection
Deadlock
• Deadlock adalah suatu kondisi dimana dua proses atau lebih
tidak dapat meneruskan eksekusinya
Resources (1)
• Contoh resources sistem komputer
• printers
• tape drives
• Proses-proses membutuhkan akses ke resource secara
teratur
• Contoh 1 : suatu proses memegang (hold) resource A dan
meminta resource B
• pada saat yang sama proses lain sedang memegang resource B dan
meminta resource A
• masing-masing proses melakukan block, dalam kondisi seperti ini
terjadi deadlock
Resources (2)

• 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

• Traffic hanya satu arah


• Masing-masing bagian jembatan dapat digambarkan
sebagai resource.
• Jika deadlock terjadi, dapat diselesaikan dengan cara satu
mobil mundur ke belakang.
• Beberapa mobil harus kembali jika terjadi deadlock
• Memungkinkan terjadinya starvation
Resources (4)

• Deadlock terjadi ketika…


• proses-proses diberikan hak akses secara eksklusif ke
devices (resources)
• Preemptable resources
• dapat diambil dari proses tanpa menimbulkan efek yang
buruk
• Nonpreemptable resources
• akan menyebabkan proses gagal jika diambil
System Model
• Tipe resource R1, R2, . . ., Rm
• CPU cycles, memory space, I/O devices
• Masing-masing proses melakukan utilisasi
resources
1.Meminta (request) resource
2.Menggunakan resource (use)
3.Membebaskan (release) resource
4 Kondisi Terjadinya Deadlock
• Kondisi Mutual exclusion
• hanya satu proses dalam satu waktu yang dapat memegang (hold)
resource
• Hold and wait condition
• suatu proses memegang satu resource dan me-request resource yang
lain
• No preemption condition
• resource hanya dapat di-release setelah proses menyelesaikan task-
nya pada resource tersebut
• Circular wait condition
• Masing-masing proses menunggu resource yang digunakan oleh
proses lain secara berantai.
• Terdapat himpunan proses yang sedang menunggu {P0, P1, …, P0}
sedemikian sehingga P0 menunggu resource yang dipegang oleh P1 ,
P1 sedang menunggu resource yang dipegang oleh P2, …, Pn–1 . Pn–1
menunggu resource yang dipegang oleh Pn . Dan Pn menunggu
resource yang dipegang oleh P0 .
Resource-Allocation Graph (1)
Terdapat himpunan vertices V dan himpunan edges E.

• V dipartisi ke dalam dua tipe :


• P = {P1, P2, …, Pn}, himpunan proses dalam sistem.
• R = {R1, R2, …, Rm}, himpunan tipe resource dalam sistem.
• Request edge – directed edge Pi  Rj
• Assignment edge – directed edge Rj  Pi
Resource-Allocation Graph (2)
Notasi-notasi yang digunakan pada Resource allocatuon Graph :

• Proses

• Tipe Resource dengan 4 instances

Pi
• Pi meminta (requests) instance dari Rj
Rj

• Pi mendapat (holding) instance dari RPj i


Rj
Contoh Resource Allocation Graph
Resource Allocation Graph-Deadlock
Siklus Graph
• P1  R1  P2  R3  P3  R2  P1
• P2  R3  P3  R2  P2
• Proses P1, P2 dan P3 akan mengalami deadlock
• Proses P2 menunggu resource R3 yang dibawa oleh P3
• Disisi lain, P3 menunggu proses P1 atau P2 untuk
membebaskan resource R2
• Proses P1 menunggu P2 untuk membebaskan R1
Resource Allocation Graph
Cycle - Tidak Deadlock
Siklus Graph
• P1  R1  P3  R2  P1
• Tidak ada proses yang mengalami deadlock
• P4 dapat membebaskan satu anggota resource tipe R2
yang kemudian dapat dialokasikan ke P3 sehingga mampu
memutuskan siklus yang ada.
Basic Facts
• Jika graph tidak mengandung cycle  no deadlock.
• Jika graph mengandung cycle 
• Jika hanya satu instance per tipe resource, maka terjadi
deadlock.
• Jika beberapa instances per tipe resource, kemungkinan
dapat terjadi deadlock.
Metode-metode Penanganan
Deadlocks
• Memastikan bahwa sistem tidak akan pernah masuk ke dalam
kondisi (state) deadlock.
• Memungkinkan sistem untuk masuk ke dalam kondisi deadlock dan
kemudian melakukan recovery (pemulihan).
• Mengabaikan masalah deadlock dan membuat deadlock tidak
pernah terjadi dalam sistem; digunakan pada OS umumnya (Unix).
Metode Pencegahan Deadlock (1)
Cara pencegahan (Prevention) dari sisi permintaan (request) resources :

• Mutual Exclusion – tidak ada sumber daya yg dapat


digunakan secara bersama-sama, jadi sistem harus
membawa sumber daya yang tidak dapat digunakan
bersama-sama.
• Hold and Wait – harus dijamin bahwa kapanpun
suatu permintaan proses pada resource, proses
tersebut tidak memegang resource yang lain.
• Membutuhkan proses untuk me-request dan
mengalokasikan resources sebelum memulai eksekusi, atau
membolehkan proses untuk me-request resource hanya
ketika proses tidak sedang memegang resource.
• Utilisasi resource yang rendah memungkinkan terjadinya
starvation.
Metode Pencegahan Deadlock (2)
• No Preemption
• Jika suatu proses yang memegang beberapa resource me-
request resource yang lain yang tidak dapat secara langsung
dialokasikan, maka semua resource yang sedang dipegang
dibebaskan (released).
• Preempted resources ditambahkan ke list resources dimana
proses sedang menunggu.
• Proses akan di-restart hanya jika dapat mengambil kembali
(regain) resource, juga resource yang baru yang di-request.
• Circular Wait
• Membuat penomoran pada proses-proses yang mengakses
resource. Suatu proses dimungkinkan untuk dapat meminta
resource kapanpun, tetapi permintaannya harus dibuat
terurut.
Tabel Deadlock
Syarat Langkah Kelemahan
Mutual Exclusion Spooling resource Dapat menyebabkan
chaos
Hold & Wait Meminta resource Sulit memperkirakan di
diawal awal dan tidak optimal
No Pre-emptive Mengambil Hasil proses tidak akan
resource di tengah baik
jalan
Circular Wait Penomoran Tidak ada penomoran
permintaan yang memuaskan semua
resource pihak
Metode Penghindaran Deadlock (1)
• Memberi kesempatan ke permintaan resource yang
tidak mungkin menyebabkan deadlock.
• Jika pemberian akses tidak mungkin mengarah pada
deadlock, maka resource akan diberikan pada proses yang
meminta.
• Jika tidak aman, proses yang meminta akan di-suspend
sampai suatu waktu permintaannya aman untuk diberikan.
• Kondisi aman (safe state)
• Jika tidak terjadi deadlock
• Kondisi tidak aman (unsafe state)
• Jika tidak terdapat cara untuk memenuhi semua
permintaan
Metode Penghindaran Deadlock (2)
• Membutuhkan sistem yang memiliki informasi
resource yang tersedia.
• Masing-masing proses memastikan jumlah maksimum
resource yang diperlukan.
• Algoritma penghindaran (avoidence) deadlock memastikan
tidak akan terjadi kondisi circular wait(masing-masing
menunggu sumber daya yg digenggam oleh anggota
proses lainnya pada rantai tsb).
• Kondisi (state) alokasi resource didefinisikan sebagai
jumlah dan alokasi resource yang tersedia dan
maksimum permintaan resource oleh proses.
Basic Facts
• Jika sistem dalam kondisi aman (safe state)  tidak
ada deadlock.
• Jika sistem dalam kondisi tidak aman (unsafe state)
 kemungkinan dapat terjadi deadlock
• Pendekatan penghindaran (avoidence) memastikan
bahwa sistem tidak akan pernah masuk ke dalam
kondisi unsafe state.
Safe, Unsafe , Deadlock State
Algoritma Bankir (1)
• Dijkstra (1965) : algoritma penjadwalan dapat
menghindari deadlock, dikenal dengan Algoritma
Bankir.
• Algoritma ini digambarkan : bank sebagai OS,
pinjaman sebagai resource, dan peminjam sebagai
proses yang membutuhkan resource.
• Deadlock akan terjadi apabila terdapat seorang
peminjam yang belum mengembalikan uangnya dan
ingin meminjam kembali, padahal uang yang belum
dikembalikan tadi dibutuhkan oleh peminjam lain
yang juga belum mengembalikan uang pinjamannya.
Algoritma Bankir (2)
• Jadi algoritma bankir ini mempertimbangkan apakah
permintaan mereka itu sesuai dengan jumlah dana
yang ia miliki, sekaligus memperkirakan jumlah dana
yang mungkin diminta lagi. Jangan sampai ia sampai
pada kondisi dimana dananya habis dan tidak dapat
meminjamkan uang lagi. Jika demikian maka akan
terjadi kondisi Deadlock. Agar kondisi aman, maka
asumsi setiap pinjaman harus dikembalikan waktu
yang tepat.
Struktur Algoritma Bankir
• Tersedia
• Jumlah sumber daya/dana yang tersedia.
• Maksimum
• Jumlah sumber daya maksimum yang diminta oleh setiap
proses.
• Alokasi
• Jumlah sumber daya yang dibutuhkan oleh setiap proses.
• Kebutuhan
• Maksimum-alokasi, sisa sumber daya yang dibutuhkan oleh
proses setelah dikurangi dengan yang dialokasikan.
Kelemahan Algoritma Bankir
• Sulit mengetahui seluruh resource yang dibutuhkan
proses pada awal eksekusi.
• Jumlah proses yang tidak tetap dan berubah-ubah.
Mulai dari user login hingga logout.
• Resource yang tadinya tersedia dapat saja menjadi
tidak tersedia kembali.
• Proses-proses yang dieksekusi haruslah tidak dibatasi
oleh kebutuhan sinkronisasi antar proses.
• Algoritma bankir menghendaki memberikan semua
permintaan selama waktu yang berhingga.
Deteksi dan Pemulihan Deadlock
• Menentukan apakah deadlock sedang terjadi,
kemudian proses-proses dan resource yang terlibat
dalam deadlock tersebut.
• Setelah kondisi deadlock terdeteksi, maka langkah
pemulihan deadlock dilakukan.
Cara Pemulihan Deadlock
• Ada beberapa cara untuk pemulihan deadlock :
• Menggagalkan semua proses yang deadlock
• Mem-backup semua proses yang deadlock dan me-restart
semua proses tersebut
• Menggagalkan proses-proses yang deadlock secara
berturut-turut hingga tidak ada deadlock.
• Menggagalkan pengalokasian resource-resource secara
berturut-turut hingga tidak ada deadlock.
• Kriteria proses-proses yang akan disingkirkan :
• Memiliki waktu proses (yang telah berjalan) kecil.
• Jumlah keluaran sedikit
• Memiliki estimasi sisa waktu eksekusi terbesar.
• Jumlah total resource terkecil yang telah dialokasikan
• Memiliki prioritas terkecil

View publication stats


Manajemen
Memori
Pembahasan
• Background
• Address Space : Logic & Fisik
• Swapping
• Contiguous Allocation
• Paging
• Segmentation
• Segmentation dengan Paging
I. Background
Untuk dieksekusi program harus
berada/dibawa ke dalam memori dan
dieksekusi sebagai proses yang menggunakan
ruang untuk data.
Input queue – kumpulan proses dalam disk
yang menunggu dibawa ke dalam memori
untuk dijalankan.
Program user harus melalui beberapa
tahapan sebelum di-run.
Memori adalah ruang yang berukuran
terbatas yang memerlukan manajemen
dalam utilisasinya
 Akibat program berukuran besar atau multiprogramming
Hirarkhi Storage

• Trade-off : cost & speed


1. Address Binding
(Pengikatan alamat)
• Sebelum eksekusi program berada di
dalam disk, dan pada saat dieksekusi ia
perlu berada pada suatu lokasi dalam
memori fisik.
• Address binding adalah menempatkan
address relatif program ke dalam address
fisik memori (real memory address).
o Dapat berlangsung dalam salah satu tahapan : kompilasi, load atau
eksekusi
Tahapan Running
Program
• Tahapan Kompilasi : source program
(source code) dikompilasi menjadi object
module (object code).
• Tahapan link & load : object module di-link
dengan object module lain menjadi load
module (execution code) kemudian di-
load ke memori untuk dieksekusi.
• Tahapan eksekusi : mungkin juga dilakukan
dynamic linking dengan resident library.
Multistep Processing User Program
Address Binding Saat
Kompilasi
• Jika lokasi dari proses sudah diketahui
sebelumnya maka saat kompilasi address-
address instruksi dan data ditentukan
dengan alamat fisik.
• Jika terjadi perubahan pada lokasi
tersebut maka harus di rekompilasi.
Address Binding Saat
Load
• Code hasil kompilasi masih menunjuk
address-address secara relatif, saat di-load
address-address disubstitusi dengan
alamat fisik berdasar relokasi proses yang
diterima.
• Jika terjadi perubahan relokasi maka code
di-load ulang.
Address Binding Saat
Eksekusi
• Binding bisa dilakukan ulang selama proses
o Hal ini untuk memungkinkan pemindahan proses dari satu lokasi ke
lokasi lain selama run.

• Perlu adanya dukungan hardware untuk


pemetaan address
o Contoh : base register dan limit register (register basis dan limit)
2. Dynamic Loading
• Rutin (bagian dari program) tidak akan
diload sampai ia dipanggil.
• Keuntungan :
o Rutin yang tak berguna tidak akan di-load
o Utilisasi ruang memori lebih baik; rutin yang tidak digunakan tidak di-
load
o Berguna bila code untuk menghandle kasus-kasus yang jarang
berukuran besar

• Tidak perlu dukungan khusus dari OS


o Diimplementasikan via rancangan pemrograman
3. Dynamic Linking
• Linking ditunda sampai saat eksekusi
o Code menjadi berukuran kecil

• Program-program user tidak perlu


menduplikasi system library
o System library dipakai bersama

• Mekanisme menggunakan skema stub


o Stub : suatu potongan kecil code menggantikan referensi rutin;
digunakan menglokasikan library rutin resident memory yang tepat
Stub untuk Dynamic
Linking
• Skema referensi dengan “stub”
o Saat stub dieksekusi ia memeriksa apakah rutin ybs sudah berada
dalam memori (diakses oleh proses lain yang run), kalau belum ada
maka rutin tersebut di-load.
o Stub diganti oleh address dari rutin tersebut.
o Setelah itu program run dengan referensi rutin-rutin secara normal
dengan address yang benar.
4. Overlays
• Jika seluruh code di-load ke dalam memori
maka terbatas oleh ukuran memori.
• Overlay memungkinkan ukuran code lebih
besar dari ukuran memori.
• Yang tetap tinggal dalam memori hanya
instruksi dan data yang diperlukan.
Implementasi Overlays
• Diimplementasikan oleh user, tidak perlu
dukungan OS
• Rancangan pemrograman dari struktur
overlay adalah kompleks.
Contoh Overlay
• Misalnya pada Two-pass Assembler
o Pass-1 70K, Pass-2 80K, Symbol Table 20K, Common Routine 30K, Total 200K

• Jika memori hanya 150K, semua tidak dapat


diload karena memori kurang
o Pass-1 dan pass-2 di overlay
Overlay dari 2-pass
Assembler
II. Address Space : Logic vs
Fisik
• Konsep meletakkan ruang address logic ke
ruang address fisik merupakan pokok dalam
manajemen memori.
• Address logic : address yang di-generate
oleh CPU (disebut juga virtual address)
• Address fisik : address yang dikenal oleh unit
memori
Address Binding dari
Address Logic vs Fisik
• Pada address-binding compile-time dan
load-time antara kedua peng-address-an
tidak ada perbedaan.
• Pada address-binding execution-time
kedua peng-address-an berbeda
Memory Management Unit
(MMU)
• Perangkat keras yang memetakan address
logic ke address fisik
• Dalam skema MMU
o Nilai dalam register base/relokasi ditambahkan ke setiap address proses
user pada saat run di memori
o Program user hanya berurusan dengan address logic-nya saja; tidak
melihat address fisik secara real
Contoh Kerja MMU (1)
Contoh Kerja MMU (2)
III. Swapping
• Proses dapat di swap secara temporer dari
memori (swap-out) ke dalam backing store,
dan dikembalikan (swap-in) ke dalam
memori untuk melanjutkan eksekusi.
• Backing store (biasanya disk)
o Cukup besar untuk menyimpan semua image memori user
o Sistem dapat didirect access(akses secara langsung) ke memory image-
image tersebut.
Skema Swapping
Address Binding pada
Swapping
• Address binding saat eksekusi lebih fleksible
sementara saat kompilasi/saat loading
memerlukan swap-in ke lokasi yang sama
• Bagian utama dari waktu swap adalah
waktu untuk transfer
o Waktu transfer total secara langsung proporsional pada jumlah memori
yang diswap
Varian-varian Swapping
• “Roll out, roll in” merupakan varian
swapping untuk algoritma priority
scheduling
o Proses prioritas rendah di-swap out agar proses prioritas tinggi dapat
diload & dieksekusi lebih dulu

• Versi-versi modifikasi dari swap


diimplementasikan di banyak sistem
o Misalnya UNIX dan Windows
Quantum Waktu vs
Swapping
• Quantum waktu untuk proses harus cukup
besar relatif terhadap waktu untuk swap
o Khususnya untuk scheduler seperti Round Robin
• User process : 100 kb, HD transfer rate = 1000 kb/sec, maka transfer
time = 100 kb / 1000 kb/sec = 0.1 sec = 100 msec
• Swap in & out = 2 * 100 = 200 msec
• Overhead latency = 2 * 8 = 16 msec
• Total swap time = 200 + 16 = 216 msec => Maka time quantum
sebaiknya lebih besar daripada 216 msec.
Kendala Swapping
• Kalau suatu proses akan di-swap, sebaiknya
proses dalam keadaan idle
o Misalnya proses yang sedang wait untuk I/O ke buffer memori secara
asynchronous.

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)

• (a) : alokasi memori


• (b) : pencatatan memori dengan peta bit
• (c) : pencatatan memori dengan link list
Manajemen Memori dengan Link List

• Four neighbor combinations for the


terminating process X
Manajemen Memori Pada Monoprogramming

• Three simple ways of organizing memory -


an operating system with one user process
Multiprogramming Dengan Fixed Partitions

 Fixed memory partitions


 separate input queues for each partition
 single input queue
Contiguous Allocation
• Memori utama biasanya terbagi dalam dua
partisi :
o Untuk OS yang residen : biasanya disimpan dalam memori ber-address
rendah (low memory) dengan vektor-vektor interrupt
• Interrupt address sebagai interrupt ID
o Untuk proses-proses user : biasanya disimpan dalam high memory
Memory Partition

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)

• Partisi Variable-Sized (MVT =


Multiprogramming with a Variable number
of Task)
o Pembagian memori sesuai dengan request dari proses-proses yang ada
Multiple-Partition
Allocation (2)
• Dalam skema Partisi Variable-Sized dapat
terbentuk sejumlah Hole
o Hole : blok dari memori yang available yang dapat tersebar di berbagai
tempat di memori
o Saat suatu proses datang maka dialokasikan suatu hole yang berukuran
sesuai dengan yang diperlukan proses dan datanya
Contoh Dalam Suatu
Schedule
• Ukuran memori 2560K, dan OS menempati
sebanyak 400K (untuk user = 2160K)
• Dalam queue :
o P1 berukuran 600K
o P2 berukuran 1000K
o P3 berukuran 300K
o P4 berukuran 700K
o P5 berukuran 500K
Contoh Alokasi Memori

OS OS OS OS OS

P1 P1 P1 Free P5
Free

P4 P4 P4
P2 Free

Free Free Free


P3 P3 P3 P3 P3
Free Free Free Free Free

P2 selesai P4 masuk P1 selesai P5 masuk


Peranan OS Dalam Partisi
• Memelihara informasi mengenai
o Partisi yang teralokasi
o Partisi yang bebas (hole)
Masalah Dynamic Storage-Allocation

• Untuk memenuhi permintaan berukuran n


dari suatu list hole-hole bebas
o First-fit : hole pertama yang memenuhi
o Best-fit : hole terkecil yang memenuhi
o Worst-fit : hole terbesar yang memenuhi

 Best-fit & Worst-fit perlu melakukan searching ke seluruh list


(atau jika list terurut sampai ketemu)
 First-fit & Best-fit lebih baik dari Worst-fit baik dalam
kecepatan maupun utilisasi storage
Fragmentasi Eksternal
• Ruang memori keseluruhan yang ada untuk
memenuhi permintaan, namun tidak
contiguous
• Hole-hole ada diantara proses-proses
berurutan
Fragmentasi Internal
• Memori yang teralokasi mungkin sedikit lebih
besar dari memori yang diminta dengan
perbedaan
• Untuk meminimisasi hole-hole yang tersebar
• Overhead untuk menyimpan informasi hole
lebih besar daripada hole itu sendiri
Compaction
• Untuk mananggulangi fragmentasi eksternal
digunakan metode compaction
(pemadatan).
o Menempatkan ulang proses-proses yang ada pada memori yang bebas,
dan diatur sedemikian sehingga posisi hole dapat berdekatan
o Compaction hanya dimungkinkan jika relokasi dilakukan secara dynamic,
dan dilakukan saat eksekusi (execution time)
V. Paging (1)
• Address space logic dari proses bisa
noncontiguous
• Membagi memori fisik ke dalam frame-
frame (blok-blok berukuran tertentu),
disebut frame.
o Ukurannya bilangan pangkat dari 2, antara 512 byte dan 8192 byte –
tergantung arsitektur hardware CPU

• Membagi memori logic ke dalam page-


page (blok-blok berukuran sama dengan
frame), disebut page.
Paging (2)
• Memelihara setiap frame bebas (free
frame)
• Untuk menjalankan proses berukuran n
page, diperlukan n frame bebas untuk
ditempati proses lalu menjalankannya
• Men-setup page table untuk translasi antara
alamat logic ke alamat fisik
• Fragmentasi internal pada page terakhir
Skema Paging
• Tidak ada fragmentasi eksternal
• Fragmentasi internal bisa terjadi
• Worst-case
o Setiap proses memerlukan n page + 1 byte
o Bila ukuran page = 4096 byte maka akan terbuang 4095 byte / proses

• Table frame digunakan untuk mengontrol


mana yang available, yang teralokasi,
jumlah semua frame, dll
Peng-address-an (1)
• Address yang dihitung CPU terdiri atas :
o Page number (p) : merupakan indeks dalam tabel yang berisi base
address dari tiap page dalam memori fisik
o Page offset (d) : bersama base address menyatakan address memori fisik
yang dikirim ke unit memori
o Jika ukuran address logic adalah 2m, dan ukuran page adalah 2n unit
address (byte atau word), maka high-order m-n bit address logic
digunakan untuk page number, dan low-order n bit digunakan untuk
page offset.

Page number Page offset

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

Address (p, d) dipetakan ke


table(f) * pagesize + d
Contoh Paging
Contoh Paging
• Dengan page size = 4 byte maka
o Address logic 0 (page 0, offset 0) dipetakan ke address fisik : (5 * 4) + 0 =
20
o Address logic 3 (page 0, offset 3) dipetakan ke address fisik : (5 * 4) + 3 =
23
o Address logic 4 (page 1, offset 0) dipetakan ke address fisik : (6 * 4) + 0 =
24
Free Frame

Before allocation After allocation


Implementasi Page Table
• Page-table berada dalam memori utama
• Page-table base register (PTBR)
o Merupakan pointer ke page-table

• Page-table length register (PTLR)


o Menyatakan ukuran page table

• Associative register – parallel search :


menggunakan register cache memori.
o Jika page number ditemukan dalam associative register, maka frame
number tersedia dan digunakan untuk mengakses memori
Translation Look-aside
Buffer (TLB)
• Dalam skema ini setiap akses ke
data/instruksi membutuhkan dua kali akses
memori : untuk page-table dan untuk
data/instruksi
• Kedua kasus ini dipecahkan dengan
menggunakan cache HW fast-lookup yang
disebut associative register atau translation
look-aside buffer (TLB)
Struktur TLB

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

• Hit ratio : persentasi berapa kali nomor page


ditemukan dalam TLB (jumlah associative
register)
Effective Access Time
(EAT)
• Menyatakan estimasi waktu akses ke suatu
lokasi di memori
o Associative Lookup (TLB) =  time unit
o Asumsi siklus memori = 1 time unit
o Hit ratio = 
o Effective Access Time (EAT)

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

user space physical memory space


Segmentation Hardware

View publication stats


Virtual Memory
Pembahasan
 Overview
 Demand Paging
Overview
 Konsep manajemen memori sebelumnya :
 Me-maintain banyak proses yang running dalam memori
secara multiprogramming
 Proses berada dalam memori fisik sebelum dieksekusi
 Dalam overlaying user harus men-dekomposisi struktur program
dalam algoritmanya dan menspesifikasi modul-modul overlaynya
Overview
 Isi program :
 Algoritma utama yang aktif mengolah data
 Penanganan kondisi error (exceptional condition) yang
amat jarang terjadi
 Struktur data dynamic allocated yang terpakai secara efektif
 Struktur data fixed allocated yang biasanya hanya sebagian
yang digunakan
 Modul-modul tertentu yang jarang digunakan
Overview
 Keuntungan jika tidak semua bagian tersebut ada di memori
(hanya bagian yang paling aktif) :
 Program tidak terkendalakan oleh jumlah memori fisik ;
program bisa amat besar
 Program-program pengendali error (error handling) jarang
digunakan.
 Array, list atau tabel yang dialokasikan melebihi kapasitas
yang digunakan.
 Program-program yang dijalankan belakangan.
 Lebih banyak program yang dapat running secara konkuren
di memori; utilisasi CPU meningkat
 Lebih sedikit I/O untuk loading/swapping ; program user
lebih cepat
Overview
 Konsep Virtual Memory
 Melihat memori sebagai “cache” dan disk sebagai
“memori”
 Implementasi dengan demand paging : bagian program
berada dalam memori adalah page-page yang sesuai dengan
kebutuhan
 Dapat diimplementasikan melalui :
 Demand paging
 Demand segmentation (page segmentasi)
Diagram Virtual Memory lebih besar
dari Physical Memory
Demand Paging
 Sama dengan teknik paging dengan swapping
 Proses berada dalam secondary storage (biasanya disk)
yang terbagi dalam sejumlah page
 Untuk dapat dieksekusi maka page proses yang
diperlukan harus ada di memori
 Jika belum ada maka page di-swap in (dalam hal ini swapper
lebih tepat disebut pager, swap-in/out menjadi page-
in/out)
Demand Paging Virtual Memory -
Physical Memory
Ada, lalu akses Swap page
Apakah page di
memori ?

Demand page

Tidak ada, maka


page di load
Demand Paging
 Pertanyaan saat page-in :
 Page mana yang akan di page-out ?
 Apakah frame yang akan ditempati kosong ?
 Jika suatu page yang di page-out merupakan data, perlu /
tidak page di storage di-refresh ?
I. Demand Paging

 Periksa tabel internal (biasanya pada PCB = process


control block) apakah referensi valid/invalid
 Bila valid tapi belum ada maka di page-in
 Jika invalid, maka batalkan proses
Transfer of a Paged Memory to
Contiguous Disk Space
Dukungan Hardware
 Page table : tabel memiliki valid/invalid bit serta bit
proteksi khusus
 Secondary memory : memori yang menyimpan
seluruh page (biasanya disk)
 Dikenal sebagai swap device dan bagian disk yang
digunakan untuk swap disebut swap space (backing store)
Valid-Invalid Bit
 Masing-masing entry page table memiliki nilai :
 (1  in-memory, 0  not-in-memory)
 Inisialisasi valid–invalid bit di-set 0 untuk semua entry page
table
 Contoh page table : Frame # valid-invalid bit
1
1
1
1
0

0
0
page table

 Selama translasi address, jika valid–invalid bit dalam page table


adalah 0  page fault.
Page Table When Some Pages Are Not in
Main Memory
Dukungan Software
 Kendala arsitektur : kemampuan me-restart instruksi
setelah terjadi page-fault
 Page fault bisa terjadi pada :
 Memory (data) reference
 Instruction fetch
Contoh :
 Instruksi 3 address “ADD C, A, B” dilakukan dalam
beberapa tahap :
 Fetch instruksi ADD
 Fetch data A ke dalam register Ra
 Fetch data B ke dalam register Rb
 Add Ra dan Rb dan hasilnya di register Rc
 Store hasil Rc ke C
 Page fault terjadi pada salah satu tahap memerlukan
pengulangan dari awal
Steps in Handling a Page Fault
Apa yang terjadi jika tidak ada frame
yang kosong ?

 Page replacement – temukan page dalam memori, tetapi


tidak sedang digunakan, swap-out page tersebut ke
backing store
 Menggunakan Algoritma replacement dimana Performance –
algoritma yang digunakan adalah yang menghasilkan jumlah
minimum page fault
II. Performance Demand Paging

 Rasio Page Fault 0  p  1.0


 if p = 0 no page faults
 if p = 1, every reference is a fault

 Effective Access Time (EAT)


EAT = (1 – p) x memory access time
+ p (page fault overhead
+ [swap page out ]
+ swap page in
+ restart overhead)
Contoh Demand Paging
 Memory access time = 1 microsecond (1 sec)
 50% dari waktu page yang digantikan (replace),
membutuhkan swap-out
 Swap Page Time = 10 msec = 10,000 sec
EAT = (1 – p) x 1 + p (15000)
= 1 + 14999p (dalam sec)

 5000 sec  overhead


III. Page Replacement Policy

 Performance (page fault ratio) bergantung pada page


replace policy agar page fault rate (PFR) sekecil mungkin.
 Jadi pemilihan policy untuk page replacement sangat
kritis terhadap performance sistem keseluruhan.
Swap Space
 Aspek penting dalam demand paging adalah menangani
penggunaan swap space (ruang disk yang digunakan
untuk swap)
 Suatu bagian dalam disk dijadikan swap space (di luar
sistem file) sebagai penyimpan “virtual memory”
Over-Allocating Memory
 Peningkatan degree of multiprogramming akan sampai
pada situasi Over Allocating Memory
 Saat terjadi page-fault & hendak page-in ternyata tidak ada
frame kosong tersedia
 Solusi OS : terminate proses user ? NO.
Paging harus transparan bagi user.
Solusi
 Thrashing : swap-out suatu proses (penurunan degree
of multiprogramming)
 Page replacement : mencari salah satu frame yang tidak
sedang digunakan dan membebaskannya
 Menuliskan isi sebelumnya ke swap-space
 Mengubah page table dimana page tidak ada di memori
Kebutuhan Page Replacement –
Over-Allocating Memory
Page Fault Service
 Menemukan lokasi dari page di dalam disk
 Menemukan free-frame, jika ada gunakan frame
tersebut untuk page yang bersangkutan dan jika tidak
ada :
 Mencari frame yang akan di-replace
 Page-out frame tersebut ke swap-space dan ubah tabel page
& frame
 Page-in page yang diminta ke frame kosong yang baru, serta
ubah tabel page & frame
 Mulai kembali ke user proses
Page Replacement
Dirty bit (Modify-bit)
 Saat tidak ditemukan frame kosong maka dilakukan dua
kali page transfer (in & out)
 Untuk mengurangi overhead operasi ini digunakan
dirty-bit pada setiap page/frame untuk menunjukkan
perlu/tidaknya page dalam disk diupdate (telah terjadi
modifikasi)
 Modify bit di-set ketika word/byte dalam page ditulis (write)
 page telah dimodifikasi.
 Ketika memilih page untuk di-replace, modify bit dibaca dulu.
 Jika bit tersebut di-set, maka page tersebut sudah dimodifikasi
sejak dibaca di disk  write page ke disk.
 Jika bit tersebut tidak di-set, maka page tersebut belum
dimodifikasi sejak dibaca di memory  jika copy dari page
tersebut di disk belum di overwrite, tidak perlu lagi write page
memory ke disk karena sudah ada.
Frame Allocation – Page
Replacement
 Dua masalah :
 Frame allocation algorithm : menentukan berapa banyak
frame dialokasikan untuk suatu/setiap proses
 Page-replacement algorithm : menentukan frame mana yang
dipilih untuk di page-out
 Pemilihan algoritma yang tepat sangat penting, karena
pemrosesan pada disk I/O costnya mahal (berpengaruh
pada effective acces time)
Page Replacement
 Terdapat banyak skema/algoritma
 Kriteria pemilihan algoritma yang sesuai :
meminimalisasi page-fault rate
 Evaluasi dengan string : string dari aktifitas-aktifitas
memory reference
 String dari memory reference dinamakan reference string
 Secara empiris direkam dari referensi yang terjadi pada
running program
 Secara hipotesis digenerate secara acak (random number
generator)
 Menghitung jumlah page fault pada string tersebut
Page Fault vs Jumlah Frame
 Bertambahnya jumlah frame akibat penambahan
physical memory space dapat mengurangi PFR
 Tanpa penambahan tersebut maka memperkecil ukuran
frame/page yang akhirnya meningkatkan page fault
Grafik Page Faults vs Jumlah
Frame
Page Replacement Policy
 Algoritma Acak
 Algoritma First In First Out (FIFO)
 Algoritma Optimal (OPT)
 Algoritma Not Recently Used (NRU)
 Algoritma Second Change Page
 Algoritma Clock
 Algoritma Least Recently Used (LRU)
Reference String
 Dalam pembahasan algoritma-algoritma reference
string disederhanakan dengan deretan page number
(bukan address-address referensi)
 Contoh :
 0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, dst
 Digantikan (page size = 100 byte) dengan : 1, 4, 1, 6, 1, 6, dst
Algoritma First In First Out
(FIFO)
 Page yang di-replace adalah page yang paling “tua”
(paling lama berada di memory secara terus menerus)
 Realisasinya setiap page menyimpan data waktu page
yang bersangkutan di-page-in atau menggunakan
struktur queue
 Mudah di-implementasikan tapi performance tidak
selalu baik
2. FIFO Page Replacement
 Reference string : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
 Jumlah frame = 3
 Page fault terjadi = 15 kali
Anomaly Belady(venomena menyimpang)
 Anomali yang terjadi : PFR naik saat jumlah frame
ditingkatkan
 Contoh, jika reference string :
 1,2,3,4,1,2,5,1,2,3,4,5
 Jumlah frame = 3, PFR = 9 page fault
 Jumlah frame = 4, PFR = 10 page fault
FIFO Illustrating Belady’s Anamoly
3. Optimal (OPT)
 Jika diketahui page-page mana yang berikutnya akan
diakses, maka page yang tidak akan digunakan dalam
waktu dekat (ie. Selang waktu terlama hingga diakses
kembali) yang di-replace.
 Anomali Belady tidak berlaku
 Secara teoritis paling optimal tapi dalam kenyataannya
sulit diimplementasikan
Optimal Page Replacement
 Reference string : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
 Jumlah frame = 3
 Page fault terjadi = 9 kali

 Pada referensi ke-4 terlihat page 7 akan di-replace dengan page 2,


karena page 7 baru akan digunakan pada referensi ke-18,
sedangkan page 0 akan digunakan pada referensi ke-5 dan page 1
akan digunakan pada referensi ke-14
7. Algoritma Least Recently Used
(LRU)
 Algoritma LRU merupakan perpaduan antara FIFO
dan OPT
 Mengaproksimasi Algoritma Optimal
 Perkiraan akses yang akan datang (forward information)
diestimasi dengan menggunakan informasi akses yang lalu
(backward information)
 Page dalam memori yang paling lama tidak diakses yang
di-replace
 Jika SR = reverse S maka PFR OPT pada S sama
dengan PFR LRU pada SR
LRU Page Replacement
 Reference string : 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
 Jumlah frame = 3
 Page fault terjadi = 12 kali
3,2,5,7,3,2,7,4,1,0,5,2,7,2,3,4,7,4,1,5,2,0

View publication stats


Manajemen Disk
• Merupakan salah satu piranti I/O
• Berfungsi sebagai media penyimpan utama
• Saat ini, disk yang umum adalah disk cakram magnetis

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.

 Setiap sector terdiri atas sejumlah byte yang sama besarnya


 Pada setiap sisi cakram terdapat head pembaca.
head-head pembaca ini bergerak secara radial secara bersamaan
 Cakram-cakram berputar pada sumbu pusatnya
2015
2015
• Track is shown in
yellow
• Sector is shown in

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!

View publication stats

You might also like