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] Dịch địa chỉ logic sang địa chỉ vật lý

    Cho kích thước trang page_size, một bảng trang (page table) ánh xạ mỗi số trang sang số khung (frame), và một địa chỉ logic addr. Hãy tính địa chỉ vật lý.

    Thuật toán:

    1. page = addr // page_size, offset = addr % page_size.
    2. Nếu page vượt quá số mục bảng trang, hoặc mục bảng trang là -1 (trang chưa được nạp) → in FAULT.
    3. Ngược lại, lấy frame = page_table[page]; địa chỉ vật lý = frame * page_size + offset.

    Ví dụ: page_size=100, bảng trang [5, 2, 7] (3 mục), addr=150. page=1, offset=50. frame=2 → phys = 2*100 + 50 = 250.

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

      Dòng 1: page_size. Dòng 2: k (số mục bảng trang) rồi k số (mỗi số là frame của trang tương ứng, -1 nghĩa là chưa nạp). Dòng cuối: addr. (Đọc theo token.)

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

      1 ≤ page_size ≤ 1000000; 1 ≤ k ≤ 100000; frame ≥ −1; 0 ≤ addr ≤ 10^12.

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

      Địa chỉ vật lý (số nguyên), hoặc FAULT nếu trang không hợp lệ.

    Ví dụ:

    Đầu vào:

    100 3 5 2 7 150
    

    Đầu ra:

    250

    Giải thích:

    page = 150//100 = 1, offset = 150%100 = 50. Bảng trang[1] = 2 (hợp lệ). phys = 2*100 + 50 = 250.

    Đang tải editor...