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ỉ phân đoạn (segmentation)

    Mô phỏng dịch địa chỉ theo phân đoạn (segmentation).

    Có n đoạn (segment), mỗi đoạn có base (địa chỉ vật lý bắt đầu) và limit (độ dài đoạn). Một địa chỉ logic gồm cặp (seg, offset).

    Thuật toán:

    1. Nếu seg ≥ n (số hiệu đoạn không tồn tại) hoặc offset ≥ limit[seg] (vượt giới hạn đoạn) → in FAULT.
    2. Ngược lại, địa chỉ vật lý = base[seg] + offset.

    Ví dụ: 2 đoạn: đoạn 0 (base=1000, limit=500), đoạn 1 (base=5000, limit=300). Địa chỉ (1, 100): offset 100 < limit 300 → phys = 5000 + 100 = 5100.

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

      Dòng 1: n. Tiếp n dòng: mỗi dòng base limit của một đoạn (đoạn đánh số từ 0). Dòng cuối: seg offset. (Đọc theo token.)

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

      1 ≤ n ≤ 100000; 0 ≤ base ≤ 10^12; 1 ≤ limit ≤ 10^9; 0 ≤ seg, offset ≤ 10^12.

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

      Địa chỉ vật lý (số nguyên), hoặc FAULT.

    Ví dụ:

    Đầu vào:

    2
    1000 500
    5000 300
    1 100
    

    Đầu ra:

    5100

    Giải thích:

    Đoạn 1: base=5000, limit=300. offset=100 < 300 (hợp lệ). Địa chỉ vật lý = base + offset = 5000 + 100 = 5100.

    Đang tải editor...