Mô phỏng thuật toán SJF (Shortest Job First) không ưu tiên (non-preemptive) và tính thời gian chờ trung bình.
Tại mỗi thời điểm CPU rảnh, trong số các tiến trình đã đến và chưa chạy, chọn tiến trình có burst nhỏ nhất. Tie-break: burst bằng nhau → arrival nhỏ hơn trước → vẫn bằng thì ID nhỏ hơn trước. Khi đã chọn, tiến trình chạy đến hết (không bị ngắt).
Thuật toán từng bước:
time = 0, đánh dấu mọi tiến trình chưa xong.arrival ≤ time và chưa xong. Nếu rỗng, nhảy time tới arrival sớm nhất của tiến trình chưa xong.time - arrival vào tổng chờ, rồi time += burst, đánh dấu xong.n.Ví dụ: (0,7),(2,4),(4,1),(5,4). Trình tự chạy: P0(0..7), rồi trong số đã đến chọn P2(burst1) 7..8, rồi P1(burst4) 8..12, rồi P3 12..16. Chờ = 0,6,3,7 → TB = 4.00.
Dòng đầu n. n dòng arrival burst. ID đánh từ 0 theo thứ tự nhập.
1 ≤ n ≤ 1000; 0 ≤ arrival ≤ 10000; 1 ≤ burst ≤ 10000.
Thời gian chờ trung bình, làm tròn 2 chữ số ({:.2f}).
Ví dụ:
Đầu vào:
4
0 7
2 4
4 1
5 4
Đầu ra:
4.00
Giải thích:
Đang tải editor...