user1762571
user1762571

Reputation: 1949

what happens during context switch between two processes in linux?

Let's say process p1 is executing with its own address space(stack,heap,text). When context switch happens, i understand that all the current cpu registers are pushed into PCB before loading process p2. Then TLB is flushed and loaded with p2 address mapping and starts executing with its own address spaces. What i would like know is the state of p1 address space. Will it be copied to disk and updates its page table before loading process p2?

Upvotes: 2

Views: 2931

Answers (1)

user3344003
user3344003

Reputation: 21607

The specifics of a context switch depend upon the underlying hardware. However, context switches are basically the same, even among different system.

The mistake you have is " i understand that all the current cpu registers are pushed into stack before loading process p2". The registers are stored in an area of memory that is usually called the PROCESS CONTEXT BLOCK (or PCB) whose structure is defined by the processor. Most processors have instructions for loading and saving the process context (i.e., its registers) into this structure. In the case of Intel, this can require multiple instructions saving to multiple blocks because of all the different register sets (e.g. FPU, MMX).

The outgoing process does not have to be written to disk. It may paged out if the system needs more memory but it is possible that it could stay entirely in memory and be ready to execute.

A context switch is simply the exchange of one processor's saved register values for another's.

Upvotes: 3

Related Questions