xv6的启动过程

bootloader

1. bootasm.S : start32

2. bootmain.c : bootmain

kernel

3. main.c : main

4. proc.c : userinit

  创建第一个用户进程 initcode

5. main.c : mpmain

  调用scheduler开始任务调度

用户空间的第一个进程

  调用内核接口SYS_exec,使用 init 替换掉自己,然后开始执行init,在init中循环启动sh,等待sh执行结束,然后又启动sh , 

猜你喜欢

转载自www.cnblogs.com/hygblog/p/9372609.html