进程
进程标识:
(1)每个进程都有一个非负整型的唯一进程ID。
(2)进程ID 0 是调度进程,常常被称为交换进程(swapper)。该进程并不执行任何磁盘上的程序,它是内核的一部分,因此也常被称为系统进程。
(3)进程ID 1通常称为init进程,在自举过程结束时由内核调用。该进程的程序文件在UNIX的早起版本中是/etc/init,在比较新的版本中是/sbin/init,此进程负责在内核自举启动后启动一个UNIX系统。init通常读与系统有关的初始化文件(/etc/rc*文件),并将系统引导到一个状态(例如多用户)。
(3)在某些unix的虚存实现中,进程 ID 2是页精灵进程(pagedaemon)。此进程负责支持虚存系统的页操作,与交换进程一样,页精灵进程也是内核进程。
fork函数
一个现存进程调用fork函数使unix内核创建一个新进程的唯一方法。
(1)由fork创建的新进程被称为子进程,该函数被调用一次,但返回两次。两次返回的区别是子进程返回值是0,而父进程返回值则是新子进程的进程ID。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一个,所以没有一个函数使一个进程可以获得其所有子进程的进程ID。fork使得子进程得到返回值0 的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid获得其父进程的进程ID。
(2)子进程和父进程继续执行fork之后的指令。子进程是父进程的复制品。例如,子进程获得父进程的数据空间、堆和栈的复制品。注意:这是子进程所拥有的拷贝。父子进程并不共享这些存储空间部分。