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] Page buffering — FIFO kèm bộ đệm

    Page Buffering — FIFO kèm bộ đệm trang

    Page buffering: khi loại một trang khỏi frame, không vứt ngay mà đưa vào bộ đệm (free pool) kích thước b. Nếu trang bị fault lại đang nằm trong bộ đệm thì cứu được (rescued), tuy vẫn tính là page fault.

    Thuật toán

    • f frame quản lý theo FIFO, bộ đệm buf cũng FIFO, sức chứa b.
    • Với mỗi tham chiếu x:
      1. Nếu x đang trong frame → hit, bỏ qua.
      2. Ngược lại fault: nếu x nằm trong buf thì tăng rescued, lấy x ra khỏi buf.
      3. Nếu còn chỗ trống trong frame → nạp x. Nếu không, loại trang vào ở lâu nhất (FIFO), đẩy nạn nhân vào cuối buf (nếu buf vượt b thì bỏ phần tử cũ nhất của buf), rồi nạp x.

    In tổng_page_fault số_trang_được_cứu.

    Ví dụ

    f=1, b=1, chuỗi 1 2 1. Nạp 1 (fault). Nạp 2 đẩy 1 vào buf (fault). Tham chiếu 1: fault, 1 đang trong buf → rescued. Kết quả 3 1.

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

      Dòng 1: f — số frame. Dòng 2: b — kích thước bộ đệm. Dòng 3: m. Dòng 4: m số hiệu trang.

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

      1 ≤ f ≤ 100; 0 ≤ b ≤ 100; 1 ≤ m ≤ 10^4; 0 ≤ số_trang ≤ 10^5.

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

      tổng_page_fault số_trang_được_cứu.

    Ví dụ:

    Đầu vào:

    1
    1
    3
    1 2 1
    

    Đầu ra:

    3 1

    Giải thích:

    f=1,b=1. Nạp 1 (fault). Nạp 2 → 1 vào buf (fault). Tham chiếu 1: fault, 1 trong buf → rescued, lấy ra. Kết quả 3 1.

    Đang tải editor...