Jika proses yang berjalan diblokir pada i / o
Memblokir di IO hampir sama dengan menunda proses Anda. Dalam konteks kernel linux, mengeksekusi beberapa pemanggilan sistem IO seperti read()
akan menyebabkan sysenter
pengendali atau interupsi pemicu untuk menjaga IO itu, do_sys_read()
akhirnya memanggil . Di sini, jika permintaan saat ini tidak dapat segera dipenuhi, fungsi panggilan sched()
yang kemudian dapat menjalankan proses lain.
Dalam konteks sistem koperasi, saya berharap bahwa ketika Anda membuat panggilan sistem untuk beberapa alasan IO, jika permintaan tidak dapat dipenuhi, kernel memilih tugas lain dan menjalankannya. Dokumen ini memberikan latar belakang - pada dasarnya, jika Anda menunggu di IO, Anda bisa digantung selamanya menunggu IO itu. Gagasan penjadwalan koperasi adalah bahwa Anda sering memanggil sched()
atau metode pelepasan cpu yang sama, jika melakukan tugas-tugas yang intensif CPU.
Pertimbangan mode kernel menjadi lebih menarik. Pada arsitektur di mana mereka tersedia seperti platform tertanam tertentu , penangan interupsi masih akan dipanggil sebagai respons terhadap interupsi perangkat keras atau lunak. Biasanya dimungkinkan, implementasi-bijaksana, untuk menonaktifkan penanganan interupsi , tetapi itu juga memiliki kelemahan.