1
Chương 4: Định thời CPU
2
Nội dung
Khái niệm cơ bản
Các bộ định thời
– long-term, mid-term, short-term
Các tiêu chuẩn định thời CPU
Các giải thuật định thời
– First-Come, First-Served (FCFS)
– Round-Robin (RR)
– Shortest Job First (SJF) và Shortest Remaining Time First (SRTF)
– Priority Scheduling
– Highest Response Ratio Next (HRRN)
– Multilevel Queue
– Multilevel Feedback Queue
3
Khái niệm cơ bản
Trong các hệ thống
multitasking
– Thực thi nhiều chương trình đồng thời làm tăng hiệu suất hệ thống.
– Tại mỗi thời điểm, chỉ có một process được thực thi. Do đó, cần phải
giải quyết vấn đề phân chia, lựa chọn process thực thi sao cho được
hiệu quả nhất chiến lược định thời CPU.
Định thời CPU
– Chọn một process (từ ready queue) thực thi.
– Với một multithreaded kernel, việc định thời CPU là do OS chọn kernel
thread được chiếm CPU.
4
Các bộ định thời
ready
ready
running
running
suspended
ready
suspended
ready
suspended
blocked
suspended
blocked
new
new
terminated
terminated
blocked
blocked
Long-term
scheduling
Long-term
scheduling
Medium-term
scheduling
Medium-term
scheduling
Short-term
scheduling
5
Các
hàng đợi định thời
6
Các bộ định thời
Long-term scheduling
– Xác định chương trình nào được chấp nhận nạp vào hệ thống để thực thi
– Điều khiển mức độ multiprogramming của hệ thống
– Long term scheduler thường cố gắng duy trì xen lẫn CPU-bound và I/O-
bound process
Medium-term scheduling
– Sự chuyển đổi dựa trên sự cần thiết để quản lý multiprogramming
– Được thực hiện bởi phần quản lý bộ nhớ và được thảo luận ở phần quản
lý bộ nhớ.
7
Các bộ định
thời (tt)
• Short term scheduling
Xác định process nào trong ready queue sẽ được chiếm CPU để thực thi
kế tiếp (còn được gọi là định thời CPU, CPU scheduling)
Short term scheduler còn được gọi với tên khác là dispatcher
Bộ định thời short-term được gọi mỗi khi có một trong các sự
kiện/interrupt sau xảy ra:
– clock interrupt
– I/O interrupt
– operating system call, trap
– signal
8
Dispatcher*
Dispatcher sẽ chuyển quyền điều khiển CPU về cho
process
được chọn bởi bộ định thời ngắn hạn
Bao gồm:
– Chuyển ngữ cảnh (sử dụng thông tin ngữ cảnh trong PCB)
– Chuyển về user mode
– Nhảy đến vị trí thích hợp trong chương trình ứng dụng để khởi động lại
chương trình (chính là program counter trong PCB)
Công việc này gây ra phí tổn
– Dispatch latency: thời gian mà dispatcher dừng một process và khởi động
một process khác
9
Các tiêu chuẩn định thời CPU
User-oriented
– Response time: khoảng thời
gian process nhận yêu cầu đến khi yêu cầu
đầu tiên được đáp ứng (time-sharing, interactive system) cực tiểu
– Turnaround time: khoảng thời gian từ lúc một process được nạp vào hệ
thống đến khi process đó kết thúc cực tiểu
– Waiting time: tổng thời gian một process đợi trong ready queue cực tiểu
System-oriented
– processor utilization: định thời sao cho CPU càng bận càng tốt cực đại
– fairness: tất cả process phải được đối xử như nhau
– throughput: số process
hoàn tất công việc trong một đơn vị thời gian
cực đại.
10
Hai yếu tố của giải thuật định thời
Hàm ch
ọ
n l
ự
a (selection function): dùng để chọn process nào trong ready
queue được thực thi (thường dựa trên độ ưu tiên, yêu cầu về tài nguyên, đặc
điểm thực thi của process,…), ví dụ
• w = tổng thời gian đợi trong hệ thống
• e = thời gian đã được phục vụ
• s = tổng thời gian thực thi của process (bao gồm cả “e”)
Ch
ế
đ
ộ
quy
ế
t đ
ị
nh
(decision mode): chọn thời điểm thực hiện hàm chọn lựa
để định thời. Có hai chế độ
– Non-preemptive
Khi ở trạng thái running, process sẽ thực thi cho đến khi kết thúc
hoặc bị blocked do yêu cầu I/O
– Preemptive
Process đang thực thi (trạng thái running) có thể bị ngắt nửa chừng và
chuyển về trạng thái ready bởi hệ điều hành
Chi phí cao hơn non-preemptive nhưng đánh đổi lại bằng thời gian
đáp ứng tốt hơn vì không có trường hợp một process độc chiếm CPU
quá
lâu.
11
Khảo sát giải thuật định thời
Service time = thời gian process cần CPU trong một chu kỳ CPU-I/O
Process có service time lớn là các CPU-bound process
Process
Arrival
Time
Service
Time
1 0 3
2 2 6
3 4 4
4 6 5
5 8 2
load store
add store
read from file
wait for I/O
inc store
write to file
load store
add store
read from file
wait for I/O
wait for I/O
…
I/O burst
CPU burst
CPU burst
CPU
burst
I/O burst
I/O burst
một chu kỳ
CPU-I/O
12
First-Come First-Served (FCFS)
Cơ chế : Tiến trình nào yêu cầu CPU trước sẽ được cấp phát CPU trước;
Process sẽ thực thi đến khi kết thúc hoặc bị blocked do I/O
FCFS là non-preemptive algorithm
Hiện thực : sử dụng hàng đợi FIFO (FIFO queues)
– Tiến trình đi vào được thêm vào cuối hàng đợi
– Tiến trình được lựa chọn để xử lý được lấy từ đầu của queues
0
5
10
15
20
P1
P2
P3
P4
P5
add
run
13
FCFS
Scheduling
Ví dụ :
Process Burst Time
P1 24
P2 3
P3 3
Giả sử thứ tự vào của các tiến trình
là
P1, P2, P3
Thời gian chờ
P1 = 0;
P2 = 24;
P3 = 27;
Thời gian chờ trung bình
(0+24+27)/3 = 17
0
24 27 30
P1 P2 P3
Gantt Chart for Schedule
14
FCFS Scheduling
Ví dụ:
Process Burst Time
P1 24
P2 3
P3 3
Giả sử thời gian vào của các tiến trình
là
P2, P3, P1
Thời gian chờ :
P1 = 6; P2 = 0;
P3 = 3;
Thời gian chờ trung bình
(6+0+3)/3 = 3 , tốt hơn
0 3 6
30
P1P2 P3
Gantt Chart for Schedule
15
Shortest-Job-First(SJF) Scheduling
Định thời biểu công việc ngắn nhất trước
Khi CPU được tự do, nó sẽ cấp phát cho tiến trình yêu cầu ít thời gian
nhất để kết thúc ( tiến trình ngắn nhất)
Liên quan đến chiều dài thời gian sử dụng CPU cho lần tiếp theo của
mỗi tiến trình. Sử dụng những chiều dài này để lập lịch cho tiến trình
với thời gian ngắn
nhất.
Hai hình thức (Schemes):
– Scheme 1: Non-preemptive( tiến trình độc quyền CPU)
Khi CPU được trao cho quá trình nó không nhường cho đến khi nó kết thúc chu kỳ xử lý
của nó
– Scheme 2: Preemptive( tiến trình không độc quyền)
Nếu một tiến trình CPU mới được đưa vào danh sách với chiều dài sử dụng CPU cho
lần tiếp theo nhỏ hơn thời gian còn lại của tiến trình đang xử lý nó sẽ dừng hoạt động
tiến trình hiện hành (hình thức này còn gọi là
Shortest-Remaining-Time-First (SRTF).)
– SJF là tối ưu – cho thời gian chờ đợi trung bình tối thiểu với một tập tiến trình cho trước
16
Non-Preemptive SJF Scheduling
Ví dụ :
Process
Arrival Time
Burst Time
P1 0 7
P2 2 4
P3 4 1
P4 5 4
0
8 16
P1 P2P3
Gantt Chart for Schedule
P4
127
Average waiting time =
(0+6+3+7)/4 = 4
17
Preemptive SJF Scheduling(SRTF)
Ví dụ :
Process
Arrival Time
Burst Time
P1 0 7
P2 2
4
P3 4 1
P4 5 4
0 7
16
P1 P2P3
Gantt Chart for Schedule
P4
115
Average waiting time =
(9+1+0+2)/4 = 3
P2 P1
2 4
18
Nhận xét về giải thuật SJF
Có thể xảy ra tình trạng “đói” (starvation) đối với các process có
CPU-burst lớn khi có nhiều process với CPU-burst nhỏ đến hệ
thống.
Cơ chế non-preemptive không phù hợp cho hệ thống time
sharing (interactive)
Giải thuật SJF ngầm định ra độ ưu tiên theo burst time
Các CPU-bound process
có độ ưu tiên thấp hơn so với I/O-bound
process, nhưng khi một process không thực hiện I/O được thực
thi thì nó độc chiếm CPU cho đến khi kết thúc
19
Priority Scheduling*
Mỗi process sẽ được gán một độ ưu tiên
CPU sẽ được cấp cho process có độ ưu tiên cao nhất
Định thời sử dụng độ ưu tiên có thể:
– Preemptive hoặc
– Nonpreemptive
20
Gán độ ưu tiên*
SJF là một giải thuật định thời sử dụng độ ưu tiên với độ ưu tiên
là
thời-gian-sử-dụng-CPU-dự-đoán
Gán độ ưu tiên còn dựa vào:
– Yêu cầu về bộ nhớ
– Số lượng file được mở
– Tỉ lệ thời gian dùng cho I/O trên thời gian sử dụng CPU
– Các yêu cầu bên ngoài ví dụ như: số tiền người dùng trả khi thực thi công
việc
21
Priority Scheduling*
Vấn đề: trì hoãn vô hạn định – process có độ ưu tiên thấp có thể
không bao giờ được thực thi
Giải pháp: aging – độ ưu tiên của process sẽ tăng theo thời gian
22
Round Robin (RR)
Mỗi
process nhận được một đơn vị nhỏ thời gian CPU (time slice,
quantum time), thông thường từ 10-100 msec để thực thi. Sau
khoảng thời gian đó, process bị đoạt quyền và trở về cuối hàng
đợi ready.
Nếu có n process trong hàng đợi ready và quantum time = q thì
không có process nào phải chờ đợi quá (n 1)q đơn vị thời gian.
Hiệu suất
– Nếu q lớn: RR FCFS
– Nếu q nhỏ (q không được quá nhỏ bởi vì phải tốn chi phí chuyển ngữ
cảnh)
Thời gian chờ đợi trung bình của
giải thuật RR thường khá lớn
nhưng thời gian đáp ứng nhỏ
23
Ví duï Round Robin
Time Quantum = 20
Process Burst Time
P1 53
P2 17
P3 68
P4 24
0
P1 P4P3
Gantt Chart for Schedule
P1P2
20
P3 P3 P3P4 P1
37 57 77 97 117 121 134 154 162
turnaround time trung bình lớn hơn SRTF, nhưng đáp ứng tốt hơn
24
RR với time quantum = 1
Thời gian turn-around trung bình cao hơn so với SJF nhưng
có thời gian đáp ứng trung bình tốt hơn.
Ưu tiên
CPU-bound process
I/O-bound process thường sử dụng rất ít thời gian của CPU, sau đó
phải blocked đợi I/O
CPU-bound process tận dụng hết quantum time, sau đó quay về
ready queue được xếp trước các process bị blocked
25
Time quantum và context switch
Process time = 10
quantum
context
switch
0 1 2 3 4 5 6 7 8 9 10
0 10
6
0 10
12
6
1
0
1
10