进程可以说是操作系统最为核心的一个抽象,而线程可以认为是一种轻量级的进程。
一、进程的模型
进程(process):进程是一个正在运行的程序的实例,是系统进行资源分配和CPU调度的独立单位。
从概念上说,每个进程拥有自己的虚拟CPU,好像它独占了CPU的使用权一样,虽然实际的CPU是不断切换的。进程的另外一大特性,是独立的虚拟地址空间。
进程的创建,有四种事件导致进程的创建:
(1)系统初始化。系统初始化会创建许多进程,如windows刚开机的时候。
(2)执行了正在运行的进程所调用的系统调用。如程序运行了一个fork()调用。
(3)用户请求创建一个进程。如命令行中输入./a.out。
(4)一个批处理作业的初始化。
进程的终止,进程是正在运行的程序的实例,一个程序是会运行完的,所以进程也有终止的时候:
(1)正常退出(自愿)。如程序正常结束。
(2)出错退出(自愿)。如编写一个程序,当错误时调用exit(num)。
(3)严重错误(非自愿)。
(4)被其他进程杀死(非自愿)。如另外一个进程调用了kill(pid)。
进程的实现
进程的实现,相对于线程来说是比较确定的。操作系统内核维护一