多线程并发
fork函数调用过程
1 | static inline _syscall0(int,fork) |
_syscall0是一个宏实现,实现了可复用的函数模板
1 |
这里fork可转化为
1 | int fork(void) { |
为了实现方便,所有的系统调用都用宏来实现
int80中断被设置为了系统调用
1 | _system_call: |
系统调用符表
1 | fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read, |
1 | _sys_fork: |
fork()–>int 80中断 –>syscall中断程序–>syscall_table->->sys_fork
寻找空闲进程槽位
1 | int find_empty_process(void) |
线程调度
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xiao's blog!