Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành] SRTF (SJF có ưu tiên) - thời gian chờ trung bình

    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):

    1. time = 0, remaining[i] = burst[i].
    2. Tại mỗ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.
    3. Khi remaining[i] về 0, ghi completion[i] = time.
    4. Với mỗi tiến trình: 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.

    • Định dạng đầu vào:

      Dòng đầu n. n dòng arrival burst. ID từ 0.

    • Ràng buộc đầu vào:

      1 ≤ n ≤ 500; 0 ≤ arrival ≤ 2000; 1 ≤ burst ≤ 2000.

    • Định dạng đầu ra:

      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:

    Mô phỏng SRTF theo từng đơn vị thời gian. completion: P1=5, P0=17, P3=10, P2=26. waiting = (5-1-4)+(17-0-8)+(10-3-5)+(26-2-9) = 0+9+2+15 = 26, TB = 26/4 = 6.50.

    Đang tải editor...