创建一个新的进程和加载运行一个执行程序文件是两个不同的概念。
        当创建子进程时,它完全复制了父进程的代码和数据区,并会在 其中执行子进程部分的代码。
        而执行块设备上的一个程序时,一般是在子进程中运行exec()系统调用来操作的。在进入exec()后,子进程原来的代码和数据区就会被清掉(释放)。待该子进程开始运行新程序时,由于此时内核还没有从块设备上加载该程序的代码,CPU就会立刻产生代码页面不存在的异常(Fault),此时内存管理程序就会 从块设备上加载相应的代码页面,然后CPU又重新执行引起异常的指令。到此时新程序的代码才真正开始被执行。