หากกระบวนการที่กำลังรันบล็อกบน i / o
การบล็อกบน IO นั้นเทียบเท่ากับการหยุดกระบวนการของคุณ ในบริบทของเคอร์เนล linux การเรียกใช้การเรียกระบบ IO บางอย่างเช่นread()
จะทำให้ a sysenter
หรือตัวจัดการอินเตอร์รัปต์ทริกเกอร์ให้ดูแล IO นั้นการเรียกdo_sys_read()
ในท้ายที่สุด ที่นี่หากคำขอปัจจุบันไม่สามารถพึงพอใจได้ทันทีฟังก์ชันจะเรียกใช้sched()
ซึ่งอาจดำเนินการกระบวนการอื่น
ในบริบทของระบบความร่วมมือฉันคาดหวังว่าเมื่อคุณทำการเรียกระบบด้วยเหตุผลบางอย่างของ IO หากคำขอไม่พอใจเคอร์เนลจะเลือกงานอื่นและดำเนินการนั้น เอกสารนี้ให้พื้นหลังบางส่วน - โดยทั่วไปถ้าคุณรอบน IO คุณอาจถูกแขวนตลอดไปเพื่อรอ IO นั้น แนวคิดของการจัดตารางเวลาแบบร่วมมือคือการที่คุณเรียกบ่อยครั้งsched()
หรือเมธอด relinquish-the-cpu ที่เท่ากันถ้าทำภารกิจที่ใช้ CPU มาก
ข้อควรพิจารณาในโหมดเคอร์เนลจะน่าสนใจยิ่งขึ้น บนสถาปัตยกรรมที่มีวางจำหน่ายเช่นแพลตฟอร์มแบบฝังตัวตัวจัดการการขัดจังหวะจะยังคงถูกเรียกใช้เพื่อตอบสนองต่อการขัดจังหวะฮาร์ดแวร์หรือซอฟต์แวร์ โดยปกติแล้วเป็นไปได้ที่การนำไปปฏิบัติเพื่อปิดใช้งาน การจัดการขัดจังหวะแต่ก็มีข้อเสียเช่นกัน