<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div>In Operating System Concepts 6th ed, chapter 20:</div><div>"Kernel code can thus assume that it will never be preempted by another process and that no special care must be</div><div>taken to protect critical sections. The only requirement is that critical sections do not contain references to user memory</div><div>or waits for I/O completions"</div><div><br></div><div>Why us that the process cannot wait for I/O to complete in critical sections?</div><div>My another question is: While developing kernel modules (for kernels before 2.6), do we need to keep concurrency in mind?</div><div>Because the modules run as part of the kernel and no two processes can run in the kernel at the same time? Or my question is wrong since they CAN run in the kernel at the same time (like when one process waits for I/O completion and another is
 scheduled to run which then makes a system call)?<br></div><div><br></div><div>Please excuse me for the multiple nested question since I didn't quite know how to put it.<br></div><div><br></div></div></body></html>