进程的概念引入原因

进程」是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。进程是一个既能用来共享程序,又能描述程序并发执行过程的系统基本单位。进程是一种支持程序执行的系统机制。

第一个原因是为了刻画程序的并发性。程序是并发执行的,即不是连续而是走走停停的。程序的并发执行引起资源共享和竞争问题,执行的程序不再处在封闭环境中。“程序”自身只是计算任务的指令和数据的描述,是静态概念,无法刻画程序的并发特性,系统需要寻找一个能描述程序动态执行过程的概念,这就是进程。

第二个原因是为了解决资源的共享性。程序具有两种属性,可再用可再入

  • 可再用」程序指在调用它的程序退出之前不允许其他程序调用的程序。这类程序被调用过程中可以有自身修改。
  • 可再入」程序指能够被多个程序同时调用的程序。纯代码,在执行过程中不被修改。

程序的可再入性使程序与程序的执行不再一一对应。程序概念不能描述这种共享。

进程的属性

动态性

进程是程序在数据集合上的一次执行过程,是动态概念,因此进程具有「动态性」。进程有一个生命过程:创建、运行、等待等,且进程具有动态数量和内容的地址空间

共享性

同一程序同时运行于不同数据集合时,构成不同的进程,此性质称为「共享性」。

独立性

进程是系统中资源分享和保护的基本单位,也是系统调度的独立单元(单线程资源),此属性称为「独立性」。每个进程的地址空间相互独立。

制约性

并发进程之间存在着制约性,在进行的关键点上需要等待或互通消息,这种性质称为「制约性」

并发性

各进程按各自独立的,不可预知的速度并发推进,这种性质称为「并发性」。并发和异步特性会导致程序执行的不可再现性。

进程状态和转换

三态转换

进程的三个重要状态分别为进程运行状态进程就绪状态进程等待状态。其状况转换为

img-2024-05-17 10-51-23.png

  • 进程调度程序选择一个新的进程运行,则此进程从「就绪态」转换为「运行态」。该转换可以由其他转换引起
  • 当运行进程用完了时间片或因为一高优先级进程处于就绪状态,此时运行进程被中断,则进程从「运行态」转换为「就绪态」。该转换可以引起其他转换发生。
  • 当一进程必须等待某事件发生,如 OS 尚未完成服务、对一资源的访问尚不能进行、初始化 I/O 且必须等待结果、等待某一进程提供输入时,此进程从「运行态」转换为「等待态」。该转换可以引起其他转换发生。进程进入等待态是,应主动放弃 CPU,让其他进程有机会得到 CPU,此过程称为「让权等待」。
  • 当一进程所等待的事件发生时进程从「等待态」转换为「就绪态」。

当进程从运行态结束运行,此时需要让出处理器,这时要做一次进程切换、即保存老进程的上下文而装入被保护了的新进程的上下文,以便新进程运行。

如果一个状态变迁是由于另一个状态变迁引起的,则这两个变迁为「因果变迁」。显然,一个进程从运行状态变为就绪状态,一定会引起另一个进程从就绪状态变成运行状态。

进程挂起

为了让某些进程暂时不参与低级调度,释放它占有的资源,以平滑系统负荷的目的而需进入「挂起状态」。

挂起进程具有如下特性

  • 该进程不能立即被执行
  • 挂起进程可能会等待事件,但所等待事件是独立于挂起条件的。事件结束并不能导致进程具备执行状态
  • 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行
  • 结束进程挂起状态的命令只能通过操作系统或父进程发出

img-2024-05-17 10-56-01.png

进程描述和组成

(选择题常考)

进程可以通过进程映像进程上下文进程控制块描述

进程的执行顺序由进程队列确定。

当进程从运行态结束运行,此时需要让出处理器,这时要做一次进程切换、即保存老进程的上下文而装入被保护了的新进程的上下文,以便新进程运行。同理,当进程从就绪态进入运行态时,需要进行进程调度

进程活动范围

用户空间中,处于进程上下文,用户进程在运行,使用用户栈;在内核空间中,处于进程上下文,内核代表某进程正在运行,使用核心栈。内核空间中,处于中断上下文,与任何进程无关。中断服务程序正在处于特定中断。

内核空间中,内核进程运行于内核态。

进程控制和管理

处理器管理的一个主要工作是对进程的控制,包括:进程创建、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。这些控制和管理功能由操作系统中的原语实现。