Skip to content

Latest commit

 

History

History
13 lines (7 loc) · 459 Bytes

执⾏⼀个系统调用时OS发⽣的过程.md

File metadata and controls

13 lines (7 loc) · 459 Bytes

执⾏⼀个系统调用时, OS 发⽣的过程,越详细越好

1. 执⾏⽤户程序(如:fork)

2. 根据glibc中的函数实现,取得系统调⽤号并执⾏int $0x80产⽣中断。

3. 进⾏地址空间的转换和堆栈的切换,执⾏SAVE_ALL。(进⾏内核模式)

4. 进⾏中断处理,根据系统调⽤表调⽤内核函数。

5. 执⾏内核函数。

6. 执⾏ RESTORE_ALL 并返回⽤户模式