MINIX中的进程创建MINIX的系统中是由PM管理进程创建,但是具体创建操作由PM、内核、FS三部分完成。创建首先是用户调用 lib/posix/_fork.c中的fork()要求创建进程,这条调用最终转化成调用src/kernel/proc.c中的sys_call(),并构建一条消息message,其中写明m-m_source为当前调用者进程号,消息类型m-m_type为FORK。消息(即图中的m)的地址这时已经作为参数被传递进来,sys_call()可以据此得知m的内容,并在适当的时候将内容传递给PM(即图中MM)。PM的工作就是不断地获取并处理消息,所以它能够得到用户进程发送的m,并将其存放在m_in中。当PM分析m_in-m_type为FORK,得知了消息的内容是要进行fork操作,它就进一步调用其do_fork()完成整个过程。PM进行FORK操作后,以发消息的形式通知内核中的系统任务SYSTEM和文件系统FS进行各自的Fork操作,最后由PM设置消息m_out向调用者进程进行回复和提供返回值。下图1说明了用户要求进程创建时,消息的传递过程。图中使用了