CHƯƠNG 2 : QUẢN LÝ TIẾN TRÌNH
2.3. ĐIỀU ĐỘ TIẾN TRÌNH
2.3.4. Các thuật toán điều độ
Nhiều thuật tốn điều độ tiến trình được đề xuất và sử dụng trên thực tế. Sau đây là
những thuật toán tiêu biểu hoặc thường gặp nhất.
a. Thuật toán đến trước phục vụtrước
Đến trước phục vụtrước (First Come First Served – viết tắt là FCFS) là phương pháp điều độ đơn giản nhất, cả về nguyên tắc và cách thực hiện. Tiến trình yêu cầu CPU trước sẽ được cấp CPU trước.
Hệ điều hành xếp tiến trình sẵn sàng vào hàng đợi FIFO. Tiến trình mới được xếp vào cuối hàng đợi, khi CPU được giải phóng, hệđiều hành sẽ lấy tiến trình từđầu hàng đợi và cấp CPU cho tiến trình đó thực hiện.
Mặc dù đơn giản và đảm bảo tính cơng bằng, FCFS có thời gian chờđợi trung bình của tiến trình lớn do phải chờđợi tiến trình có chu kỳ CPU dài trong trường hợp những tiến trình
như vậy nằm ởđầu hàng đợi. Để minh họa, ta xét ví dụ: cho 3 tiến trình với thứ tự xuất hiện
và độ dài chu kỳCPU như sau:
Tiến trình Độ dài chu kỳ CPU
P1 10
P2 4
P3 2
Kết quảđiều độ theo thuật tốn FCFS thể hiện trên hình sau:
10 14
10 4 2
P1 P2 P3
Thời gian chờđợi của P1, P2, P3 lần lượt là 0, 10, và 14. Thời gian chờđợi trung bình = (0 + 10 + 14)/3 = 8.
Có thể thấy thời gian chờđợi trung bình như vậy là rất lớn, chẳng hạn so với trường hợp tiến trình được cấp CPU theo thứ tự P3, P2, P1. Khi đó thời gian chờ đợi trung bình giảm xuống chỉ còn (6 + 2 + 0)/3 = 2,67.
Cần lưu ý rằng việc tăng thời gian chờđợi CPU của tiến trình ảnh hưởng rất lớn tới hiệu suất chung của hệ thống do nhiều tiến trình phải dồn lại chờ một tiến trình trong khoảng thời gian q lâu, dẫn tới tình trạng khơng tiến trình nào thực hiện được cơng việc của mình, kể cả
vào ra. Kết quả là toàn hệ thống phải dừng lại chờ giải phóng CPU.
Thuật tốn FCFS thơng thường là thuật tốn điều độ khơng phân phối lại. Sau khi tiến
trình được cấp CPU, tiến trình đó sẽ sử dụng CPU cho đến khi kết thúc hoặc phải dừng lại để
chờ kết quảvào ra. Để có thể sử dụng được trong những hệ thống chia sẻ thời gian, thuật toán
đến trước phục vụtrước được cải tiến đểthêm cơ chế phân phối lại. Ta sẽ xem xét thuật toán
điều độ như vậy trong một phần sau.
b. Điều độ quay vòng
Điều độ quay vòng (round robin - RR) là phiên bản sửa đổi của FCFS được dùng cho các hệ chia sẻ thời gian. Điều độquay vòng tương tựFCFS nhưng có thểcơ chế phân phối lại bằng cách sử dụng ngắt của đồng hồ. Hệ thống định nghĩa những khoảng thời gian nhỏ gọi là
lượng tử thời gian (time quantum) hay lát cắt thời gian (time slice) có độ dài từ vài mili giây tới vài trăm mili giây tùy vào cấu hình cụ thể. Tiến trình sẽ lần lượt được cấp CPU trong những khoảng thời gian như vậy trước khi bị ngắt và CPU được cấp cho tiến trình khác.
Giống như FCFS, tiến trình sẵn sàng được xếp vào hàng đợi sao cho tiến trình đến sau
được thêm vào cuối hàng. Khi CPU được giải phóng, hệđiều hành đặt thời gian của đồng hồ
bằng độdài lượng tử, lấy một tiến trình ởđầu hàng đợi và cấp CPU cho tiến trình.
Sau khi được cấp CPU, tiến trình chuyển sang trạng thái chạy. Nếu tiến trình kết thúc chu kỳ sử dụng CPU trước khi hết thời gian lượng tử, tiến trình sẽ giải phóng CPU và trả lại quyền điều khiển cho hệđiều hành. Trong trường hợp ngược lại, khi hết độdài lượng tử, đồng hồ sẽ sinh ngắt. Tiến trình đang thực hiện phải dừng lại và quyền điều khiển chuyển cho hàm xử lý ngắt của hệđiều hành. Hệđiều hành thực hiện việc chuyển đổi ngữ cảnh và chuyển tiến trình về cuối hàng đợi sau đó chọn một tiến trình ởđầu và lặp lại quá trình trên.
Điều độ quay vòng cho phép cải thiện thời gian đáp ứng của tiến trình so với FCFS
nhưng vẫn có thời gian chờ đợi trung bình tương đối dài. Sau đây là minh họa cho phương pháp điều độ này với ba tiến trình P1, P2, P3 lấy từ ví dụ ở phần trước và lượng tử thời gian
có độ dài bằng 2. 2 4 6 8 10 12 14 2 2 2 2 2 2 2 2 P1 P2 P3 P1 P2 P1 P1 P1 Thời gian chờđợi của P1, P2, P3 lần lượt là 6, 6, và 4. Thời gian chờđợi trung bình = (6 + 6 + 4)/3=5,33.
Một vấn đề quan trọng khi điều độ quay vòng là lựa chọn độdài lượng tử thời gian. Nếu
lượng tử ngắn, thời gian đáp ứng sẽ giảm. Tuy nhiên, việc chuyển đổi tiến trình diễn ra
thường xuyên đòi hỏi nhiều thời gian hơn cho việc chuyển đổi ngữ cảnh. Độdài lượng tử nên lựa chọn lớn hơn thời gian cần thiết để tiến trình thực hiện một thao tác tương tác tiêu biểu hoặc. Ngược lại, lượng tử càng lớn càng tốn ít thời gian chuyển đổi giữa các tiến trình nhưng tính đáp ứng cũng kém đi. Khi lượng tử lớn tới một mức nào đó, điều độ quay vòng sẽ trở
thành FCFS.
c. Điều độưu tiên tiến trình ngắn nhất
Một phương pháp điều độ cho phép giảm thời gian chờđợi trung bình là điều độưu tiên
tiến trình ngắn nhất trước (Shortest Process First - SPF), hay cịn có các tên gọi khác như
công việc ngắn nhất trước (Shortest Job Fist), tiến trình ngắn nhất tiếp theo (Shortest Process
Next). Phương pháp điều độ này lựa chọn trong hàng đợi tiến trình có chu kỳ sử dụng CPU tiếp theo ngắn nhất để phân phối CPU. Trong trường hợp có nhiều tiến trình với chu kỳ CPU tiếp theo bằng nhau, tiến trình đứng trước sẽđược chọn.
Ưu điểm lớn nhất của SPF so với FCFS là thời gian chờđợi trung bình nhỏ hơn nhiều. Xét ví dụđiều độ cho các tiến trình như ở phần trên nhưng sử dụng SPF.
2 6
2 4 10
P3 P2 P1
Thời gian chờđợi trung bình = (6 + 2 +0)/3 = 2,67.
Mặc dù điều độ ưu tiên tiến trình ngắn nhất có thời gian chờ đợi trung bình tối ưu, phương pháp này rất khó sử dụng trên thực tếdo đòi hỏi phải biết trước độ dài chu kỳ sử dụng CPU tiếp theo của tiến trình. Có hai cách để giải quyết phần nào khó khăn này. Cách thứ nhất
được áp dụng đối với hệ thống xử lý theo mẻ như tại các trung tâm tính tốn hiệu năng cao
hiện nay. Quản trị hệ thống căn cứ vào thời gian đăng ký tối đa do lập trình viên cung cấp để
xếp những ứng dụng có thời gian đăng ký ngắn hơn lên trước. Lưu ý, đây là thời gian thực hiện cảứng dụng chứ không phài một chu kỳ sử dụng CPU cụ thể.
Cách thứ hai là dự đoán độ dài chu kỳ sử dụng CPU tiếp theo. Cách dựđoán đơn giản nhất là dựa trên độ dài trung bình các chu kỳCPU trước đó để dựđốn độ dài chu kỳ tiếp theo và ra quyết định cấp CPU.
Điều độ ưu tiên tiến trình ngắn nhất trước là điều độ khơng có phân phối lại. Nếu một tiến trình được cấp CPU, tiến trình sẽ thực hiện cho tới khi khơng cần CPU nữa, kể cả trong
trường hợp xuất hiện tiến trình mới với chu kỳ sử dụng CPU ngắn hơn chu kỳ CPU cịn lại của tiến trình đang thực hiện. Trong phần tiếp theo ta sẽ xem xét việc thêm cơ chế phân phối lại cho điều độưu tiên tiến trình ngắn nhất trước.
d. Điều độưu tiên thời gian còn lại ngắn nhất
Phiên bản ưu tiên tiến trình ngắn nhất có thêm cơ chế phân phối lại được gọi là điều độ
ưu tiên thời gian còn lại ngắn nhất trước (Shortest Remaining Time First – SRTF). Khi một tiến trình mới xuất hiện trong hàng đợi, hệđiều hành so sánh thời gian còn lại của tiến trình
đang chạy với thời gian cịn lại của tiến trình mới xuất hiện. Nếu tiến trình mới xuất hiện có thời gian cịn lại ngắn hơn, hệđiều hành sẽ thu hồi CPU của tiến trình đang chạy và phân phối cho tiến trình mới.
Để minh họa cho phương pháp điều độ này, ta xét ví dụ sau với ba tiến trình có chu kỳ
CPU và thời gian xuất hiện trong hàng đợi như sau:
Tiến trình Thời điểm xuất hiện Độ dài chu kỳ CPU
P1 0 8
P2 0 7
P3 2 2
Kết quảđiều độ sử dụng SRTF được thể hiện trên biểu đồ sau:
0 2 6 11
2 4 5 8
P2 P3 P2 P1
Cũng giống như điều độ ưu tiên tiến trình ngắn nhất, điều độ ưu tiên thời gian cịn lại ngắn nhất có thời gian chờđợi trung bình nhỏnhưng địi hỏi hệđiều hành phải dựđoán được
độ dài chu kỳ sử dụng CPU của tiến trình. So với điều độ quay vịng, việc chuyển đổi tiến trình diễn ra ít hơn và do vậy không tốn nhiều thời gian chuyển đổi ngữ cảnh.
e. Điều độ có mức ưu tiên
Theo phương pháp này, mỗi tiến trình có một mức ưu tiên. Tiến trình được ưu tiên hơn
sẽđược cấp CPU trước. Các tiến trình có mức ưu tiên như nhau được điều độ theo nguyên tắc FCFS.
Có thể thấy hai phương pháp STF và SRTF ở trên là trường hợp riêng của điều độ có mức ưu tiên trong đó tiến trình có thời gian chu kỳ CPU hoặc thời gian chu kỳ CPU còn lại ngắn hơn được ưu tiên hơn. Trong trường hợp tổng quát, mức ưu tiên được xác định theo nhiều tiêu chí khác nhau như yêu cầu bộ nhớ, hạn chế thời gian… Mức ưu tiên cũng có thể do
người quản trị hệ thống xác định dựa trên mức độ quan trọng của tiến trình.
Hệ điều hành quy định mức ưu tiên dưới dạng số ngun trong một khoảng nào đó, ví
dụ từ0 đến 31. Tuy nhiên, khơng có quy tắc chung về việc mức ưu tiên cao tương ứng với số
nhỏ hay số to. Một số hệđiều hành coi số 0 ứng với mức ưu tiên cao nhất trong khi một số hệ điều hành sử dụng 0 cho mức ưu tiên thấp nhất.
Ví dụ sau minh họa cho điều độ có mức ưu tiên, trong đó 0 ứng với mức ưu tiên cao nhất và các số lớn hơn tương ứng với mức ưu tiên thấp hơn.
Tiến trình Mức ưu tiên
P1 4
P2 1
P3 3
P2 P3 P1
Điều độ có mức ưu tiên vừa trình bày ởtrên là điều độ khơng phân phối lại. Tuy nhiên có thểthêm cơ chế phân phối lại cho phương pháp này. Nếu tiến trình mới xuất hiện có mức
ưu tiên cao hơn tiến trình đang chạy, hệđiều hành sẽ thu hồi CPU và phân phối cho tiến trình mới.
f. Điều độ với nhiều hàng đợi
Các phương pháp điều độ trình bày ởtrên đều làm việc với một hàng đợi duy nhất chứa tiến trình ở trạng thái sẵn sàng. Tất cả tiến trình đều được điều độ theo cùng một thuật toán giống nhau. Trên thực tế, tiến trình có thể phân chia thành nhiều loại với đặc điểm, độ quan trọng và nhu cầu sử dụng CPU khác nhau, mỗi loại có thểđịi hỏi phương pháp điều độ riêng. Lấy ví dụ trong máy tính cá nhân, trình soạn thảo bảng tính và bảng tính địi hỏi tương tác
trực tiếp trong khi tiến trình quản lý in và quét virut trên đĩa là tiến trình nền. Hai loại tiến
trình này địi hỏi thời gian đáp ứng khác nhau và do vậy cần có mức ưu tiên cũng như cách điều độ khác nhau.
Điều độ với nhiều hàng đợi là phương pháp điều độtrong đó tiến trình được phân chia thành nhiều loại tùy theo đặc điểm và độưu tiên. Mỗi loại được xếp trong một hàng đợi riêng
và được điều độ theo một phương pháp phù hợp với đặc điểm của loại tiến trình đó. Thơng thường, tiến trình tương tác trực tiếp được điều độtheo phương pháp quay vòng RR trong khi
tiến trình nền được điều độ FCFS.
Trên 2.10 là một ví dụđiều độ với nhiều hàng đợi.
Do có nhiều loại tiến trình nên cần xác định mức độ ưu tiên cho từng loại, chẳng hạn tiến trình tương tác trực tiếp có mức ưu tiên cao hơn tiến trình nền. Giữa các hàng đợi với nhau có thểđiều độ theo hai cách sau. Cách thứ nhất là điều độ theo mức ưu tiên có phân phối lại. Tiến trình ởhàng đợi với mức ưu tiên thấp hơn phải nhường cho tiến trình ởhàng đợi với mức ưu tiên cao chạy trước. Nếu có tiến trình mới với mức ưu tiên cao hơn xuất hiện, tiến
trình đang chạy phải nhường CPU. Cách thứ hai là cấp cho mỗi hàng đợi một khoảng thời gian nhất định (có thể phụ thuộc vào mức ưu tiên). Tiến trình trong từng hàng đợi được điều
độtheo phương pháp của hàng đợi của mình trong khoảng thời gian được cấp đó.
Hình 2.10. Ví dụđiều độ với nhiều hàng đợi