当一个正在运行的进程发生阻塞或等待,或者需要调度其他进程时就会进行进程切换,切换前,需要保存进程的上下文信息,切换后,需要恢复上下文信息。上下文指的是一些进程生命周期的信息,如寄存器状态,cpu状态,内存地址空间等,这些信息存在进程的pcb块中,它有内核进行维护,而且内核存在多个队列,如等待队列,就绪队列等,当前进程因为什么原因进行进程切换,就将相应的pcb块放到内核维护的相应队列当中。
进程创建在unix系统中的系统调用指令是fork()和exec(),fork()进行把一个进程复制成两个进程,复制父进程所有的变量和内存以及所有cpu寄存器,子进程的pid=0,exec()用新程序来重写当前进程。执行Fork()创建新进程复制父进程的所有信息,但是有些内存信息并不需要,反而增加了开销,所以有了一个轻量级的vfork()系统调用,此创建进程时,不再创建一个同样的内存映射。
进程等待与退出的指令分别是wait(),exit().进程退出的主要作用是将进程占用的资源进行回收,如释放内存,释放数据结构,清理僵尸进程等。