Có phải tất cả các cuộc gọi hệ thống đều chặn?


13

Tôi đã đọc một bài viết mô tả sự chuyển đổi giữa không gian người dùng và không gian nhân xảy ra khi có một cuộc gọi hệ thống. Bài báo nói

Một ứng dụng dự kiến ​​sẽ hoàn thành cuộc gọi hệ thống trước khi tiếp tục thực hiện chế độ người dùng.

Bây giờ, cho đến bây giờ tôi đã giả định rằng một số cuộc gọi hệ thống là blocking, trong khi những người khác là non-blocking. Với nhận xét trên, tôi bây giờ bối rối. Điều này có nghĩa là tất cả các cuộc gọi hệ thống đang chặn hoặc tôi đã hiểu nhầm một khái niệm?


@Ankit Hãy giải thích lý do tại sao bạn quay lại chỉnh sửa. Lưu ý rằng chỉnh sửa để cải thiện chi tiết của bài đăng là chính sách tiêu chuẩn trên SE và không ngụ ý phê bình ngầm.
Raphael

@Raphael Xin lỗi người anh em! Tôi chỉ loay hoay và đẩy rollback do nhầm lẫn và sau đó không thể tìm thấy phiên bản trước. Trong thực tế, tôi thực sự thích chỉnh sửa của bạn. : P
Ankit

@Raphael Đã nhận lại. Trên thực tế, tôi đã bị lừa bởi hệ thống sửa đổi (không nhận ra 'bài báo' là một liên kết). Cảm ơn các chỉnh sửa.
Ankit

@Ankit: Vui mừng tôi có thể giúp!
Raphael

Câu trả lời:


15

Bạn dường như đang quá tải thuật ngữ 'chặn'.

Bất kỳ chuyển đổi ngữ cảnh nào bạn thực hiện cho kernel, bạn phải đợi nó chuyển trở lại usermode trước khi ứng dụng của bạn có thể tiếp tục. Đây không phải là những gì thường được gọi là 'chặn'.

Trong thiết kế kernel hiện tại, chặn các cuộc gọi là các cuộc gọi trong đó kernel chỉ trả về khi yêu cầu hoàn thành (hoặc xảy ra lỗi). Các cuộc gọi này thường mất nhiều thời gian hơn và thường dẫn đến quá trình của bạn được lên lịch. Chẳng hạn, nhiều cuộc gọi IO đang chặn.

Có cuộc gọi hệ thống cung cấp IO không đồng bộ và chúng không chặn. Lưu ý rằng vẫn còn một chuyển đổi ngữ cảnh xảy ra ở đây, chỉ có ứng dụng phải quan tâm đến tính chất không đồng bộ của cuộc gọi.

Bài báo dường như nhằm mục đích loại bỏ bối cảnh này chuyển đổi qua lại (các cuộc gọi hệ thống không có ngoại lệ) và cố gắng thực hiện tất cả các cuộc gọi không đồng bộ.


Nó thực sự là một bài nghiên cứu. Đây là URL: eecg.toronto.edu/~livio/ con / flexsc
Ankit

2
@Ankit: Vui lòng chỉnh sửa câu hỏi và đưa nó vào đó.
Aryabhata
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.