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] Round Robin với quantum cho trước

    Mô phỏng Round Robin (RR) với quantum (lượng tử thời gian) q cho trước và tính thời gian chờ trung bình.

    Hàng đợi sẵn sàng là FIFO. Quy tắc nạp hàng đợi (để output xác định):

    • Ban đầu nạp mọi tiến trình có arrival ≤ 0 (theo thứ tự (arrival, ID)).
    • Khi một tiến trình chạy xong một lát run = min(q, remaining), time += run. Sau đó nạp mọi tiến trình mới có arrival ≤ time (chưa vào hàng đợi) vào cuối hàng đợi, rồi mới đưa tiến trình vừa chạy (nếu còn remaining > 0) vào cuối hàng đợi.
    • Nếu hàng đợi rỗng mà còn tiến trình chưa đến, nhảy time tới arrival sớm nhất.

    Thuật toán: lặp lấy đầu hàng đợi, chạy tối đa q đơn vị, cập nhật remaining, nạp tiến trình mới, đẩy lại nếu chưa xong; ghi completion khi xong. Cuối cùng waiting[i] = (completion[i]-arrival[i]) - burst[i], in trung bình.

    Ví dụ: q=2, (0,5),(1,3),(2,1). Thời gian chờ TB = 3.33.

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

      Dòng đầu: hai số n q. n dòng tiếp: arrival burst. ID từ 0.

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

      1 ≤ n ≤ 1000; 1 ≤ q ≤ 10000; 0 ≤ arrival ≤ 10000; 1 ≤ burst ≤ 10000.

    • Đị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:

    3 2
    0 5
    1 3
    2 1
    

    Đầu ra:

    3.33

    Giải thích:

    q=2. Hàng đợi ban đầu [P0]. P0 chạy 0..2 (rem3); nạp P1,P2 (đến ≤2) rồi đẩy P0 → [P1,P2,P0]. P1 2..4 (rem1) → [P2,P0,P1]. P2 4..5 (xong, comp5) → [P0,P1]. P0 5..7 (rem1) → [P1,P0]. P1 7..8 (xong comp8) → [P0]. P0 8..9 (xong comp9). waiting=(9-0-5)+(8-1-3)+(5-2-1)=4+4+2=10, TB=10/3=3.33.

    Đang tải editor...