当创建子进程时,它完全复制了父进程的代码和数据区,并会在 其中执行子进程部分的代码。
而执行块设备上的一个程序时,一般是在子进程中运行exec()系统调用来操作的。在进入exec()后,子进程原来的代码和数据区就会被清掉(释放)。待该子进程开始运行新程序时,由于此时内核还没有从块设备上加载该程序的代码,CPU就会立刻产生代码页面不存在的异常(Fault),此时内存管理程序就会 从块设备上加载相应的代码页面,然后CPU又重新执行引起异常的指令。到此时新程序的代码才真正开始被执行。
上一篇:中断过程
下一篇:任务内核态与用户态堆栈之间的切换
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M