Hãy lấy giao diện ổ cứng/mạng làm ví dụ. Nó được chia sẻ bởi nhiều quá trình. Bây giờ nhiều tiến trình có thể đưa ra các lệnh đồng thời tới ổ cứng để đọc dữ liệu. Khi có sẵn dữ liệu, làm sao kernel biết tiến trình nào đã có sẵn dữ liệu? Liệu có một số giao thức được tuân theo giữa hệ điều hành và ổ cứng hay không. tức là một số siêu dữ liệu được trả về cùng với dữ liệu đã sẵn sàng?
Khi nói đến dữ liệu cụ thể theo từng quy trình (ví dụ: truy cập tệp được mở từ ổ cứng hoặc hệ thống tệp trên mạng nhận), dữ liệu đó thường được tuần tự hóa bằng cơ chế khóa. "Giao thức" (phân phối dữ liệu được truy xuất thích hợp cho quy trình yêu cầu) ít nhiều là afaik cụ thể của trình điều khiển hoặc phần hạt nhân - nó được thực hiện khác nhau, ví dụ: Mã mạng và mã hệ thống tập tin ảo.
Điều này được mô tả rõ ràng trong một chương có tên "Điều kiện đồng thời và cuộc đua" trong cuốn sách Trình điều khiển thiết bị Linux của Kroah-Hartman, Rubini và Corbet. Bạn có thể xem ở đây:https://www.safaribooksonline.com/library/view/linux-device-drivers/0596005903/ch05.html
Tôi là một lập trình viên xuất sắc, rất giỏi!