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 Unix] Thứ tự giao tín hiệu pending khi bỏ chặn hàng loạt

    Thứ tự giao tín hiệu pending khi bỏ chặn hàng loạt

    POSIX quy định: khi nhiều tín hiệu standard (không real-time) đang pending được bỏ chặn cùng lúc, thứ tự giao không xác định, nhưng nhiều cài đặt Linux giao theo số hiệu tăng dần. Bài này dùng quy ước đó.

    Xử lý sự kiện:

    • BLOCK n: chặn n (bỏ qua nếu 9/19).
    • SIG n: nếu bị chặn → pending (không trùng); nếu không → giao ngay, in DELIVER n.
    • UNBLOCKALL: bỏ chặn TẤT CẢ; mọi tín hiệu đang pending được giao theo số hiệu tăng dần, mỗi cái in DELIVER n; sau đó mask và pending rỗng.

    In các dòng DELIVER n theo đúng thứ tự xảy ra.

    Ví dụ

    BLOCK 15 BLOCK 2 SIG 15 SIG 2 UNBLOCKALL → DELIVER 2 rồi DELIVER 15.

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

      Nhiều dòng BLOCK n / SIG n / UNBLOCKALL.

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

      Số sự kiện ≤ 2000.

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

      Các dòng DELIVER n theo thứ tự giao.

    Ví dụ:

    Đầu vào:

    BLOCK 15
    BLOCK 2
    SIG 15
    SIG 2
    UNBLOCKALL
    

    Đầu ra:

    DELIVER 2
    DELIVER 15

    Giải thích:

    15,2 bị chặn → pending. UNBLOCKALL giao theo số hiệu tăng dần: 2 trước, 15 sau.

    Đang tải editor...