Bab 5: Penjadwalan CPU Konsep Dasar Kriteria Penjadwalan Algoritma Penjadwalan : FCFS, SJF, Priority, RR Penjadwalan Multiple-Processor Penjadwalan Real-Time Evaluasi Algoritma
6.1
Konsep Dasar Dengan sistem multiprogramming akan diperoleh utilitas CPU yang maksimal Pada saat proses dieksekusi, terdiri dari siklus eksekusi CPU dan menunggu I/O (CPU–I/O Burst Cycle)
6.2
1
Urutan CPU dan I/O Bursts
6.3
Histogram waktu CPU-burst
6.4
2
CPU Scheduler Memilih diantara proses yang ada di memori yang siap dieksekusi (ready) dan mengalokasikan CPU untuk satu diantara proses-proses tersebut Keputusan penjadwalan CPU diambil pada saat proses: 1. 2. 3. 4.
Berpindah dari state running ke waiting. Berpindah dari state running ke ready. Berpindah dari state waiting ke ready. Diterminasi.
Penjadwalan nomor 1 dan 4 tidak dapat ditunda (nonpreemptive). Penjadwalan nomor 2 dan 3 dapat ditunda (preemptive).
6.5
Dispatcher Modul dispatcher module memberi kontrol ke CPU untuk memilih proses dengan short-term scheduler; yang melibatkan: switching context switching ke user mode Melompat ke lokasi yang tepat pada user program untuk restart progra
Dispatch latency – waktu yang dibutuhkan dispatcher untuk menghentikan satu proses dan memulai proses lain yang sedang berjalan
6.6
3
Kriteria Penjadwalan Utilitas CPU – membuat CPU sesibuk mungkin Throughput – jumlah proses yang menyelesaikan eksekusi pada satu unit waktu Waktu Turnaround – jumlah waktu untuk mengeksekusi proses tertentu Waktu Tunggu – jumlah waktu suatu proses menunggu dalam ready queue Waktu Respon – jumlah waktu yang dibutuhkan dari sebuah permintaan dikirim sampai mendapatkan respon pertama, bukan output (untuk lingkungan time-sharing)
6.7
Kriteria Optimal Untilitas CPU maksimal Throughput maksimal Waktu turnaround minimal Waktu tunggu minimal Waktu respon minimal
6.8
4
Penjadwalan First-Come, First-Served (FCFS) Proses Burst Time P1 24 P2 3 P3 3 Diasumsikan proses dapat dengan urutan: P1 , P2 , P3 Gantt Chart untuk penjadwalan diatas adalah: P1
P2
P3
0 24 27 Waktu Tunggu untuk P1 = 0; P2 = 24; P3 = 27 Rata-rata waktu tunggu: (0 + 24 + 27)/3 = 17 Waktu Turnaround untuk P1 = 24; P2 = 27; P3 = 30 Rata-rata waktu turnarount: (24+27+30)/3=27 Bersifat Non preemptive (tidak dapat ditunda)
30
6.9
Penjadwalan FCFS (Cont.) Diasumsikan proses dapat dengan urutan P2 , P3 , P1 . Gantt chart untuk penjadwalah tersebut: P2
P3
P1
0 3 6 30 Waktu tunggu untuk P1 = 6; P2 = 0; P3 = 3 Rata-rata waktu tunggu: (6 + 0 + 3)/3 = 3 Waktu turnaround untuk P1 = 30; P2 = 3; P3 = 6 Rata-rata waktu turnarount: (30+3+6)/3 = 13 Hasilnya lebih baik dari sebelumnya, dimana proses sebelumnya terjadi convoy effect dimana proses kecil berada di belakang proses besar
6.10
5
Penjadwalan Shortest-Job-First (SJF) Hubungan antar proses berdasarkan panjang CPU burst berikutnya. CPU dialokasikan untuk proses yang mempunyai waktu terpendek terlebih dahulu Terdapat 2 skema: nonpreemptive – ketika CPU diberikan ke proses, maka proses tidak dapat ditunda sampai menyelesaikan CPU burst nya preemptive – jika proses baru datang dengan CPU burst lebih kecil dibandingkan sisa waktu proses yang sedang dieksekusi, maka proses ditunda dan diganti dengan proses baru. Skema ini disebut juga dengan Shortest-RemainingTime-First (SRTF).
SJF optimal – menghasilkan rata-rata waktu tunggu minimal pada sekumpulan proses
6.11
Contoh SJF Non-Preemptive Process Arrival Time P1 0.0 P2 2.0 P3 4.0 P4 5.0 SJF (non-preemptive) P1 0
3
P3 7
Burst Time 7 4 1 4
P2 8
P4 12
16
Waktu tunggu untuk P1 = 0; P2 = 6; P3 = 3; P4 = 7 Rata-rata waktu tunggu = (0 + 6 + 3 + 7)/4 = 4 Waktu turnaround untuk P1 = 7; P2 = 10; P3 = 4; P4 = 11 Rata-rata waktu tunggu = (7 + 10 + 4 +11)/4 = 8 6.12
6
Contoh SJF Preemptive Process P1 P2 P3 P4 SJF (preemptive) P1 0
P2 2
P3 4
Arrival Time 0.0 2.0 4.0 5.0
P2 5
Burst Time 7 4 1 4
P4 7
P1 11
16
Waktu tunggu untuk P1 = 9; P2 = 1; P3 = 0; P4 = 2 Rata-rata waktu tunggu = (9 + 1 + 0 + 2)/4 = 3 Waktu turnaround untuk P1 = 16; P2 = 5; P3 = 1; P4 = 6 Rata-rata waktu tunggu = (16 + 5 + 1 + 6)/4 = 7 6.13
Menentukan Panjang CPU Burst berikutnya Hanya mengestimasi panjang CPU burst. Dapat dilakukan menggunakan panjang CPU burst sebelumnya, menggunakan exponential averaging. 1. t n = panjang aktual dari CPU burst ke n 2. τ n +1 = nilai prediksi untuk CPU burst berikutnya 3. α , 0 ≤ α ≤ 1 4. Tentukan : τ n=1 = α tn + (1 − α )τ n .
6.14
7
Prediksi Panjang CPU Burst berikutnya
6.15
Contoh Exponential Averaging α =0 τn+1 = τn Histori saat ini tidak dihitung.
α =1 τn+1 = tn Hanya menghitung CPU burst aktual terakhir.
Jika kita menurunkan formula, didapatkan: τn+1 = α tn+(1 - α) α tn -1 + … +(1 - α )j α tn -1 + … +(1 - α )n=1 tn τ0
Karena baik α dan (1 - α) kurang dari atau sama dengan 1, setiap successor mempunyai nilai yang lebih rendah dari predecessor.
6.16
8
Penjadwalan Priority Setiap proses mempunyai nilai prioritas (integer) CPU dialokasikan untuk proses dengan prioritas tertinggi (nilai integer terkecil = prioritas tertinggi). Preemptive nonpreemptive
SJF adalah penjadwalan prioritas dimana prioritasnya adalah berdasarkan hasil prediksi waktu CPU burst berikutnya. Problem ≡ Starvation – proses prioritas rendah tidak pernah dieksekusi Solution ≡ Aging – seiring waktu berjalan meningkatkan prioritas proses.
6.17
Contoh Priority Non-Preemptive Process Arrival Time P1 0.0 P2 2.0 P3 4.0 P4 5.0 Priority (non-preemptive) P1 0
Burst Time 7 4 1 4 P4
P2 7
Priority 3 1 3 2
11
P3 15 16
Waktu tunggu untuk P1 = 0; P2 = 5; P3 = 11; P4 =6 Rata-rata waktu tunggu = (0 + 5 + 11 + 6)/4 = 4.5 Waktu turnaround untuk P1 = 7; P2 = 9; P3 = 12; P4 = 10 Rata-rata waktu tunggu = (7 + 9 + 12 +10)/4 = 9.5 6.18
9
Contoh Priority Preemptive Process Arrival Time Burst Time Priority P1 0.0 7 3 P2 2.0 4 1 P3 4.0 1 3 P4 5.0 4 2 Priority (non-preemptive), asumsi apabila prioritas sama, diambil yang datang lebih dahulu
0
P4
P2
P1 2
P1 10
6
P3 15 16
Waktu tunggu untuk P1 = 10; P2 = 0; P3 = 11; P4 =1 Rata-rata waktu tunggu = (10 + 0 + 11 + 1)/4 = 4.5 Waktu turnaround untuk P1 = 15; P2 = 4; P3 = 12; P4 = 5 Rata-rata waktu tunggu = (15 + 4 + 12 +5)/4 = 9 6.19
Round Robin (RR) Setiap proses mendapatkan unit waktu tertentu dari waktu CPU (waktu quantum), biasanya 10-100 millisecond. Setelah waktu selesai, proses ditunda dan ditambahkan pada ready queue. Jika terdapat n proses pada ready queue dan waktu quantum q, kemudian setiap proses mendapatkan waktu CPU 1/n pada bagian waktu q tersebut. Tidak ada proses yang menunggu lebih dari (n-1)q unit waktu. Performansi q besar FIFO q kecil q harus lebih besar dari context switch, jika tidak terjadi overhead yang tinggi.
6.20
10
Contoh RR dengan Waktu Quantum = 20 Process P1 P2 P3 P4
Burst Time 53 17 68 24
Gantt chart : P1 0
P2 20
37
P3
P4 57
P1 77
P3 97 117
P4
P1
P3
P3
121 134 154 162
Biasanya, RR mempunyai rata-rata waktu tunggu yang lebih besar dari SJF, tetapi respon yang lebih baik 6.21
Waktu Quantum dan waktu Context Switch
6.22
11
Waktu Turnaround dengan Waktu Quantum yang Bervariasi
6.23
Multilevel Queue Ready queue dibagi ke dalam antrian yang terpisah foreground (interactive) background (batch) Setiap antrian mempunyai algoritma penjadwalan masing-masing foreground – RR background – FCFS Penjadwalan yang harus dilakukan antara antrian Penjadwalan Prioritas Tetap (Fixed priority scheduling); (misalnya, melayani semua foreground kemudian background). Kemungkinan starvation. Time slice – setiap antrian mendapat sejumlah waktu CPU yang dapat digunakan diantara proses-prosesnya, yaitu, 80% untuk foreground pada RR dan 20% untuk background pada FCFS 6.24
12
Penjadwalan Multilevel Queue
6.25
Multilevel Feedback Queue Proses dapat berpindah antar beberapa antrian; aging juga dapat diimplementasikan. Multilevel-feedback-queue scheduler ditentukan dengan parameter berikut: Jumlah queue Algoritma penjadwalan untuk setiap antrian Metode digunakan untuk menentukan kapan upgrade proses Motode digunakan untuk menentukan kapan menurunkan proses Metode digunakan untuk menentukan antrian mana dari proses yang masuk ketika proses memerlukan layanan
6.26
13
Contoh Multilevel Feedback Queue Tiga antrian: Q0 – time quantum 8 milliseconds Q1 – time quantum 16 milliseconds Q2 – FCFS
Penjadwalan Job baru masuk antrian Q0 yang melayani FCFS. Jika mendapatkan CPU, job menerima 8 millisecond. Jika tidak selesai dalam 8 millisecond, job dipindah ke antrian Q1. Pada job Q1 melayani lagi FCFS dan menerima 16 millisecond tambahan. Jika masih belum selesai, ditundan dan dipindah ke antrian Q2.
6.27
Multilevel Feedback Queues
6.28
14
Penjadwalan Multiple-Processor Penjadwalan CPU lebih kompleks ketika tersedia multiple CPU. Homogeneous processors dalam multiprocessor. Load sharing Asymmetric multiprocessing – hanya satu prosessor yang mengakses struktur data sistem, mengurangi kebutuhan data sharing
6.29
Penjadwalan Real-Time Hard real-time – dibutuhkan untuk menyelesaikan critical task dalam sejumlah waktu yang dijaminkan. Soft real-time computing – membutuhkan proses kritis berdasarkan prioritas.
6.30
15
Dispatch Latency
6.31
Evaluasi Algoritma Deterministic modeling – mengambil beban kerja yang telah ditetapkan dan mendefinisikan kinerja setiap algoritma untuk beban kerja itu. Queueing models Implementasi
6.32
16
Evaluasi Penjadwal CPU dengan Simulasi
6.33
Penjadwalan Solaris 2
6.34
17
Prioritas Windows 2000
6.35
18