You are on page 1of 9

3/1/2015

Nguyên lý hệ điều hành Lập lịch CPU


Nguyễn Hải Châu
Khoa Công nghệ thông tin
Trường Đại học Công nghệ

1 2

Tại sao phải lập lịch CPU? Hàng chờ lập lịch tiến trình
z Số lượng NSD, số lượng tiến trình luôn lớn Hàng chờ sẵn
CPU
sàng thực hiện
hơn số lượng CPU của máy tính rất nhiều
z Tại một thời điểm, chỉ có duy nhất một tiến Vào/ra Hàng chờ vào/ra Yêu cầu vào/ra

trình được thực hiện trên một CPU


Hết thời gian
z Vấn đề: sử dụng CPU
z Nhu cầu sử dụng nhiều hơn tài nguyên (CPU)
đang có Tiến trình con Tạo một tiến
thực hiện trình con
z Do đó cần lập lịch để phân phối thời gian sử dụng
CPU cho các tiến trình của NSD và hệ thống
Ngắt xuất hiện Chờ ngắt
3 4

CPU-burst và IO-burst
z Trong suốt thời gian tồn tại trong hệ thống,
tiến trình được xem như thực hiện hai loại Microsoft
Office
công việc chính: Outlook
CPU-burst Adobe
z Khi tiến trình ở trạng thái running: Sử dụng CPU Photoshop
(thuật ngữ: CPU-burst) CPU-burst

z Khi tiến trình thực hiện các thao tác vào ra: Sử
dụng thiết bị vào/ra (thuật ngữ: I/O burst)

5 6

1
3/1/2015

Hai loại tiến trình chính Bộ lập lịch ra hoạt động khi…
z Căn cứ theo cách sử dụng CPU của tiến 1. Một tiến trình chuyển từ trạng thái running
trình, có hai loại tiến trình: sang waiting
z Tiến trình loại CPU-bound: Tiến trình có một hoặc 2. Một tiến trình chuyển từ trạng thái running
nhiều phiên sử dụng CPU dài sang ready
z Tiến trình loại I/O-bound: Tiến trình có nhiều
3. Một tiến trình chuyển từ trạng thái waiting
phiên sử dụng CPU ngắn (tức là thời gian vào ra
nhiều) sang ready
4. Một tiến trình kết thúc

7 8

Các phương pháp lập lịch Lập lịch non-preemptive


new terminated z Một tiến trình giữ CPU đến khi nó kết thúc
Bị ngắt
(Interrupt) 4 hoặc chuyển sang trạng thái waiting.
admitted
exit
2 z Ví dụ: Microsoft Windows 3.1, Apple
ready running
Macintosh sử dụng lập lịch non-preemptive
3 Lập lịch
z Có thể sử dụng trên nhiều loại phần cứng vì
I/O hoặc sự kiện
Chờ I/O hoặc không đòi hỏi timer
đã hoàn tất
sự kiện
waiting 1

z 1 và 4: Lập lịch non-preemptive


z Ngược lại: Lập lịch preemptive 9 10

Lập lịch preemptive Bộ điều phối (dispatcher)


z Hiệu quả hơn lập lịch non-preemptive z Nhiệm vụ:
z Thuật toán phức tạp hơn non-preemptive và z Chuyển trạng thái (context switch)
sử dụng nhiều tài nguyên CPU hơn z Chuyển về user-mode
z Ví dụ: Microsoft Windows XP, Linux, UNIX sử z Thực hiện tiến trình theo trạng thái đã lưu
dụng lập lịch preemptive z Cần hoạt động hiệu quả (tốc độ nhanh)
z Thời gian cần để bộ điều phối dừng một tiến
trình và thực hiện tiến trình khác gọi là độ trễ
(latency) của bộ điều phối

11 12

2
3/1/2015

Các tiêu chí đánh giá lập lịch Các tiêu chí đánh giá lập lịch
z Khả năng tận dụng CPU (CPU utilization): z Thời gian hoàn thành (turnaround time):
Thể hiện qua tải CPU – là một số từ 0% đến z tturnaround = to-ti với ti là thời điểm tiến trình vào hệ
100%. thống, to là thời điểm tiến trình ra khỏi hệ thống
z Trong thực tế các hệ thống thường có tải từ 40% (kết thúc thực hiện)
(tải thấp) đến 90% (tải cao) z Như vậy tturnaround là tổng: thời gian tải vào bộ nhớ,
thời gian thực hiện, thời gian vào ra, thời gian
z Thông lượng (throughput): Là số lượng các
nằm trong hàng chờ…
tiến trình hoàn thành trong một đơn vị thời
gian

13 14

Các tiêu chí đánh giá lập lịch Các tiêu chí đánh giá lập lịch
z Thời gian chờ (waiting time): Là tổng thời z Thời gian đáp ứng (response time): Là
gian tiến trình phải nằm trong hàng chờ khoảng thời gian từ khi tiến trình nhận được
ready (twaiting) một yêu cầu cho đến khi bắt đầu đáp ứng
z Các thuật toán lập lịch CPU không có ảnh hưởng yêu cầu đó
đến tổng thời gian thực hiện một tiến trình mà chỉ z tres = tr – ts, trong đó tr là thời điểm nhận yêu
có ảnh hưởng đến thời gian chờ của một tiến
cầu, ts là thời điểm bắt đầu đáp ứng yêu cầu
trình trong hàng chờ ready
z Thời gian chờ trung bình (average waiting time):
taveragewaiting=twaiting / n, n là số lượng tiến trình
trong hàng chờ
15 16

Đánh giá các thuật toán lập lịch


Tiêu chí Giá trị thấp Giá trị cao
Các thuật toán lập lịch
Khả năng tận dụng CPU Xấu Tốt
(CPU utilization)
Thông lượng (throughput) Xấu Tốt

Thời gian hoàn thành Tốt Xấu


(turnaround time)
Thời gian chờ (waiting time) Tốt Xấu
-> Thời gian chờ trung bình
Thời gian đáp ứng (response Tốt Xấu 17 18
time)

3
3/1/2015

FCFS (First Come First Served) Ví dụ FCFS 1a


z Tiến trình nào có yêu cầu sử dụng CPU z Giả sử có 3 tiến trình P1, P2, P3 với thời gian
trước sẽ được thực hiện trước thực hiện tương ứng là 24ms, 3ms, 6ms
z Ưu điểm: Thuật toán đơn giản nhất z Giả sử 3 tiến trình xếp hàng theo thứ tự P1, P2,
z Nhược điểm: Hiệu quả của thuật toán phụ P3. Khi đó ta có biểu đồ Gantt như sau:
thuộc vào thứ tự của các tiến trình trong hàng P1 P2 P3
chờ, vì thứ tự này ảnh hưởng rất lớn đến thời 0 24 27 33
gian chờ trung bình (average waiting time) z Thời gian chờ của các tiến trình là: P1 chờ
0ms, P2 chờ 24ms, P3 chờ 27ms
19
z Thời gian chờ trung bình: (0+24+27)/3=17ms 20

Ví dụ FCFS 1b SJF (Shortest Job First)


z Xét ba tiến trình trong ví dụ 1a với thứ tự xếp z Với SJF, tham số lập lịch có thêm độ dài của
hàng P3, P2, P1 phiên sử dụng CPU tiếp theo tnextburst
z Biểu đồ Gantt: z Tiến trình có tnextburst nhỏ nhất sẽ được lập
P3 P2 P1 lịch sử dụng CPU trước
0 6 9 33 z Nếu hai tiến trình có tnextburst bằng nhau thì
z Thời gian chờ của các tiến trình là: P3 chờ FCFS được áp dụng
0ms, P2 chờ 6ms, P3 chờ 9ms
z Thời gian chờ trung bình: (0+6+9)/3=5ms
z Thời gian chờ trung bình thấp hơn thời gian
chờ trung bình trong ví dụ 1a 21 22

SJF (Shortest Job First) Lập lịch có độ ưu tiên


z Với lập lịch dài hạn: Có thể biết tnextburst vì có z Thuật ngữ: Priority scheduling
tham số chỉ ra thời gian chạy của tiến trình khi z Mỗi tiến trình được gắn một tham số lập lịch gọi là độ
đưa tiến trình vào hệ thống (job submit) ưu tiên p, với p là một số thực
z Khó khăn: Chỉ có thể phỏng đoán được tnextburrt z Tiến trình có độ ưu tiên cao nhất được sử dụng CPU
với lập lịch ngắn hạn z Qui ước trong môn học này:
z Đọc ở nhà: Dự đoán tnextburst bằng công thức z Tiến trình P1 và P2 có độ ưu tiên p1, p2 tương ứng
trung bình mũ (exponential average) trang z p1>p2 có nghĩa là tiến trình P1 có độ ưu tiên thấp hơn P2
160-162 trong giáo trình z SJF là trường hợp đặc biệt của lập lịch có ưu tiên với
z SJF không tối ưu được với lập lịch ngắn hạn ưu tiên của các tiến trình là nghịch đảo độ dài phiên
sử dụng
z SJF thường được áp dụng cho lập lịch dài hạn
23 24

4
3/1/2015

Lập lịch có độ ưu tiên Lập lịch có độ ưu tiên


z Hai cách xác định độ ưu tiên: z Để tránh hiện tượng chờ không xác định, có
z Độ ưu tiên trong: Được tính toán dựa trên các thêm tham số tuổi để xác định thời gian tiến
tham số định lượng của tiến trình như giới hạn về trình thời gian nằm trong hàng chờ
thời gian, bộ nhớ, số file đang mở, thời gian sử
dụng CPU z Tham số tuổi được sử dụng để làm tăng độ
z Độ ưu tiên ngoài: Dựa vào các yếu tố như mức ưu tiên của tiến trình
độ quan trọng, chi phí thuê máy tính…
z Ví dụ thực tế: Khi bảo dưỡng máy tính IBM
z Chờ không xác định: Một tiến trình có độ ưu 7094 của MIT năm 1973, người ta thấy một
tiên thấp có thể nằm trong hàng chờ trong
tiến trình nằm trong hàng chờ từ năm 1967
một khoảng thời gian dài nếu trong hàng chờ
luôn có các tiến trình có độ ưu tiên cao hơn nhưng vẫn chưa được thực hiện
25 26

Ví dụ lập lịch có độ ưu tiên Round-robin (RR)


z Xét 5 tiến trình như trong Tiến Thời gian Độ ưu z Còn gọi là lập lịch quay vòng
bảng với thứ tự trong hàng trình thực hiện tiên
chờ là P1, P2, P3, P4, P5 (ms) z Được thiết kế để áp dụng cho các hệ phân
z Sử dụng thuật toán lập lịch P1 10 3
chia thời gian (time-sharing)
có ưu tiên, ta có thứ tự z RR hoạt động theo chế độ preemptive
thực hiện của các tiến trình P2 1 1
như sau biểu đồ dưới P3 2 4 z Tham số lượng tử thời gian (time quantum)
z Thời gian chờ trung bình là P4 1 5 tquantum: Mỗi tiến trình được sử dụng CPU
(1+6+16+18)/5=8.2ms trong nhiều nhất bằng tquantum, sau đó đến
P5 5 2
lượt tiến trình khác
P2(1) P5(2) P1(3) P3(4) P4(5)
27 28
0 1 6 16 18 19

Round-robin (RR) Ví dụ RR
z Hiệu quả của RR phụ thuộc độ lớn của z Giả sử có 3 tiến trình P1, P2, P3 với thời gian thực
tquantum hiện tương ứng là 24ms, 3ms, 6ms, thứ tự trong
z Nếu tquantum nhỏ thì hiệu quả của RR giảm vì bộ hàng chờ P1, P2, P3 ,vào hàng chờ cùng thời điểm 0
điều phối phải thực hiện nhiều thao tác chuyển z Giả sử tquantum=4ms
trạng thái, lãng phí thời gian CPU
z RR lập lịch các tiến trình như sau:
z Nếu tquantum lớn thì số thao tác chuyển trạng thái
giảm đi P1 P2 P3 P1 P3 P1 P1 P1 P1

z Nếu tquantum rất nhỏ (ví dụ 1ms) thì RR được 0 4 7 11 15 17 21 25 29 33

gọi là processor sharing z Thời gian chờ z Thời gian chờ trung bình:
z Nếu tquantum = ∞ thì RR trở thành FCFS z P1: 0+(11-4)+(17-15)=9ms (9+4+11)/3=8ms
z P2: 4ms
29 30
z P3: 7+(15-11)=11ms

5
3/1/2015

Lập lịch với hàng chờ đa mức Lập lịch với hàng chờ đa mức
z Thuật ngữ: Multilevel queue scheduling z Thuật toán lập lịch với hàng chờ đa mức chia
z Được sử dụng khi ta có thể chia các tiến hàng chờ ready thành nhiều hàng chờ con
trình thành nhiều lớp khác nhau để lập lịch khác nhau, mỗi hàng chờ con được áp dụng
theo các tiêu chí khác nhau, ví dụ: một loại thuật toán khác nhau, ví dụ:
z Lớp các tiến trình có tương tác (interactive hoặc z Hàng chờ các tiến trình background: FCFS
foreground process) cần có độ ưu tiên cao hơn z Hàng chờ các tiến trình có tương tác:RR
z Lớp các tiến trình chạy nền (background) thường z Các tiến trình được phân lớp dựa vào đặc
không có tương tác với NSD: Độ ưu tiên thấp hơn tính như bộ nhớ, độ ưu tiên, …
z Cần có thuật toán lập lịch cho các hàng chờ
31 con, ví dụ: preemptive có độ ưu tiên cố định 32

Lập lịch với hàng chờ đa mức


Ví dụ hàng chờ đa mức có phản hồi
z Ví dụ các hàng chờ đa mức có độ ưu tiên z Thuật ngữ: Multilevel feedback-queue
giảm dần: scheduling
z Hàng chờ các tiến trình hệ thống z Thuật toán lập lịch kiểu này nhằm khắc phục
z Hàng chờ các tiến trình có tương tác nhược điểm không mềm dẻo của lập lịch với
z Hàng chờ các tiến trình là editor hàng chờ đa mức
z Hàng chờ các tiến trình hoạt động theo lô z Ý tưởng chính: Cho phép tiến trình chuyển từ
z Hàng chờ các tiến trình thực tập của sinh viên hàng chờ này sang hàng chờ khác, trong khi
lập lịch với hàng chờ đa mức không cho phép
điều này
33 34

Lập lịch với hàng chờ đa mức Các tham số của bộ lập lịch
có phản hồi hàng chờ đa mức có phản hồi
z Cách thực hiện:
z Số lượng các hàng chờ
z Độ dài phiên sử dụng CPU và thời gian đã nằm
trong hàng chờ là tiêu chuẩn chuyển tiến trình z Thuật toán lập lịch cho mỗi hàng chờ
giữa các hàng chờ z Phương pháp tăng độ ưu tiên cho một tiến trình
z Tiến trình chiếm nhiều thời gian CPU sẽ bị z Phương pháp giảm độ ưu tiên cho một tiến trình
chuyển xuống hàng chờ có độ ưu tiên thấp
z Phương pháp xác định hàng đợi nào để đưa
z Tiến trình nằm lâu trong hàng chờ sẽ được
chuyển lên hàng chờ có độ ưu tiên cao hơn
một tiến trình vào

35 36

6
3/1/2015

Các thuật toán lập lịch khác


Lập lịch tiến trình
Sinh viên tìm hiểu trong giáo trình:
z
z Lập lịch đa xử lý
trong Linux
z Lập lịch thời gian thực

37 38

Các mục tiêu của lập lịch tiến


trình trong Linux Đặc trưng của lập lịch Linux
z Thời gian đáp ứng nhanh z Time-sharing
z Thông lượng tốt với các tiến trình chạy nền z Dựa vào ngắt thời gian của phần cứng (timer
z Không bị hiện tượng starvation interrupt)
z Có độ ưu tiên giữa các tiến trình z Xếp hạng các tiến trình dựa vào độ ưu tiên
z Có tính đến CPU-bound và IO-bound
z Chia tiến trình thành 3 lớp:
z Tiến trình có tương tác
z Xử lý theo lô
z Thời gian thực
39 40

Tiến trình tương tác Tiến trình xử lý theo lô


z Thường có giao tiếp với bàn phím, chuột z Không có tương tác với người sử dụng
z Ví dụ: Soạn thảo văn bản, shell, ứng dụng đồ z Thường được gán độ ưu tiên thấp
họa z Ví dụ: Chương trình dịch, các chương trình
z Các tiến trình được wake-up khi có dữ liệu tính toán khoa học
vào từ bàn phím chuột
z Để NSD thấy được “thời gian đáp ứng
nhanh”, cần wake-up trong 50ms-150ms

41 42

7
3/1/2015

Tiến trình thời gian thực Epoch và quantum


z Cần được ưu tiên cao z Thời gian của CPU được chia thành các epoch
z Ví dụ: các ứng dụng video/nhạc, điều khiển z Khi epoch bắt đầu, time quantum (lượng tử thời
gian) của mỗi tiến trình được tính toán lại
thiết bị ngoại vi (như robot, dây chuyền sản
z Một epoch kết thúc khi tất cả các tiến trình có thể
xuất), thu dữ liệu từ các bộ cảm biến v.v..
chạy đã được sử dụng CPU
z Một tiến trình có thể sử dụng CPU nhiều lần trong
một epoch nếu lượng tử thời gian của nó chưa hết
(chẳng hạn các tiến trình IO-bound)
z Mỗi tiến trình có base quantum được tính bằng
(20*Hz/100) = 20 ticks = 210 ms (Hz của PC = 100)
43 44

Hiệu năng của lập lịch Linux


Các phương pháp đánh
z Thuật toán lập lịch của Linux không mở rộng
tốt (does not scale well) giá thuật toán lập lịch
z Lượng tử thời gian định sẵn (210ms) là quá
lớn cho các hệ thống tải cao
z Lập lịch chưa tốt cho các tiến trình IO-bound
z Hỗ trợ kém cho các ứng dụng thời gian thực

45 46

Mô hình xác định Mô hình hàng chờ


z Thuật ngữ: Deterministic modeling z Thuật ngữ: Queueing model
z Dựa vào các trường hợp cụ thể (chẳng hạn z Dựa trên lý thuyết xác suất, quá trình ngẫu nhiên. Tài
liệu tham khảo:
các ví dụ đã nói trong bài giảng này) để rút ra
z Leonard Kleinrock, Queueing Systems: Volume I – Theory
các kết luận đánh giá (Wiley Interscience, New York, 1975)
z Ưu điểm: Nhanh và đơn giản z Leonard Kleinrock, Queueing Systems: Volume II –
Computer Applications (Wiley Interscience, New York, 1976)
z Nhược điểm: Không rút ra được kết luận
z Ưu điểm: So sánh được các thuật toán lập lịch trong
đánh giá cho trường hợp tổng quát một số trường hợp
z Hạn chế: Phức tạp về mặt toán học, lớp các thuật
toán phân tích so sánh được còn hạn chế
47 48

8
3/1/2015

Mô phỏng Cài đặt thử trong thực tế


z Thuật ngữ: Simulation z Mô phỏng có thể xem như “qui nạp không
z Thực hiện các tình huống giả định trên máy hoàn toàn”
tính để đánh giá hiệu quả của các thuật toán z Có thể xây dựng hệ thống thử trong thực tế
lập lịch, kiểm nghiệm các kết quả lý thuyết z Ưu điểm: Đánh giá được hiệu quả thực sự
khi sử dụng
z Mô phỏng thường tốn thời gian CPU và
không gian lưu trữ z Nhược điểm:
z Chi phí cao
z Được sử dụng nhiều trong công nghiệp z Hành vi của người sử dụng có thể thay đổi theo
z Ví dụ các hệ mô phỏng mạng (có module môi trường hệ thống
hàng chờ): OPNET, NS-2, Qualnet
49 50

Tóm tắt Bài tập


z Khái niệm lập lịch, các tiêu chí đánh giá thuật z Thực hiện ví dụ RR với lượng tử thời gian
toán lập lịch 2ms, 6ms và 6ms.
z Các phương thức hoạt động preemptive và z Tính thời gian chờ trung bình của các tiến trình
non-preemptive trong các trường hợp này.
z Các thuật toán lập lịch FCFS, SJF, ưu tiên, z Khi lượng tử thời gian thay đổi, thời gian chờ
RR trung bình thay đổi thế nào?
z Lập lịch với hàng chờ đa mức, có và không z Tính thời gian hoàn thành (turnaround time) của
có phản hồi tất cả các tiến trình trong các trường hợp trên
z Các phương pháp đánh giá thuật toán lập z Nhận xét về sự thay đổi thời gian hoàn thành của
lịch các tiến trình khi lượng tử thời gian thay đổi
51 52

Bài tập
z Tìm hai ví dụ trong thực tế về hàng chờ đa
mức và hàng chờ đa mức có phản hồi và giải
thích các ví dụ này.

53

You might also like