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] Thay trang Second-Chance (Clock)

    Mô phỏng thuật toán thay trang Second-Chance (Clock) với F khung trang.

    Cấu trúc: các khung xếp thành vòng tròn, có một con trỏ (hand). Mỗi khung có một bit tham chiếu (reference bit).

    Thuật toán cho mỗi trang được truy cập trong chuỗi tham chiếu:

    1. Nếu trang đã có trong bộ nhớ (hit): đặt reference bit của nó = 1. Không tăng page fault.
    2. Nếu trang chưa có (miss → page fault):
      • Nếu còn khung trống: nạp trang vào khung trống có chỉ số nhỏ nhất (theo thứ tự nạp), đặt ref bit = 1.
      • Nếu đầy: lặp từ vị trí hand. Nếu khung tại hand có ref bit = 1, đặt nó = 0 rồi tiến hand sang khung kế (vòng). Nếu ref bit = 0, thay trang đó bằng trang mới (ref bit mới = 1), rồi tiến hand sang khung kế.

    In ra tổng số page fault.

    Ví dụ: F=3, chuỗi 1 2 3 1 4. 1,2,3 là 3 fault (nạp). 1 hit (ref=1). 4 miss: hand=0, khung trang1 ref=1->0 tiến; khung trang2 ref=1->0 tiến; khung trang3 ref=1->0 tiến; quay lại khung trang1 ref=0 -> thay bằng 4. Tổng 4 fault.

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

      Dòng đầu: F (số khung) và M (độ dài chuỗi). Dòng tiếp: M số là chuỗi tham chiếu trang.

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

      1 ≤ F ≤ 1000; 1 ≤ M ≤ 100000; số hiệu trang ≥ 0.

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

      Một số nguyên: tổng số page fault.

    Ví dụ:

    Đầu vào:

    3 5
    1 2 3 1 4
    

    Đầu ra:

    4

    Giải thích:

    Nạp 1,2,3 (3 fault). 1 hit (ref=1). 4 miss: quét vòng các ref=1 hạ về 0, quay lại khung đầu ref=0 thay bằng 4. Tổng 4 fault.

    Đang tải editor...