Nếu một quá trình đang chạy chặn trên i / o
Chặn trên IO khá nhiều tương đương với việc đình chỉ quá trình của bạn. Trong ngữ cảnh của hạt nhân linux, việc thực hiện một số lệnh gọi hệ thống IO như read()
sẽ khiến sysenter
trình xử lý bị gián đoạn hoặc kích hoạt để chăm sóc IO đó, do_sys_read()
cuối cùng gọi . Ở đây, nếu yêu cầu hiện tại không thể được thỏa mãn ngay lập tức, thì hàm gọi sched()
đó có thể thực thi một quy trình khác.
Trong ngữ cảnh của một hệ thống hợp tác, tôi mong đợi rằng khi bạn thực hiện một cuộc gọi hệ thống vì một số lý do IO, nếu yêu cầu không thể được thỏa mãn, nhân chọn một nhiệm vụ khác và thực hiện điều đó. Tài liệu này cung cấp một số nền tảng - về cơ bản, nếu bạn chờ đợi trên IO, bạn có thể bị treo mãi mãi chờ đợi IO đó. Ý tưởng về lập lịch hợp tác là bạn thường gọi sched()
hoặc phương thức từ bỏ bình đẳng, nếu thực hiện các tác vụ đòi hỏi nhiều CPU.
Xem xét chế độ hạt nhân trở nên thú vị hơn. Trên các kiến trúc nơi chúng có sẵn như các nền tảng nhúng nhất định , các trình xử lý ngắt vẫn sẽ được gọi để đáp ứng với các ngắt phần cứng hoặc phần mềm. Thông thường có thể, thực hiện khôn ngoan, để vô hiệu hóa xử lý ngắt , nhưng điều đó cũng có nhược điểm.