You are on page 1of 13

Các thuật toán sử dụng trong lập

lịch CPU
Các khái niệm cơ bản :
txh : thời điểm xuất hiện 1 tiến trình (or 1 đoạn tiến
trình).
tbđ : thời điểm bắt đầu thực hiện 1 tiến trình or 1 đoạn
tiến trình.
tkt : thời điểm kết thúc xử lý 1 tiến trình or 1 đoạn tiến
trình.
Chú ý : 1 tiến trình ban đầu có thể
được xử lý thành nhiều đoạn tiến trình
khác nhau.
Ví dụ : tiến trình Pi khi thi hành thì
CPU thi hành thành 3 đoạn tiến trình
là Pi1, Pi2, Pi3. ta có các thông số sau :
Đoạn Pi1 có txh1, tbđi1, tkti1
Đoạn Pi2 có txh2, tbđi1, tkti1 thời
điểm xuất hiện của đoạn này là txh2 =
tkti1
Đoạn Pi3 có txh3, tbđi3, tkti3thời điểm
xuất hiện của đoạn này là txh3 = tkti2
tbđ - txh : Thời gian chờ của 1 tiến trình
or 1 đoạn tiến trình.
tkt - txh : Thời gian xử lý của 1 tiến
trình or 1 đoạn tiến trình.

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


1. FCFS
Tiến trình nào xuất hiện trước
thì được thi hành trước và thi
hành xong, các tiến trình được
CPU thi hành lần lượt theo thứ
tự cho trước.
Chú ý : Nếu như tất cả các tiến
trình đều có thời điểm xuất hiện
trùng nhau thì phải chỉ rõ thứ tự
thi hành. Trong trường hợp này
thì:
a. Nếu tiến trình được thi hành
theo thứ tự có CPUb tăng dần thì
tốc độ làm việc là nhanh nhất
( tchờ và txử lý nhỏ nhất )
a. Nếu tiến trình được thi hành
theo thứ tự có CPUb giảm dần
thì tốc độ làm việc là chậm nhất
( tchờ và txử lý lớn nhất )
2. SJF
- Thời điểm xuất hiện của tất cả
các tiến trình trong hệ phải khác
nhau.
- Tiến trình nào xuất hiện đầu
tiên trong hệ thì được xử lý
trước và xử lý xong, những tiến
trình còn lại tiến trình nào xuất
hiện mà có CPUb nhỏ nhất thì
được thi hành và xử lý xong,
nếu bằng nhau thì được thực
hiện theo FCFS.
3.SRTF
Đây là SJF đặc biệt – thời
gian xử lý còn lại của tiến
trình nhỏ nhất thì được thi hành
trước.
4.RR
Khi thi hành các tiến trình thì
hđh sẽ cung cấp 1 lượng tử thời
gian : Time Quantum (qq)
Trong thuật toán này, hệ thống quy định một lượng tử thời gian
(time quantum) khoảng từ 10 – 100 mili giây.
Mỗi tiến trình trong hàng đợi lần lượt được phân phối một
lượng tử thời gian để thực hiện. Sau khoảng thời gian đó, nếu tiến
trình chưa kết thúc hoặc không rơi vào trạng thái đợi thì nó được
chuyển về cuối hàng đợi.
Hàng đợi các tiến trình được tổ chức theo kiểu vòng tròn
(FIFO) và các tiến trình luôn luôn đảm bảo được phục vụ. Khi có
tiến trình mới phát sinh, nó sẽ được đưa vào hàng đợi vòng tròn
và được đặt ở vị trí cuối hàng đợi. Các tiến trình dù ngắn hay dài
đều có độ ưu tiên phục vụ như nhau.
Trên thực tế, để đảm bảo độ ưu tiên cho các tiến trình dài, hệ
thống sẽ phân chia các tiến trình thành m lớp. Số lần được phục
vụ và thời gian một lần phục vụ tiến trình tại mỗi lớp khác nhau
(giả sử ở lớp thứ i, tiến trình được phục vụ ki lần và mỗi lần với
thời gian qi)
Nếu sau khoảng thời gian đã được phân phối mà tiến trình chưa
kết thúc hoặc không bị ngắt thì nó được chuyển sang lớp thứ i + 1
(với ki + 1 và qi + 1 lớn hơn). Lượng tử thời gian sẽ tăng dần cho đến
khi tiến trình rơi vào lớp ngoài cùng (lớp m). Ở đó nó sẽ được
phục vụ với lượng tử qm không đổi. Như vậy thứ tự ưu tiên của
các tiến trình sẽ tăng dần theo thời gian xếp hàng đợi.
Pi, Pj : sau khi cấp 1 q cho P i sau khi thi hành xong 1 q mà t kti
trùng với txhj thì Pi được cấp them 1 q.
Pi, Pj, Pk : tkti trùng với txhk, tkti > txhj thì sau khi Pi thực hiện xong 1
q thứ tự được CPU thi hành sẽ là : Pj, Pk, Pi

1. FCFS
ví dụ : cho 1 hệ tt như bảng sau:
Process tx/h CPUb
P0 7 9
P1 6 5
P2 2 8
P3 4 6
P4 0 2
P5 3 1

Sử dụng lập lịch FCFS để :


a. Vẽ giản đồ gantt cho hệ tt trên
b. Tính thời gian chờ đợi trung bình của hệ tt
c. Tính thời gian xử lý trung bình của hệ tt
Giải :
Process tx/h CPUb
P4 0 2
P2 2 8
P5 3 1
P3 4 6
P1 6 5
P0 7 9

a. Giản đồ gantt

P4 P2 P5 P3 P1 P0
0 2 10 11 17 22 31
b. Tính thời gian chờ đợi trung bình của hệ tt
- Thời gian đợi của P0 là : 22 – 7 = 15
- Thời gian đợi của P1 là : 17 – 6 = 11
- Thời gian đợi của P2 là : 2 – 2 = 0
- Thời gian đợi của P3 là : 11 – 4 = 7
- Thời gian đợi của P4 là : 0 – 0 = 0
- Thời gian đợi của P5 là : 10 – 3 = 7
Tổng thời gian đợi của hệ tt là : 15 + 11+ 0 + 7 +0 + 7 = 40
Thời gian chờ đợi trung bình của hệ tt là : 40/6 = 6,67
c. Tính thời gian xử lý trung bình của hệ tt
- Thời gian xử lý của P0 là : 31 – 7 = 24
- Thời gian xử lý của P1 là : 22 – 6 = 16
- Thời gian xử lý của P2 là : 10 – 2 = 8
- Thời gian xử lý của P3 là : 17 – 4 = 13
- Thời gian xử lý của P4 là : 2 – 0 = 2
- Thời gian xử lý của P5 là : 11 – 3 = 8
Tổng thời gian xử lý của hệ tt là : 24 + 16 + 8 + 13 + 2 + 8 = 71
Thời gian xử lý trung bình của hệ tt là : 71/6 = 11,833

Thời điểm xuất hiện của 6 tiến trình xét bằng 0


1. Xử lý chậm nhất
P0 P2 P3 P1 P4 P5
0 9 17 23 28 30 31
2. Xử lý nhanh nhất

P5 P4 P1 P3 P2 P0
0 1 3 8 14 22 31
2. SJF ( Shortest Job First)
- tx.h của các tiến trình trong hệ tt đã cho là khác nhau.
- tt nào xuất hiện đầu tiên trong hệ thì được xử lý trước
và xử lý xong, các tiến trình còn lại xuất hiện trong hệ thì
tiến trình nào có giờ CPU nhỏ nhất thì được xử lý trước và
xử lý xong, nếu bằng nhau thì thực hiện theo FCFS.

Ví dụ: cho 1 hệ tt như bảng sau


Process txh CPUb
P0 0,0 7
P1 2,0 5
P2 3,0 4
P3 4,0 4
P4 5,0 2
P5 8,0 1
Hãy sử dụng lập lịch SJF để :
a. Vẽ giản đồ gantt cho hệ tt trên
b. Tính thời gian chờ đợi trung bình của hệ tt
c. Tính thời gian xử lý trung bình của hệ tt
Giải :
a. Giản đồ gantt

P0 P4 P5 P2 P3 P1
0 7 9 10 14 18 23
b. Tính thời gian chờ đợi trung bình của hệ tt
- Thời gian đợi của P0 là : 0 – 0 = 0
- Thời gian đợi của P1 là : 18 – 2 = 16
- Thời gian đợi của P2 là : 10 – 3 = 7
- Thời gian đợi của P3 là : 14 – 4 = 10
- Thời gian đợi của P4 là : 7 – 5 = 2
- Thời gian đợi của P5 là : 9 – 8 = 1
Tổng thời gian đợi của hệ tt là : 0 + 16 + 7 + 10 + 2 + 1 = 36
Thời gian chờ đợi trung bình của hệ tt là : 36/6 = 6
c. Tính thời gian xử lý trung bình của hệ tt
- Thời gian xử lý của P0 là : 7 – 0 = 7
- Thời gian xử lý của P1 là : 23 – 2 = 21
- Thời gian xử lý của P2 là : 14 – 3 = 11
- Thời gian xử lý của P3 là : 18 – 4 = 14
- Thời gian xử lý của P4 là : 14 – 5 = 9
- Thời gian xử lý của P5 là : 10 – 8 = 2
Tổng thời gian xử lý của hệ tt là : 7 + 21 + 11 + 14 + 9 + 2 = 64
Thời gian xử lý trung bình của hệ tt là 64/6 = 10,67
3. SRTF ( Shortest Remaining Time First)
Là lập lịch SJF mở rộng.
Thời gian xử lý còn lại của các tiến trình nhỏ nhất
thì được xử lý trước, nếu bằng nhau thì thực hiện theo
FCFS.
Ví dụ: cho 1 hệ tt như bảng sau
Process txuÊt hiÖn CPUthùc hiÖn
P0 0,0 5
P1 3,0 10
P2 2,0 6
P3 5,0 7
P4 6,0 3
P5 7,0 1
Hãy sử dụng lập lịch SRTF để :
a. Vẽ giản đồ gantt cho hệ tt trên
b. Tính thời gian chờ đợi trung bình của hệ tt
c. Tính thời gian xử lý trung bình của hệ tt
Giải :
a. Giản đồ gantt
P0 P2 P4 P5 P4 P2 P3 P1
0 5 6 7 8 10 15 22 32
P
b. Tính thời gian chờ đợi trung bình của hệ tt
- Thời gian đợi của P0 là : 0 – 0 = 0
- Thời gian đợi của P1 là : 22 – 3 = 0
- Thời gian đợi của P2 là : 5 + (7 – 6) + (8 – 7) + (10 – 8) – 3 = 6
- Thời gian đợi của P3 là : 15 – 5 = 10
- Thời gian đợi của P4 là : 6 + (8 – 7) – 6 = 1
- Thời gian đợi của P5 là : 7 – 7 = 0
Tổng thời gian đợi của hệ tt là : 0 + 0 + 6 + 10 + 1 + 0 = 17
Thời gian chờ đợi trung bình của hệ tt là : 17/6 = 2,83
c. Tính thời gian xử lý trung bình của hệ tt
- Thời gian xử lý của P0 là : 5 – 0 = 5
- Thời gian xử lý của P1 là : 32 – 3 = 29
- Thời gian xử lý của P2 là : (6 – 0) + (15 – 6) – 3 = 12
- Thời gian xử lý của P3 là : 22 – 5 = 17
- Thời gian xử lý của P4 là : (7 – 0) + (10 – 7) – 6 = 4
- Thời gian xử lý của P5 là : 8 – 7 = 1
Tổng thời gian xử lý của hệ tt là : 5 + 29 + 12 + 17 + 4 + 1 = 68
Thời gian xử lý trung bình của hệ tt là : 68/6 = 11,33
4. Lập lịch Round Robin (RR)
Nguyên lý : FIFO
Các tt trong hệ được xử lý theo một lượng tử thời gian cho
trước ( Time Quantum - qq), khi xử lý hết 1 qq thì tiến trình sẽ bị
tạm dừng, phần còn lại của tiến trình đó sẽ được đưa vào cuối
hàng đợi. CPU sẽ thực hiện xử lý tiến trình tiếp theo, hết 1 vòng
nếu tiến trình nào còn giờ CPU thì tiếp tục được thực hiện, việc
thi hành các tt sẽ lặp đi lặp lại cho đến khi các tt hết giờ CPU thì
dừng.

Ví dụ: cho 1 hệ tt như bảng sau


Process tx.h CPUb
P0 6 9
P1 7 5
P2 5 1
P3 0 4
P4 2 7
q=3
a. Giản đồ Gantt
Process tx.h CPUb
P3 0 4
P4 2 7
P2 5 1
P0 6 9
P1 7 5

q=3
P3 P4 P3 P2 P0 P4 P1 P0 P4 P1 P0
0 3 6 7 8 11 14 17 20 21 23 26
b. Tính thời gian chờ đợi trung bình của hệ tt
- Thời gian đợi của P0 là :
- Thời gian đợi của P1 là :
- Thời gian đợi của P2 là :
- Thời gian đợi của P3 là :
- Thời gian đợi của P4 là :
- Thời gian đợi của P5 là :
Tổng thời gian đợi của hệ tt là :
Thời gian chờ đợi trung bình của hệ tt là :
c. Tính thời gian xử lý trung bình của hệ tt
- Thời gian xử lý của P0 là :
- Thời gian xử lý của P1 là :
- Thời gian xử lý của P2 là :
- Thời gian xử lý của P3 là :
- Thời gian xử lý của P4 là :
- Thời gian xử lý của P5 là :
Tổng thời gian xử lý của hệ tt là :
Thời gian xử lý trung bình của hệ tt là :

Nếu
CPUb của Pi ≤ q thì : Pi được
xử lý xong.
CPUb của Pi > q thì : sau khi Pi
được xử lý 1 q, phần còn lại của
Pi được đưa vào hàng đợi.

You might also like