「进程」是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。进程是一个既能用来共享程序,又能描述程序并发执行过程的系统基本单位。进程是一种支持程序执行的系统机制。
第一个原因是为了刻画程序的并发性。程序是并发执行的,即不是连续而是走走停停的。程序的并发执行引起资源共享和竞争问题,执行的程序不再处在封闭环境中。“程序”自身只是计算任务的指令和数据的描述,是静态概念,无法刻画程序的并发特性,系统需要寻找一个能描述程序动态执行过程的概念,这就是进程。
第二个原因是为了解决资源的共享性。程序具有两种属性,可再用和可再入。
程序的可再入性使程序与程序的执行不再一一对应。程序概念不能描述这种共享。
进程是程序在数据集合上的一次执行过程,是动态概念,因此进程具有「动态性」。进程有一个生命过程:创建、运行、等待等,且进程具有动态数量和内容的地址空间
同一程序同时运行于不同数据集合时,构成不同的进程,此性质称为「共享性」。
进程是系统中资源分享和保护的基本单位,也是系统调度的独立单元(单线程资源),此属性称为「独立性」。每个进程的地址空间相互独立。
并发进程之间存在着制约性,在进行的关键点上需要等待或互通消息,这种性质称为「制约性」
各进程按各自独立的,不可预知的速度并发推进,这种性质称为「并发性」。并发和异步特性会导致程序执行的不可再现性。
当进程从运行态结束运行,此时需要让出处理器,这时要做一次进程切换、即保存老进程的上下文而装入被保护了的新进程的上下文,以便新进程运行。
如果一个状态变迁是由于另一个状态变迁引起的,则这两个变迁为「因果变迁」。显然,一个进程从运行状态变为就绪状态,一定会引起另一个进程从就绪状态变成运行状态。
为了让某些进程暂时不参与低级调度,释放它占有的资源,以平滑系统负荷的目的而需进入「挂起状态」。
挂起进程具有如下特性
用户空间中,处于进程上下文,用户进程在运行,使用用户栈;在内核空间中,处于进程上下文,内核代表某进程正在运行,使用核心栈。内核空间中,处于中断上下文,与任何进程无关。中断服务程序正在处于特定中断。
内核空间中,内核进程运行于内核态。