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] Lập lịch theo độ ưu tiên (không ưu tiên ngắt)

    Mô phỏng lập lịch theo độ ưu tiên, không ngắt (Priority non-preemptive) và tính thời gian chờ trung bình.

    Mỗi tiến trình có thêm số priority. Quy ước: số priority nhỏ hơn = độ ưu tiên cao hơn. Khi CPU rảnh, trong các tiến trình đã đến và chưa chạy, chọn tiến trình có priority cao nhất (số nhỏ nhất). Tie-break: priority bằng → arrival nhỏ → ID nhỏ. Tiến trình chạy đến hết.

    Thuật toán từng bước:

    1. time = 0, mọi tiến trình chưa xong.
    2. Lặp: tìm các tiến trình arrival ≤ time, chưa xong; nếu rỗng nhảy time tới arrival sớm nhất.
    3. Chọn theo (priority, arrival, ID). Cộng time - arrival vào tổng chờ, time += burst, đánh dấu xong.
    4. In tổng chờ / n.

    Ví dụ: (arrival,burst,priority) = (0,4,2),(0,3,1),(0,1,3). Thứ tự chạy theo priority: P1(0..3), P0(3..7), P2(7..8). Chờ = 3,0,7 → TB = 3.33.

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

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

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

      1 ≤ n ≤ 1000; 0 ≤ arrival ≤ 10000; 1 ≤ burst ≤ 10000; 1 ≤ priority ≤ 100.

    • Đị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
    0 4 2
    0 3 1
    0 1 3
    

    Đầu ra:

    3.33

    Giải thích:

    Cả 3 đến t=0. Priority nhỏ nhất P1(1) chạy 0..3 (chờ 0). Còn P0(pr2),P2(pr3) → P0 chạy 3..7 (chờ 3). P2 chạy 7..8 (chờ 7). Tổng=0+3+7=10, TB=10/3=3.33.

    Đang tải editor...