You are on page 1of 4

Shortest job first (SJF)

CÁCH THỨC HOẠT ĐỘNG VÀ ĐẶC ĐIỂM CƠ


BẢN CỦA GIẢI THUẬT

1. ĐẶC ĐIỂM CƠ BẢN CỦA SJF (shortest-job-first)


Các đặc điểm cơ bản của thuật toán SJF (Shortest Job First) bao gồm:
1. Ưu tiên cho các công việc ngắn nhất: SJF ưu tiên thực hiện các công việc có thời
gian thực hiện ngắn nhất trước hết. Điều này giúp tối ưu hóa thời gian chờ đợi của
các công việc.
2. Không đảm bảo tính công bằng (non-preemptive): Trong phiên bản non-
preemptive của SJF, một khi một công việc bắt đầu thực thi, nó sẽ thực thi cho đến
khi hoàn thành mà không bị gián đoạn bởi việc lập lịch công việc ngắn hơn. Điều
này có thể dẫn đến việc các công việc dài hơn phải chờ đợi lâu.
3. Yêu cầu về thông tin thời gian thực hiện: SJF đòi hỏi thông tin về thời gian thực
hiện của các công việc để có thể đưa ra quyết định lập lịch chính xác. Trong một số
trường hợp, thông tin này có thể không có sẵn hoặc không chính xác, gây ra vấn đề
cho việc triển khai thuật toán.
4. Khả năng gây ra hiện tượng starvation: Nếu có một chuỗi các công việc ngắn
luôn xuất hiện liên tục, các công việc dài hơn có thể phải đợi một thời gian lâu mới
được thực hiện, gây ra hiện tượng starvation (đói).
5. Hiệu quả với các công việc ngắn: SJF thường hiệu quả khi hầu hết các công việc
đều có thời gian thực hiện ngắn, vì nó giúp giảm thời gian chờ đợi trung bình và tối
thiểu hóa thời gian hoàn thành của các công việc. Tóm lại, SJF là một thuật toán
lập lịch hiệu quả khi có thông tin chính xác về thời gian thực hiện của các công
việc và khi không gặp phải vấn đề của hiện tượng starvation.
2.NGUYÊN LÍ HOẠT ĐỘNG CỦA SJF (shortest-job-
first)
Giải thuật SJF dựa trên nguyên tắc sắp xếp các tiến trình theo thời gian thực thi
ngắn nhất. Tiến trình có thời gian thực thi ngắn hơn sẽ được ưu tiên thực hiện
trước. Cụ thể, quy trình hoạt động của giải thuật SJF bao gồm các bước sau:

Bước 1: Sắp xếp các tiến trình


Ví dụ về danh sách tiến trình:

Job Arrival Time Burst Time

A 0 6

B 1 8

C 2 7

D 3 3

E 4 10

F 5 5

Như vậy, có thể thấy thứ tự thời gian thực hiện các tiến trình theo thứ tự tăng dần
là: D->F->A->C->B->E

Bước 2: Thực hiện tiến trình


Bắt đầu thực hiện các tiến trình theo thứ tự đã sắp xếp. Các tiến trình được đưa
vào hàng đợi theo arrival time. Ở cùng 1 thời điểm nếu có hơn 1 tiến trình khả
dụng thì tiến trình nào có thời gian thực thi ngắn nhất sẽ được thực hiện trước.
Trong trường hợp có nhiều tiến trình có cùng thời gian thực thi ngắn nhất, ta có thể
sử dụng giải thuật First-Come, First-Served (FCFS) để quyết định thứ tự thực hiện.
Bước 3: Cập nhật thời gian
Khi một tiến trình hoàn thành thực hiện, cập nhật thời gian và tiến trình tiếp theo
có thời gian thực thi ngắn nhất sẽ được chọn để thực hiện tiếp.

Cụ thể được mô tả ở bảng sau:

Tim
Job Note
e

0 A Job A là tiến trình đầu tiên khởi chạy

Job B vào hàng đợi, nhưng do burst time của B là 8 > burst time còn lại của
1 A
A là 5 (A đã chạy đc 1 giây) nên sẽ ưu tiên thực hiện A trước

Job C vào hàng đợi, nhưng do burst time của C là 7 > burst time còn lại của
2 A
A là 4 (A đã chạy đc 2 giây) nên sẽ ưu tiên thực hiện A trước

Job D vào hàng đợi, tuy burst time của D là 3 = burst time còn lại của A là 3
3 A (A đã chạy đc 3 giây) nhưng A đến trước nên sẽ ưu tiên thực hiện A trước
(First come first served)

Job E vào hàng đợi, nhưng do burst time của E là 10 > burst time còn lại
4 A
của A là 2 (A đã chạy đc 4 giây) nên sẽ ưu tiên thực hiện A trước

Job F vào hàng đợi, nhưng do burst time của F là 5 > burst time còn lại của
5 A
A là 1 (A đã chạy đc 5 giây) nên sẽ ưu tiên thực hiện A trước

Job A hoàn thành ở giây thứ 6, Trong số các job đang nằm ở hàng đợi
6 D
(BCDEF) Thì D có burst time ngắn nhất => Thực hiện D

Job D hoàn thành ở giây thứ 9, Trong số các job đang nằm ở hàng đợi
9 F
(BCEF) Thì F có burst time ngắn nhất => Thực hiện F

Job F hoàn thành ở giây thứ 14, Trong số các job đang nằm ở hàng đợi
14 C
(BCE) Thì C có burst time ngắn nhất => Thực hiện C

Job C hoàn thành ở giây thứ 21, Trong số các job đang nằm ở hàng đợi (BE)
21 B
Thì B có burst time ngắn nhất => Thực hiện B
Tim
Job Note
e

Job B hoàn thành ở giây thứ 29, Trong số các job đang nằm ở hàng đợi (E)
29 E
Thì E có burst time ngắn nhất => Thực hiện E

39 Hoàn thành

Giải thuật định thời Shortest Job First (SJF) là một giải thuật quan trọng trong lĩnh
vực quản lý tiến trình và tối ưu hóa thời gian đáp ứng hệ thống. Bằng cách ưu tiên
các tiến trình có thời gian thực thi ngắn nhất, SJF có thể cải thiện hiệu suất và thời
gian đáp ứng của hệ thống. Trên cùng với việc triển khai mã nguồn minh họa, bạn
có thể hiểu rõ hơn về cách SJF hoạt động và cách áp dụng nó trong các ứng dụng
thực tế.

You might also like