You are on page 1of 3

Chương này giới thiệu về hai dạng chính của thuật toán SJF (Shortest Job First) trong

lập lịch tiến trình:


Non-preemptive SJF và Preemptive SJF. SJF là một phương pháp quản lý tiến trình trong lập lịch, tập
trung vào việc ưu tiên xử lý các tiến trình có thời gian thực thi ngắn nhất. Để áp dụng SJF một cách hiệu
quả, việc lựa chọn đúng dạng SJF phù hợp với yêu cầu và tính chất của công việc là rất quan trọng.
Non-Preemptive SJF (SJF không ưu tiên)
Trong thuật toán SJF không ưu tiên, tiến trình có thời gian thực thi ngắn nhất được ưu tiên thực hiện
trước. Nếu có nhiều tiến trình cùng thời gian thực thi ngắn nhất, tiến trình nào được đưa vào hệ thống
trước sẽ được ưu tiên. Điều này đảm bảo rằng các tiến trình ngắn sẽ hoàn thành sớm hơn và tăng hiệu suất
tổng thể của hệ thống.
Ví dụ
Process Burst Time (bT) Arrival Time (aT)
P1 6 0
P2 2 3
P3 13 5

P1 P2 P3
0 6 8
21
Thực hiện: (đưa vô file báo cáo, k cần đưa lên slide)
Ở thời gian t=0, P1 đến và bắt đầu thực thi
t=3, P2 đến, P1 đã thực thi được 3 đơn vị thời gian, vì đây là SJF không ưu tiên nên P1 tiếp tục thực hiện,
P2 vào queue
t=5, P3 đến, P1 thực thi được 5 đơn vị thời gian, P3 vào hàng đợi sau P2
t=6, P1 hoàn thành, queue hiện tại có P2 và P3 với aT lần lược là 3 và 5, thực thi P2 vì đây là tiến trình
đến trước
t=8, P2 hoàn thành, thực thi P3
t=21, P3 hoàn thành
Với công thức:

 Turn Around time = Exit time – Arrival time


 Waiting time = Turn Around time – Burst time
Process Exit Time Turn Around Time Waiting Time
P1 6 6 0
P2 8 5 3
P3 21 16 3

Average Waiting time = (0+3 +3)/3 = 2


Average Turn around time = (6+5+16)/3 = 9
Preemptive SJF (SJF ưu tiên)
Preemptive SJF (Shortest Job First) là thuật toán trong đó tiến trình có thời gian thực thi ngắn nhất sẽ
được ưu tiên xử lý trước. Nếu tiến trình mới có thời gian thực thi ngắn hơn tiến trình đang thực thi, hệ
thống sẽ chuyển sang xử lý tiến trình mới và dừng tiến trình hiện tại. SRTF (Shortest Remaining Time
First) là một dạng của Preemptive SJF, sắp xếp tiến trình dựa trên thời gian thực hiện còn lại ngắn nhất.
Trái với SJF, SRTF theo dõi thời gian xử lý còn lại của mỗi tiến trình và ưu tiên tiến trình có thời gian
thực thi còn lại ngắn nhất. Khi có tiến trình mới hoặc tiến trình hiện tại bị gián đoạn, SRTF so sánh thời
gian xử lý còn lại để quyết định tiến trình nào được ưu tiên.
Ví dụ:

Process Burst Time Arrival Time


P1 8 0
P2 4 1
P3 2 2
P4 1 3

P1 P2 P3 P4 P3 P2 P1
0 1 2 3 4 5
8 15

Thực hiện:
Ở thời điểm t=0, chỉ có duy nhất P1, thực hiện P1
t=1, P2 đến , P1 thực hiện được 1 đơn vị thời gian, còn lại 7 đơn vị thời gian, vì đây là SRTF nên ta sẽ so
sánh thời gian còn lại của P1 với Burst Time của các tiến trình khác trong hàng đợi, ở đây là P2 với bT =
4, ngắt P1 thực hiện P2
t=2, P3 đến, P2 thực hiện được 1 đơn vị thời gian, còn lại 3, thực hiện lại các bước như trên, ngắt P2, thực
hiện P3
t=3, P4 đến, P3 thực hiện được 1, còn 1, tiếp tục so sánh thời gian còn lại của P3 và các tiến trình trong
hàng đợi (P1,P2,P4), ngắt P3, thực hiện P4 ( vì P4 có bT thấp nhất)
t=4, P4 hoàn thành, không có tiến trình mới đến, xét các tiến trình trong hàng đợi, thực hiện tiến trình có
bT còn lại nhỏ nhất (P3)
t=5, P3 hoàn thành, thực hiện lại các bươc trên, đưa P2 (còn 3) vào thực hiện
t=8, P2 hoàn thành, thực hiện tiến trình cuối cùng
t=15, P1 hoàn thành, kết thúc
Thuật toán lập lịch Preemptive Shortest Job First (SJF) có thể tối ưu hóa thời gian chờ và thời gian hoàn
thành của các tiến trình một cách cụ thể hơn so với Non-Preemptive. Bằng cách theo dõi và ưu tiên tiến
trình có thời gian xử lý còn lại ngắn nhất, nó đảm bảo rằng các tiến trình ngắn với thời gian xử lý thấp sẽ
được hoàn thành trước, tránh việc chờ đợi không cần thiết cho các tiến trình dài hơn. Tuy nhiên, điểm yếu
chính của thuật toán Preemptive là tình trạng "đói tiến trình". "Đói tiến trình" xảy ra khi một tiến trình
không thể thực thi vì các tiến trình khác luôn có thời gian còn lại ít hơn. Trong trường hợp này, các tiến
trình dài có thể bị trì hoãn vô thời hạn nếu tiến trình ngắn liên tục được thêm vào.

You might also like