【操作系统】小白看过来!进程的基本概念 进程控制块 进程状态转换

进程

进程定义是:一个正在执行的程序

程序(书上说的是进程)有两个基本元素,一是程序代码,二是与代码相关的数据集。

当处理器开始执行这个程序代码,就有了新的元素:

  1. 标识符:身份证

  2. 状态:正在执行就是处于运行态

  3. 优先级

  4. 程序计数器:存储下一条指令地址

  5. 内存指针:包括程序代码和数据集的指针,以及 与其他进程 共享内存块的指针

  6. 上下文:进程执行时,处理器的寄存器中的数据

  7. I/O状态信息 记账信息(处理器时间总和啊等等)

以上!!这么些元素我们统一管理存放在 PCB 进程控制块 里!

因此系统可以随意中断、将其他进程置为运行态,并把程序计数器/上下文加载到处理器寄存器中,然后执行这个进程

因此,可以说进程由 程序代码、数据集、进程控制块 构成。

进程模型

进程状态

观察可得,任何时刻一个进程要么执行、要么未执行。

所以构建了模型有俩状态:运行态、未运行态

操作系统创建一个新的进程时,会将其以未运行态加入系统,操作系统知道这个进程存在,同时它在等机会上位。操作系统中的进程会被不时的中断,这是人力管理(分派器)就会找机会选择新进程运行,并且切换它的状态。

未运行进程必须位于某种类型的队列中,等待执行时机。

进程创建

将一个新进程添加到进程集时,操作系统需要 建立用于管理该进程的数据结构,并在内存中分配地址空间。

五状态模型

新建、运行、就绪、阻塞/等待、退出态

进程处于新建态时,程序保留在外存中,通常是磁盘

对其需要有一种有效的数据结构进行维护

等待进程会被存放到等待队列(会按优先计划分队列),准备就绪时,会被爱加载到就绪队列等待调度。

被挂起的进程

当内存不存在就绪态的进程时,操作系统会把被阻塞的进程换到磁盘的挂起队列,即临时提出进程队列。

接着要么从挂起队列取出另一个进程,要么接受一个新进程的请求,放入内存运行。

所以上面位于挂起队列的进程我们称为 挂起态

那这时候有个矛盾了,位于挂起队列的理论来讲都是处于阻塞状态,因此没有必要把它换回来呀。

实际上,他们都是在等一个对的人(阻塞在某个特定事件),当ta出现了(发生该事件),进程集就可以执行了,因此又引入了两个状态即:阻塞/挂起态 和 就绪/挂起态(已经等到阻塞事件的发生,换到内存就能跑了)

进程描述

系统中的进程在执行期间都需要访问某些系统资源,如处理器、IO设备和内存。

操作系统控制结构

操作系统为了管理进程和资源分配,必须掌握进程和资源的当前状态。

通常采用的方法是,操作系统构造并维护管理每个实体的 信息表,操作系统会维护下面四种不同类的表。在这里插入图片描述

内存表用于跟踪内存和外存。

内存一部分是系统用,另一个部分是进程使用。

外存中保存的进程 使用某种虚存 或 简单地交换机制。

表中还包含

  1. 分配给进程的内存
  2. 分配给进程的外存
  3. 内存块/虚存块的任何保护属性,比如哪些进程可以访问某些共享内存区域
  4. 管理虚存所需要的任何信息

I/O表用来管理计算机系统的I/O设备和通道,是否可用的信息都会系统监控。

文件表提供关于文件是否存在、文件在外存的位置、当前状态等属性信息。

进程表管理进程,也会对上面三表的资源直接/间接引用。后文详细讲。

进程控制结构

进程映像中典型的元素有四个

数据、程序、进程控制块前文都将过了

这里还有一个 :用于保存你参数、过程调用地址和系统调用地址。

进程映像的位置取决于所采用的内存管理方案。最简单的情形下,进程映像保存在相邻/连续的内存块中。

它的存储块是位于外存的,因此在操作系统管理进程时,进程映像至少应有一部分在内存!而要执行该进程,需要将整个进程映像载入内存/起码也得载入虚存。因此操作系统要知道进程在磁盘的位置,还要知道在内存中的位置。

现代操作系统中,因为分页技术的发展,进程映像的一部分可在内存中,剩余部分可在外存中。因此呢,操作系统维护的进程表必须给出每个进程映像中的每页的位置。

进程属性

进程控制块信息分为三大类:

  1. 进程标识信息:身份信息
  2. 进程状态信息:包括处理器状态信息等
  3. 进程控制信息:是操作系统控制和协调各种活动进程需要的额外信息。进程间通信、进程特权、存储信息、资源所有权等等。

进程控制

执行模式

大多数处理器至少支持两种执行模式:

用户模式 和 系统/内核模式

使用两种模式的原因是保护操作系统和重要的操作系统表(如进程控制块)不受用户程序的干扰。

内核模式下,软件会完全控制处理器及其所有指令、寄存器、内存等。

进程创建

创建一个新进程时,会有如下步骤:

  1. **为进程分配一个唯一的进程标识符 **。此时,主进程表中会添加一个新表项,每个进程对应一个表项
  2. 为进程分配空间。这包括了进程映像中的所有元素。
  3. 初始化进程控制块。多数项目通常初始化为0,程序计数器置为程序入口点,系统栈帧定义进程栈边界。
  4. 设置正确的连接。若操作系统将每个调度队列都维护一个链表,需要放入链表中。
  5. 创建扩充其他数据结构。维护一个记账文件,方便程序性能评估。

进程切换

出现中断时,处理器会做如下工作:

  1. 程序计数器置为中断处理程序的开始地址
  2. 用户模式->内核模式,方便中断处理代码包含特权指令

处理器现在继续取指界断面,并取中段处理程序的第一条指令来服务中断,此时将已中断上下文保存在中断程序的进程控制块中。

上下文是什么

必须包含中断处理程序可能改变的所有信息,以及恢复被中断程序时所需要的所有信息。因此,必须保存称为处理器状态信息的进程控制块部分,包括程序计数器、其他处理器寄存器和栈信息。

操作系统精髓与设计原理.第九版

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值