进程与线程

进程与线程

OLENCER. Infinity

进程的概念和特征


进程的概念

动态的,程序的一次执行过程,进程实体的运行过程

为了使参与并发执行的每个程序(含数据)都能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block, PCB)。

进程的特征

动态性

动态性是进程最基本的特征。

并发性

并发性是进程的重要特征,也是操作系统的重要特征。

独立性

进程是能独立运行、独立获得资源、独立接受调度的基本单位。

异步性
结构性

进程的状态与转换


进程的状态

创建态

又称新建态。

就绪态
运行态
阻塞态

又称等待态。

终止态

又称结束态。

进程状态的转换

$ 创建态 \to 就绪态 $
$ 就绪态 \to 运行态 $
$ 运行态 \to 就绪态 $
  • 处于运行态的进程在时间片用完后,不得不让出处理机。
  • 在可剥夺的操作系统中,当有更高优先级的进程就绪时,调度程序将正在执行的进程转换为就绪态,让更高优先级的进程执行。
$ 运行态 \to 阻塞态 $
  • 等待系统资源分配。
  • 等待某事件发生。

一个进程从运行态变成阻塞态是主动行为。

$ 阻塞态 \to 就绪态 $
  • 系统资源分配。
  • 某事件发生。

从阻塞态变成就绪态是被动行为,需要其他相关进程的协助。

$ 运行态 \to 结束态 $
五种进程状态的转换

进程的挂起态与七状态模型

进程的组成


进程控制块

进程描述信息
  • 进程标识符(Process ID, PID)
  • 用户标识符(User ID, UID)
进程控制和管理信息
资源分配清单
处理机相关信息

程序段

程序的代码(指令序列)

数据段

运行中产生的各种数据

进程控制


基本概念

原语实现。

用“关中断指令”和“开中断指令”特权指令实现原子性。

进程的创建

创建原语
  1. 为新进程分配一个唯一的进程标识号,并申请一个空白PCB(PCB是有限的)。若PCB申请失败,则创建失败。
  2. 为进程分配其运行所需的资源。这些资源或从操作系统获得,或仅从其父进程获得。如果资源不足(如内存),则并不是创建失败,而是处于创建态,等待内存资源。
  3. 初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
  4. 若进程就绪队列能够接纳新进程,则将新进程插入就绪队列,等待被调度运行。
引起进程创建的事件
  • 用户登录
  • 作业调度
  • 提供服务
  • 应用请求

进程的终止

终止原语
  1. 根据被终止进程的标识符,检索出该进程的PCB,从中读出该进程的状态。
  2. 若被终止进程处于运行状态,立即终止该进程的执行,将处理机资源分配给其他进程。
  3. 若该进程还有子孙进程,则应将其所有子孙进程终止。
  4. 将该进程所拥有的全部资源,或归还给其父进程,或归还给操作系统。
  5. 将该PCB从所在队列(链表)中删除。
引起进程终止的事件
  • 正常结束,表示进程的任务己完成并准备退出运行。
  • 异常结束,表示进程在运行时,发生了某种异常事件,使程序无法继续运行,如存储区越界、保护错、 非法指令、特权指令错、运行超时、算术运算错、I/O故障等。
  • 外界干预,指进程应外界的请求而终止运行,如操作员或操作系统干预、父进程请求和父进程终止。

进程的阻塞和唤醒

阻塞原语
  1. 找到将要被阻塞进程的标识号对应的PCB。

  2. 若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行。

  3. 把该PCB插入相应事件的等待队列,将处理机资源调度给其他就绪进程。

引起进程阻塞的事件
  • 需要等待系统分配某种资源。
  • 需要等待相互合作的其他进程完成工作。
唤醒原语
  1. 在该事件的等待队列中找到相应进程的PCB。
  2. 将其从等待队列中移出,并置其状态为就绪态。
  3. 把该PCB插入就绪队列,等待调度程序调度。
引起进程唤醒的事件
  • 因何事阻塞,就应由何事唤醒。

进程的切换

切换原语
  1. 将运行环境信息存入PCB。
  2. PCB移入相应队列。
  3. 选择另一个进程执行,并更新其PCB。
  4. 根据PCB恢复新进程所需的运行环境。
引起进程切换的事件
  • 当前进程时间片到。
  • 有更高优先级的进程到达。
  • 当前进程主动堵塞。
  • 当前进程终止。

进程的通信



COPYRIGHT (c) OLENCER. ALL RIGHTS RESERVED.

  • Title: 进程与线程
  • Author: OLENCER.
  • Created at : 2023-07-03 18:30:00
  • Updated at : 2023-09-06 12:27:22
  • Link: https://olencer.github.io/考研/408/操作系统/进程与线程/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments