This section describes the main structures used in the UNIX kernel that are related to file access, from the file descriptor level down to issuing read and write calls to the disk driver.
Each UNIX process is separated both from other processes and from the kernel through hardware-protection mechanisms. Thus, one process is unable to access the address space of another and is unable to either read from or write to the kernel data structures.
When a process is running it can either be in user mode or kernel mode. When in user mode it runs on its own stack and executes instructions from the application binary or one of the libraries that it may be linked with. In order to execute a system call, the process transfers to kernel mode by issuing a special hardware instruction. When in the kernel, all arguments related to the system call are copied into the kernel's address space. Execution proceeds on a separate kernel stack. A context switch (a switch to another user process) can take place prior to returning to the user process if the timeslice of that process has been exceeded or if the process goes to sleep (for example, while waiting for an I/O operation).
The mechanisms for transferring control between user and kernel mode are dependent on the hardware ...