InnocentZero's Treasure Chest

HomeFeedAbout MeList of interesting people

14 Feb 1990

Execution in an OS

Execution in an OS

We directly execute some of the program on memory to let go of the virtual memory overhead. Here is one place where user mode and kernel mode separation comes into picture.

Kernel sets up a trap table at boot time since boot is in privileged mode. The address of this table is remembered by the hardware. System calls are made via numbers to specify the type of service they need.

Switching between processes

One approach is to assume that the programs running are cooperative. Any time there's a system call, the OS gets the control back and is able to switch between processes. These systems explicitly had a yield() system call that led programs to give control back to the OS. Obviously this can lead to stalls due to ill formed programs.

The other approach is the saner one, and that is to get the OS to take control from the application on its own. This is accomplished using timer interrupts (periodic interrupts as the name suggests). These run a preconfigured handler that is used for context switching.

An example of xv6 can be taken. It has a timer interrupt that triggers the switch() routine in the kernel that saves the registers and other values of the kernel in the kernel stack and the interrupt saves the registers and other info of the process in the kernel stack of that process. This part is done by the hardware. The saving of kernel registers is done by the software.


Other posts
Creative Commons License
This website by innocentzer0 is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.