Lập lịch CPU - ndtien-practice-c

Download Report

Transcript Lập lịch CPU - ndtien-practice-c

Chương 5: Lập lịch CPU
Nguyên lý hệ điều hành
Nguyễn Đức Thịnh - ĐHNNHN
Chương 5: Lập lịch CPU
 Các khái niệm
 Tiêu chí lập lịch
 Thuật toán lập lịch
 Lập lịch luồng
 Lập lịch đa xử lý
 Các ví dụ
 Đánh giá thuật toán
Nguyên lý hệ điều hành
5.2
Nguyễn Đức Thịnh - ĐHNNHN
Mục tiêu
 Giới thiệu về lập lịch CPU, cần thiết cho các hệ điều hành đa chương
 Một số thuật toán lập lịch CPU
 Tiêu chí để lựa chọn thuật toán lập lịch CPU cho một hệ thống
Nguyên lý hệ điều hành
5.3
Nguyễn Đức Thịnh - ĐHNNHN
Khái niệm
 Hiệu suất sử dụng CPU tối đa với đa chương trình
 Chu trình CPU–I/O Burst– Thực thi tiến trình là một chu trình của
thực thi CPU và I/O wait
 Phân phối CPU burst
Nguyên lý hệ điều hành
5.4
Nguyễn Đức Thịnh - ĐHNNHN
Tần số của CPU-burst
Nguyên lý hệ điều hành
5.5
Nguyễn Đức Thịnh - ĐHNNHN
Chu trình thay đổi giữa CPU và
I/O Bursts
Nguyên lý hệ điều hành
5.6
Nguyễn Đức Thịnh - ĐHNNHN
Bộ lập lịch CPU
 Lựa chọn trong một trong số các tiến trình trong bộ nhớ đã sẵn sàng
thực thi để cấp phát CPU
 Quyết định lập lịch CPU có thể xảy ra khi một tiến trình:
1. Chuyển từ running sang waiting
2. Chuyển từ running sang ready
3. Chuyển từ waiting sang ready
4.
Kết thúc
 Các trường hợp 1 và 4 là không bắt buộc (nonpreemptive)
 Các trường hợp khác là bắt buộc (preemptive)
Nguyên lý hệ điều hành
5.7
Nguyễn Đức Thịnh - ĐHNNHN
Bộ điều phối (Dispatcher)
 Bộ điều phối chuyển điều khiển CPU tới tiến trình được chọn bởi bộ
lập lịch ngắn hạn; các công việc gồm có:

chuyển ngữ cảnh

chuyển sang user mode

nhảy tới vị trí hiện tại trong user program để bắt đầu thực thi tiếp
 Độ trễ (Dispatch latency) – thời gian để bộ điều phối dừng một tiến
trình và bắt đầu thực thi tiến tình khác
Nguyên lý hệ điều hành
5.8
Nguyễn Đức Thịnh - ĐHNNHN
Tiêu chí lập lịch
 Sử dụng CPU (utilization) – luôn có công việc được giao cho CPU
 Thông lượng (throughput) – số lượng tiến trình thực thi xong trong
một đơn vị thời gian
 Thời gian xoay vòng (Turnaround time) – thời gian để thực thi một
tiến trình
 Thời gian chờ (Waiting time) – thời gian một tiến trình chờ trong
ready queue
 Thời gian trả lời (Response time) – thời gian từ lúc một request
được gửi đi đến khi response đầu tiên được tạo ra, chưa gửi đi (đối
với các hệ chia sẻ thời gian)
Nguyên lý hệ điều hành
5.9
Nguyễn Đức Thịnh - ĐHNNHN
Tiêu chí lập lịch
 Sử dụng tối đa CPU
 Tối đa thông lượng
 Tối thiểu thời gian xoay vòng
 Tối thiểu thời gian chờ
 Tối thiểu thời gian trả lời
Nguyên lý hệ điều hành
5.10
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch First-Come, First-Served (FCFS)
Tiến trình
Burst Time
P1
24
P2
3
P3
3
 Nếu các tiến trình được xếp theo thứ tự: P1 , P2 , P3
Biểu đồ Gantt lập lịch như sau:
P1
P2
0
24
P3
27
30
 Thời gian chờ: P1 = 0; P2 = 24; P3 = 27
 Trung bình: (0 + 24 + 27)/3 = 17
Nguyên lý hệ điều hành
5.11
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch FCFS
Giả sử các tiến trình được xếp theo thứ tự:
P2 , P3 , P1
 Biểu đồ Gantt như sau:
P2
0
P3
3
P1
6
30
 Thời gian chờ: P1 = 6; P2 = 0; P3 = 3
 Thời gian trung bình: (6 + 0 + 3)/3 = 3
 Tốt hơn trường hợp trước
 Nhận thấy rằng tiến trình ngắn hơn đặt trước tiến trình dài
Nguyên lý hệ điều hành
5.12
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch Shortest-Job-First (SJF)
 Tính toán thời gian của CPU burst tiếp theo của mỗi tiến trình. Chọn
tiến trình với thời gian ngắn nhất.
 SJF là tối ưu – thời gian chờ trung bình tối thiểu

Tính được thời gian của CPU burst tiếp theo.
Nguyên lý hệ điều hành
5.13
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ về SJF
Tiến trình
Arrival Time
Burst Time
P1
0.0
6
P2
2.0
8
P3
4.0
7
P4
5.0
3
 Biểu đồ lập lịch SJF
P4
0
P3
P1
3
9
P2
16
24
 Thời gian chờ trung bình = (3 + 16 + 9 + 0) / 4 = 7
Nguyên lý hệ điều hành
5.14
Nguyễn Đức Thịnh - ĐHNNHN
Thời gian của CPU Burst tiếp theo
 Chỉ có thể ước lượng
 Dựa trên thời gian của các CPU burst trước đó, sử dụng exponential
averaging
1. t  thoigian cua CPU burst thun
n
2. 
 gia triuoc luong cua thoigian CPU burst tieptheo
n 1
3.  , 0    1
4. Dinh nghia :
 n1   tn  1    n .
Nguyên lý hệ điều hành
5.15
Nguyễn Đức Thịnh - ĐHNNHN
Ước lượng thời gian của
CPU Burst tiếp theo
Nguyên lý hệ điều hành
5.16
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ Exponential Averaging
  =0
n+1 = n
 Các giá trị trước đó không được sử dụng.

  =1
n+1 =  tn
 Chỉ có CPU burst ngay trước đó được dùng.
 Ta khai triển công thức:
n+1 =  tn+(1 - ) tn-1 + …

+(1 -  )j  tn-j + …
+(1 -  )n +1 t0
 Vì  và (1 - ) không lớn hơn 1, các toán hạng sau có trọng số nhỏ
hơn của toán hạng trước.
Nguyên lý hệ điều hành
5.17
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch độ ưu tiên
 Độ ưu tiên (priority) được gán cho mỗi tiến trình
 CPU được cấp phát cho tiến trình với độ ưu tiên cao nhất

Preemptive

Nonpreemptive
 SJF là lập lịch độ ưu tiên với độ ưu tiên là ước lượng thời gian của
CPU burst kế tiếp
 Vấn đề  Starvation – các tiến trình với độ ưu tiên thấp có thể không
bao giờ được thực thi
 Giải pháp  Aging – ta tăng dần độ ưu tiên của các tiến trình đó
Nguyên lý hệ điều hành
5.18
Nguyễn Đức Thịnh - ĐHNNHN
Round Robin (RR)
 Mỗi tiến trình nhận được một đơn vị thời gian CPU ngắn (time
quantum), thường là 10-100 milliseconds. Hết đơn vị thời gian này,
tiến trình bị bắt buộc tạm ngừng và chuyển vào cuối của ready queue.
 Nếu có n tiến trình trong ready queue và time quantum là q đơn vị thời
gian, thì mỗi tiến trình nhận 1/n thời gian CPU trong khoảng thời gian
q đơn vị thời gian. Không có tiến trình nào phải đợi nhiều hơn (n-1)q
đơn vị thời gian.
 Hiệu suất

Khi q lớn thì tương đương với FIFO

q phải lớn so với thời gian chuyển ngữ cảnh, nếu không thời gian
phụ trội (để chuyển ngữ cảnh) quá lớn
Nguyên lý hệ điều hành
5.19
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ RR với Time Quantum = 4
Tiến trình
P1
P2
P3
Burst Time
24
3
3
 Biểu đồ Gantt:
P1
0
P2
4
P3
7
P1
10
P1
14
P1
18 22
P1
26
P1
30
 Thông thường, thời gian turnaround trung bình cao hơn SJF,
nhưng response tốt hơn
Nguyên lý hệ điều hành
5.20
Nguyễn Đức Thịnh - ĐHNNHN
Time Quantum và Chuyển ngữ cảnh
Nguyên lý hệ điều hành
5.21
Nguyễn Đức Thịnh - ĐHNNHN
Turnaround Time thay đổi khi Time Quantum thay đổi
Nguyên lý hệ điều hành
5.22
Nguyễn Đức Thịnh - ĐHNNHN
Hàng đợi đa cấp
 Ready queue được chia thành queues riêng biệt:

foreground (tương tác)

background (xử lý theo lô)
 Mỗi queue có thuật toán lập lịch của riêng nó:

foreground – RR

background – FCFS
 Lập lịch được tiến hành như sau:

Lập lịch theo độ ưu tiên cố định (lập lịch toàn bộ foreground rồi mới
đến background). Có thể xuất hiện starvation.

Time slice – mỗi queue nhận một lượng thời gian CPU để lập lịch
cho các tiến trình trong nó; ví dụ: 80% cho foreground bằng RR và
20% cho background bằng FCFS
Nguyên lý hệ điều hành
5.23
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch hàng đợi đa cấp
Nguyên lý hệ điều hành
5.24
Nguyễn Đức Thịnh - ĐHNNHN
Hàng đợi đa cấp feedback
 Một tiến trình có thể di chuyển giữa các hàng đợi; aging có thể
được cài đặt bằng cách này.
 Bộ lập lịch hàng đợi đa cấp feedback được định nghĩa bởi các
tham số sau:

số lượng hàng đợi

thuật toán lập lịch cho mỗi hàng đợi

phương thức xác định khi nào nâng bậc một tiến trình

phương thức xác định khi nào hạ bậc một tiến trình

phương thức xác định hàng đợi mà một tiến trình sẽ gia nhập
khi tiến trình đó sử dụng dich vụ
Nguyên lý hệ điều hành
5.25
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ
 Ba hàng đợi:

Q0 – RR với time quantum 8 milliseconds

Q1 – RR với time quantum 16 milliseconds

Q2 – FCFS
 Lập lịch

Một job mới gia nhập hàng đợi Q0 và được xử lý FCFS. Job đó
nhận được 8 milliseconds thời gian CPU. Nếu sau đó nó chưa kết
thúc, nó được chuyển sang hàng đợi Q1.

Tại Q1 job lại được xử lý FCFS và nhận 16 milliseconds. Nếu nó
vẫn chưa hoàn tất, nó được chuyển tới Q2.
Nguyên lý hệ điều hành
5.26
Nguyễn Đức Thịnh - ĐHNNHN
Multilevel Feedback Queues
Nguyên lý hệ điều hành
5.27
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch luồng
 Phân biệt giữa luồng user-level và kernel-level
 Mô hình Many-to-one và Many-to-Many, thread library lập lịch cho các
luồng user-level chạy trong một LWP

Còn gọi là process-contention scope (PCS) vì việc lập lịch chỉ
so sánh giữa các luồng trong cùng tiến trình
 Luồng trong kernel được lập lịch theo system-contention scope
(SCS) – so sánh giữa các luồng trong hệ thống
Nguyên lý hệ điều hành
5.28
Nguyễn Đức Thịnh - ĐHNNHN
Thư viện Pthread
 API cho phép lựa chọn giữa PCS và SCS lúc tạo luồng:

PTHREAD_SCOPE_PROCESS lập lịch luồng sử dụng PCS
scheduling

PTHREAD_SCOPE_SYSTEM sử dụng SCS scheduling.
Nguyên lý hệ điều hành
5.29
Nguyễn Đức Thịnh - ĐHNNHN
Các hàm API lập lịch của Pthread
#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5
int main(int argc, char *argv[])
{
int i;
pthread_t tid[NUM_THREADS];
pthread_attr_t attr;
/* get the default attributes */
pthread_attr init(&attr);
/* set the scheduling algorithm to PROCESS or SYSTEM */
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
/* set the scheduling policy - FIFO, RT, or OTHER */
pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
/* create the threads */
for (i = 0; i < NUM_THREADS; i++)
pthread_create(&tid[i], &attr, runner, NULL);
Nguyên lý hệ điều hành
5.30
Nguyễn Đức Thịnh - ĐHNNHN
Các hàm API lập lịch của Pthread
/* now join on each thread */
for (i = 0; i < NUM_THREADS; i++)
pthread_join(tid[i], NULL);
}
/* Each thread will begin control in this function */
void *runner(void *param)
{
printf("I am a thread\n");
pthread_exit(0);
}
Nguyên lý hệ điều hành
5.31
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch đa bộ xử lý
 Lập lịch CPU trở nên khó khăn hơn khi có nhiều processor
 Ta chỉ quan tâm trường hợp: Các bộ xử lý là thuần nhất
(Homogeneous processors)
 Asymmetric multiprocessing – chỉ một processor truy cập dữ liệu
hệ thống, giảm nhẹ gánh nặng chia sẻ dữ liệu
 Symmetric multiprocessing (SMP) – mỗi processor tự lập lịch, tất
cả các tiến trình trong một ready queue chung, hoặc mỗi processor
có ready queue riêng
 Processor affinity – tiến trình giữ nguyên processor mà nó đang
chạy, hạn chế đổi processor

soft affinity (chỉ hạn chế chứ không đảm bảo)

hard affinity (được hỗ trợ bởi lời gọi hệ thống, ví dụ: Linux)
Nguyên lý hệ điều hành
5.32
Nguyễn Đức Thịnh - ĐHNNHN
NUMA và Lập lịch CPU
Nguyên lý hệ điều hành
5.33
Nguyễn Đức Thịnh - ĐHNNHN
Bộ xử lý đa nhân
 Xu hướng gần đây đặt nhiều nhân xử lý trên cùng chip vật lý
 Nhanh hơn và tiêu thụ điện ít hơn
 Đa luồng trên cùng một nhân cũng ngày càng phổ biến

Tận dụng thời gian truy cập bộ nhớ để chạy các luồng khác
Nguyên lý hệ điều hành
5.34
Nguyễn Đức Thịnh - ĐHNNHN
Hệ thống đa nhân đa luồng
Nguyên lý hệ điều hành
5.35
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ trong các OS
 Lập lịch trong Solaris
 Lập lịch trong Windows XP
 Lập lịch trong Linux
Nguyên lý hệ điều hành
5.36
Nguyễn Đức Thịnh - ĐHNNHN
Bảng điều phối trong Solaris
Nguyên lý hệ điều hành
5.37
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch trong Solaris
Nguyên lý hệ điều hành
5.38
Nguyễn Đức Thịnh - ĐHNNHN
Độ ưu tiên trong Windows XP
Nguyên lý hệ điều hành
5.39
Nguyễn Đức Thịnh - ĐHNNHN
Lập lịch trong Linux
 Thời gian lập lịch là ngắn
 Chia làm hai vùng: time-sharing and real-time
 Real-time từ 0 đến 99 và nice value từ 100 đến 140
Nguyên lý hệ điều hành
5.40
Nguyễn Đức Thịnh - ĐHNNHN
Độ ưu tiên và time-slice
Nguyên lý hệ điều hành
5.41
Nguyễn Đức Thịnh - ĐHNNHN
Danh sách các tác vụ theo độ ưu tiên
Nguyên lý hệ điều hành
5.42
Nguyễn Đức Thịnh - ĐHNNHN
Đánh giá thuật toán
 Mô hình tất định – lấy một bộ test và đánh giá hiệu suất của các thuật
toán với input đó
 Mô hình hàng đợi
 Cài đặt
Nguyên lý hệ điều hành
5.43
Nguyễn Đức Thịnh - ĐHNNHN
Đánh giá bộ lập lịch CPU
bằng mô phỏng
Nguyên lý hệ điều hành
5.44
Nguyễn Đức Thịnh - ĐHNNHN
Hết chương 5
Nguyên lý hệ điều hành
Nguyễn Đức Thịnh - ĐHNNHN