diff --git a/thu_os/chp1.md b/thu_os/chp1.md index 660a90c..761b640 100644 --- a/thu_os/chp1.md +++ b/thu_os/chp1.md @@ -108,6 +108,7 @@ BIOS -> 磁盘主引导扇区的主引导记录 -> 活动分区的引导扇区 + 此外,他们之间是可以相互嵌套的。例如异常服务例程执行过程中可以会出现硬件中断,异常服务例程执行时也可能会遇到缺页异常。 关于系统调用与常规调用的不同点: - - CALL RET 用于常规调用 - - INT IRET 用于系统调用 - - 系统调用往往开销更高,这是因为系统调用还涉及到堆栈的切换,从用户堆栈切换到内核堆栈(也是出于安全的考虑),因此系统调用相对于常规调用,在保护现场的操作中,除了要保存当前的CS:IP以及一些关联寄存器外,还需要保存状态信息(EFLAGS),以及当前用户堆栈的地址(SS和ESP),以便于从内核堆栈恢复到用户堆栈 + +- CALL RET 用于常规调用 +- INT IRET 用于系统调用 +- 系统调用往往开销更高,这是因为系统调用还涉及到堆栈的切换,从用户堆栈切换到内核堆栈(也是出于安全的考虑),因此系统调用相对于常规调用,在保护现场的操作中,除了要保存当前的CS:IP以及一些关联寄存器外,还需要保存状态信息(EFLAGS),以及当前用户堆栈的地址(SS和ESP),以便于从内核堆栈恢复到用户堆栈