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] Phân trang hai cấp — tách p1/p2/offset

    Hệ thống dùng phân trang hai cấp (two-level paging). Địa chỉ logic dài V bit, kích thước trang P bit (tức trang = 2^P byte). Phần còn lại (V − P bit) là số trang, được chia làm hai phần:

    • p1 = b1 bit cao (chỉ số trong bảng trang ngoài / outer page table).
    • p2 = các bit còn lại = (V − P − b1) bit (chỉ số trong bảng trang trong / inner page table).
    • offset = P bit thấp.

    Cho một địa chỉ logic (số nguyên không âm A), hãy tách thành ba thành phần p1, p2, offset (giá trị thập phân).

    Cách tính:

    • offset = A mod 2^P.
    • pagenum = A div 2^P.
    • p2 = pagenum mod 2^(V−P−b1).
    • p1 = pagenum div 2^(V−P−b1).

    In ra ba số p1 p2 offset cách nhau dấu cách.

    Ví dụ: V=32, P=12, b1=10, A=0x12345678. offset = 0x678 = 1656. pagenum = 0x12345. p2 (10 bit) và p1 (10 bit) tách ra.

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

      Một dòng gồm bốn số nguyên: V (số bit địa chỉ), P (số bit offset), b1 (số bit của p1), A (địa chỉ logic, thập phân).

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

      1 ≤ P < V ≤ 64; 1 ≤ b1 < V − P; 0 ≤ A < 2^V.

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

      Ba số: p1, p2, offset (thập phân) cách nhau dấu cách.

    Ví dụ:

    Đầu vào:

    32 12 10 305419896
    

    Đầu ra:

    72 837 1656

    Giải thích:

    A=305419896=0x12345678. offset = A mod 2^12 = 0x678 = 1656. pagenum = A>>12 = 0x12345 = 74565. inner_bits=32-12-10=10. p2 = 74565 mod 1024 = 837. p1 = 74565 div 1024 = 72. In 72 837 1656.

    Đang tải editor...