😭进程切换和堆栈切换
进程切换时的堆栈切换
D O 31 0 31 0
I F +-------+-------+ +-------+-------+
R |#######|#######| OLD |#######|#######|
E E +-------+-------+ SS:ESP OF P1 +-------+-------+
C X |#######|#######| | |#######|#######|
T P +-------+-------+<----+ +-------+-------+
I A | | |#######|#######| NEW
O N | | +-------+-------+ SS:ESP OF P2
N S | | |#######|#######| |
I | | +-------+-------+<----+
| O | | | |
| N | | | |
| | | | |
! * * * *
* * * *
+-- * * * * <-+
| USER STACK OF P1 USER STACK OF P2 |
| |
| ENTER | LEAVE
| KERNEL | KERNEL
| SPACE | SPACE
| |
D O | 31 0 31 0 |
I F +-> +-------+-------+ ---------------> +-------+-------+ --+
R |#######|#######| SWITCH |#######|#######|
E E +-------+-------+ KERNEL STACK +-------+-------+
C X |#######|#######| |#######|#######|
T P +---------------+ +---------------+
I A | PID | | PID |
O N +---------------+ +---------------+
N S | SLEEPTIME | | SLEEPTIME |
I +---------------+ +---------------+
| O | TIMECOUNT | | TIMECOUNT |
| N +---------------+ +---------------+
| | STATE | | STATE |
! +-------+-------+<----+ +-------+-------+<----+
|#######| SS | | |#######| SS | |
+---------------+ SS0:ESP0 OF P1 +---------------+ SS0:ESP0 OF P2
| ESP | FROM TSS | ESP | FROM TSS
+---------------+ +---------------+
| EFLAGS | | EFLAGS |
+-------+-------+ +-------+-------+
|#######| CS | |#######| CS |
+-------+-------+ +-------+-------+
| EIP | | EIP |
+---------------+ +---------------+
| ERROR | | ERROR |
+---------------+ +---------------+
| IRQ | | IRQ |
+---------------+ +---------------+
| EAX | | EAX |
+---------------+ +---------------+
| ECX | | ECX |
+---------------+ +---------------+
| EDX | | EDX |
+---------------+ +---------------+
| EBX | | EBX |
+---------------+ +---------------+
| XXX | | XXX |
+---------------+ +---------------+
| EBP | | EBP |
+---------------+ +---------------+
| ESI | | ESI |
+---------------+ +---------------+
| EDI | | EDI |
+-------+-------+ +-------+-------+
|#######| DS | |#######| DS |
+-------+-------+ +-------+-------+
|#######| ES | |#######| ES |
+-------+-------+ +-------+-------+
|#######| FS | NEW |#######| FS | OLD
+-------+-------+ SS:ESP OF P1 +-------+-------+ SS:ESP OF P2
|#######| GS | | |#######| GS | |
+-------+-------+<----+ +-------+-------+<----+
| | | |
* * * *
* * * *
* * * *
KERNEL STACK OF P1 KERNEL STACK OF P2回顾:中断
中断嵌套
实现中断嵌套
临界区问题(拓展)
调度策略
Last updated