Mô phỏng SRTF (Shortest Remaining Time First) — phiên bản có ưu tiên (preemptive) của SJF — và tính thời gian chờ trung bình.
Mỗi đơn vị thời gian, CPU chọn tiến trình đã đến và còn remaining > 0 với thời gian còn lại nhỏ nhất. Nếu một tiến trình mới đến có thời gian còn lại nhỏ hơn tiến trình đang chạy thì ngắt tiến trình hiện tại. Tie-break: remaining bằng nhau → arrival nhỏ hơn → ID nhỏ hơn.
Thuật toán (mô phỏng theo từng đơn vị thời gian):
time = 0, remaining[i] = burst[i].time: trong các tiến trình arrival ≤ time và remaining > 0, chọn tiến trình theo tie-break trên; chạy 1 đơn vị (remaining -= 1, time += 1). Nếu không có tiến trình nào, time += 1.remaining[i] về 0, ghi completion[i] = time.turnaround = completion - arrival, waiting = turnaround - burst. In tổng waiting / n.Ví dụ: (0,8),(1,4),(2,9),(3,5). Kết quả thời gian chờ TB = 6.50.
Dòng đầu n. n dòng arrival burst. ID từ 0.
1 ≤ n ≤ 500; 0 ≤ arrival ≤ 2000; 1 ≤ burst ≤ 2000.
Thời gian chờ trung bình, làm tròn 2 chữ số ({:.2f}).
Ví dụ:
Đầu vào:
4
0 8
1 4
2 9
3 5
Đầu ra:
6.50
Giải thích:
Đang tải editor...