Reputation: 5184
Quoting the following paragraph from Operating Systems: Three Easy Pieces,
Note that there are two types of register saves/restores that happen during this protocol. The first is when the timer interrupt occurs; in this case, the user registers of the running process are implicitly saved by the hardware, using the kernel stack of that process. The second is when the OS decides to switch from A to B; in this case, the kernel registers are explicitly saved by the software (i.e., the OS), but this time into memory in the process structure of the process.
Reading other literature on context switch I understand that timer interrupt throws the cpu into kernel mode which then saves the process context into kernel stack.
Why is the author talking about a multiple context save emphasising on hardware/software?
Upvotes: 4
Views: 2989
Reputation: 21607
The first is when the timer interrupt occurs; in this case, the user registers of the running process are implicitly saved by the hardware, using the kernel stack of that process.
Often, only SOME of the registers are saved and this is usually to an interrupt stack.
The second is when the OS decides to switch from A to B; in this case, the kernel registers are explicitly saved by the software (i.e., the OS), but this time into memory in the process structure of the process.
Usually this switch occurs in HARDWARE through a special instruction. Maybe they are referring to the fact that the switch is triggered through software as opposed to an interrupt that is triggered by hardware.
Also thanks for that reference. I have just started to go through it. It MUCH better than most of the OS books that only serve to confuse.
Upvotes: 1
Reputation: 8292
The author emphasizes on hardware/software part of it because basically its context saving that is being done , sometimes by hardware and sometimes by software.
When a timer interrupt
occurs, the user registers
are saved by hardware
(meaning saved by the CPU
itself) on the kernel stack
of that process. When the interrupt handler
code is finished, the user registers
will be restored using the kernel stack
of that process,thereby restoring user stack
and process successfully returns to user mode
from kernel mode
.
In case of a context switch
from process A
to process B
, the very kernel stacks
of the two processes A
and B
are switched,inside the kernel
, which indirectly means saving and restoring of kernel registers
. The term Software is used because the scheduler
process after selecting which process to run next calls a function(thats why software)
, that does the switching of kernel stacks
. The context switch
code need not worry about user register
values - those are already safely saved away in the kernel stack
by that point.
Upvotes: 5