UNIX的fork()和exec()调用是一种bootloader

在UNIX流派的系统上,启动一个新程序的方法是用fork()和exec()系统调用。fork()复制当前进程,然后exec()启动新程序。然而为什么要使用这么一个奇怪的流程呢?

UNIX设计为分时系统。系统的每个进程,通过操作系统分享了同一个计算机硬件,它们运行在操作系统映射的虚拟机上。这个虚拟机就是程序运行所需的“硬件”。那么fork()就是复制了这么一个虚拟机。而exec()就是把一个新程序装入到这个虚拟机。所以exec()是虚拟机上的引导程序,就像系统启动时,lilo和grub这类真机上引导程序一样。真机上boot loader程序既然已经做好,虚拟机上的同样的东西没有理由做不好。这样设计是非常巧妙的。

おすすめ

転載: blog.csdn.net/aaasssdddd96/article/details/118095291
おすすめ