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 Unix] Multi-Level Feedback Queue (MLFQ)

    Hàng đợi phản hồi đa mức (MLFQ)

    MLFQ là ý tưởng nền tảng đằng sau nhiều scheduler. Có nlevels mức ưu tiên (mức 0 cao nhất), mỗi mức có quantum riêng. Quy tắc:

    1. Tiến trình mới vào mức 0.
    2. Luôn chọn tiến trình từ mức cao nhất (index nhỏ nhất) còn tiến trình, theo thứ tự FIFO trong mức.
    3. Tiến trình chạy tối đa quantum[mức]. Nếu xong → hoàn thành. Nếu chưa xong → hạ xuống một mức (không thấp hơn mức cuối) và xếp vào cuối hàng mức đó.

    In mỗi PID (theo thứ tự nhập) kèm thời điểm hoàn thành.

    Ví dụ

    Input:

    2
    2 4
    2
    1 5
    2 3
    

    Output:

    1 10
    2 8
    

    PID1 chạy mức0 q=2 (t=2), PID2 mức0 q=2 (t=4), PID1 mức1 q=4 còn 3 chạy hết... xem chi tiết qua mô phỏng.

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

      Dòng 1: nlevels. Dòng 2: nlevels số nguyên quantum theo mức. Dòng 3: n. Mỗi dòng sau: PID burst.

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

      1 ≤ nlevels ≤ 5; 1 ≤ quantum ≤ 1000; 1 ≤ n ≤ 100; 1 ≤ burst ≤ 10000.

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

      Với mỗi tiến trình (thứ tự nhập) in PID thời_điểm_hoàn_thành.

    Ví dụ:

    Đầu vào:

    2
    2 4
    2
    1 5
    2 3
    

    Đầu ra:

    1 7
    2 8

    Giải thích:

    Mức0 q=2: PID1→t2(còn3), PID2→t4(còn1). Mức1 q=4: PID1 chạy 3→t7 xong... PID2 chạy 1→t8 xong; theo mô phỏng PID2=8, PID1=10.

    Đang tải editor...