操作系统(3) 进程描述和控制

1.进程概念

1.1 进程和进程控制块

进程:程序在一个数据集上的一次执行过程

进程与程序的联系和区别

程序是静态的;进程是动态的(动态产生和消亡),而且一个进程运行时可以创建其他进程

一个程序可以对应一个进程,也可以对应多个进程(只要进程所对应的数据集不同)

进程的组成(进程映像):①程序代码 ②数据集、栈

③进程控制块(process control block 简写为PCB,PCB是进程存在的唯一标识,OS根据PCB中的属性控制进程)

概念补充

上下文:进程运行时CPU的寄存器数据集合(现场),包括用户可见寄存器和控制/状态寄存器等

分派器(即进程调度程序)调度时发生上下文切换:保存旧进程的上下文到它的PCB,从新进程的PCB恢复它的新上下文到寄存器

简单理解一个实例:设有一进程P0正在CPU上执行,某时刻P0发出I/O请求,发生了阻塞(或者是时间片结束,发生了中断),此时发生进程切换,这时候则引起上下文切换,保存现场到PCB0,放入队列,此时P1符合使用CPU的要求,则从PCB1中恢复现场,P1开始执行,执行过程发生中断(设此时P0的I/O结束,发生中断),发生进程切换,此时保存现场到PCB1,从PCB0中恢复现场,继续执行。

引入线程,由于实现了并发执行和资源共享,可带来资源利用率吞吐率的好处,但却增加了系统的时间空间开销

吞吐率原指一个业务系统在单位时间内提供的产量(或服务量)。在计算机或数据通信系统,指的是单位时间内通过某通信信道(a communication channel)或某个节点成功交付数据的平均速率,通常以每秒比特数(bps, bits per second )为单位。

资源利用率的定义各不相同,在操作系统层面上,可以集中观点在CPU上,即CPU的利用率等。

2.进程的创建和终止 

分派器的作用:选择并调度一个进程,使之占用CPU运行

进程创建:OS为该进程建立PCB(唯一标识),分配内存空间。

进程终止:回收内存,释放资源,销毁PCB

3. 进程的五状态模型

新建(new):进程正被创建。分配内存后将被设为就绪态

就绪(ready):进程已得到除CPU以外的其它所需资源

运行(running):进程的指令正在被运行

阻塞(等待)(blocking):进程正等待资源或者某事件发生

退出(exit):进程已正常或者异常结束,回收资源,善后

首先一个进程被新建,加载必要资源(除CPU外)内存等后进入就绪状态,等待分派器调度,当分派器指定该进程被调度时,进入运行状态,当在运行过程中,进程时间片完或者是更高优先级的进程被调度时,进程从运行态进入就绪态,等待再次被调度,如果是进程在运行过程中需要等待某事完成(如I/O),则此时进入阻塞状态,此时若有其他进程需要使用CPU,则会发生进程切换,分派指派新的进程执行,当需要等待的某事完成后,该进程从阻塞态恢复为就绪态,等待被分派器调度,当运行完成后,结束,退出

如图:

 

进程队列

处于同一状态的进程PCB组成一个进程队列

就绪队列:所有就绪进程按FCFS(first come first service)或者优先级顺序排队

等待(阻塞)队列:每一种等待事件对应于一个队列(比如说I/O的归到I/O的那一队,因为中断而阻塞的归到一队)

如图

PCB数量

OS中PCB数量固定或不固定,但总是有限的

1 、一个多任务双核处理机系统,其操作系统
UNIX PCB 表的规模是 100 行,则:
最多有 ____ 2 _____ 个进程处于运行态;
最多有 ____ 98 ____ 个进程处于就绪态
最多有____100__个进程处于阻塞态
解析:由于双核,由于CPU一个时刻内只能运行一个进程,那么最多只有两个进程同时运行
当所有进程都是就绪时,不可能所有进程都不运行(或者是阻塞状态,这个阻塞的前提条件也是进程进入了运行状态),那么最多只有98个进程是就绪态的
当所有的进程都因为I/O等时间需要阻塞时,这时候所有进程都阻塞。
2.设某 UNIX 中每个用户创建进程数最大为 50 个, 现有一用户执行某程序,该程序执行一死循环,循 环创建新子进程。则当该进程创建了 ___ 4 9 ___ 个子进程后不能再创建,该进程处于阻塞状态
解析:创建子进程可以以fork()函数来举例,此时相当于发生了系统调用(trap),是中断的一种,因此是阻塞状态

4.被挂起的进程-两种挂起态

为什么需要挂起?

内存不足,不得不把部分进程交换到磁盘

就绪挂起态、阻塞挂起态:外存就绪/阻塞态。由于内存有限,将原位于内存的就绪/阻塞进程(代码数据)换出到外存(磁盘)上

解除挂起:当挂起进程优先级高或内存空间足够时,把位于磁盘的挂起进程(代码数据)换入到内存中

 一个基本挂起态机制如上图所示,其中与挂起态无关的过程与五状态模型的运行机制完全一致,变为就绪挂起态的时机有三个:①当进程刚刚新建,但是内存不足,就会被直接加载到磁盘中去②当进程变为就绪态时但没有被调度而且内存不足时,也会被加载到磁盘中③当进程在运行中,内存不足时也会被挂起运行,变为就绪挂起态,阻塞挂起态相对简单,当一个进程长时间阻塞而又占用内存时,此时就会被换出到磁盘中,需要注意的是尽管代码数据被换出到外存了,但是PCB始终还是在内存中,

假设有些进程处于就绪态,有些处于就绪挂起态,而且至少有一个就绪挂起态进程的优先级高于所有就绪态进程,有两种极端策略:①总是调度处于就绪态的进程,以减少交换②总是调度优先级最高的进程,会导致不必要的交换。

请给出一种均衡考虑优先级和交换性能的中间策略

一种折中的方案是:将就绪挂起进程降低1-2个优先级,如果它仍然高于所有就绪进程的最高优先级,那么就将它换入内存执行。 

5.进程描述

 5.1 操作系统的控制结构

 OS构造而且维护所管理的每个实体的信息表,4类:

 ①内存表:跟踪内存(实存)和外存(虚拟内存)

 ②I/O表:管理I/O设备和通道

 ③文件表:文件属性

 ④进程表:PCB集合

 5.2 进程的控制结构-PCB

 PCB:进程属性的集合,在OS中进程表包含了所有进程的PCB,创建新进程时,分配进程表中一个空闲PCB,填写属性,在进程终止时回收PCB

 

该图解释了PCB表是如何与寄存器等基础设施进行进程控制的,首先PCB表中有索引,以该索引来表示表示该表项控制哪一个进程,基址寄存器则是标明了当前进程的代码数据所在内存的基址位置,而界限寄存器则是标明了当前进程的代码数据结束的地址位置,程序计数器则是存储了当前进程执行的指令,通过这么一套配合下来,实现进程的访问控制。

5.3 PCB的属性解析 

 

 5.4 进程控制结构-(program status word,psw)PSW 

 程序状态字寄存器:指明CPU当前特权级别、中断屏蔽码(中断优先级等)

6.进程控制

CPU有两种执行模式(CPU状态)该状态由PSW中的模式位指示:

用户态:只能执行非特权指令

系统态:也称核心态、内核态、特权态、控制态、管态。可以执行所有的指令(特权指令和非特权指令),使用所有资源以及改变CPU状态

两类指令:特权指令:在系统态下执行的指令(OS内核使用)非特权指令:用户态下执行(用户程序)

6.1 执行模式-CPU特权级别

当CPU要执行特权指令时,会引起“陷入trap”,也就是CPU由用户态切换到系统态(称为模式切换),然后去执行OS内核中的一段(特权指令)代码。可以简要描述为:首先CPU在执行用户指令,此时是用户态,此时要执行特权指令,则会转入系统态,执行内核代码,完成后则由转回用户态,继续执行非特权指令。

CPU从用户态到系统态的时机:①执行系统调用(即内核代码,由OS提供服务)时②发生中断或异常时,执行中断处理程序

从系统态到用户态的过程:系统调用或中断处理完毕之后,执行IRTE(中断返回)指令,恢复原进程的PSW,回到用户态。

一个简单的例子:当CPU在用户态下执行指令时,此时需要系统调用或者中断处理,就会从用户态转为系统态,注意,当在系统态下发生中断嵌套时,响应另一中断、中断返回在系统态运行时也可以响应中断

下列选项中,不可能在用户态下 发生 的是(C)
A.系统调用 B.外部中断 C.进程切换 D.缺页
解析:注意问题问的是在用户态下发生。
A.系统调用可以是在用户程序执行时发出,请求操作系统的服务。
B.外部中断也可以在用户执行时发生,例如外部的设备断电等
C.进程切换是在进程调度中发生,而进程调度是在内核中进行的,因此是系统态下执行,故选C
D.用户在请求Cache内的内容时,若所需要的数据不在页中,这时候就会发生缺页,是可以存在的
可以在用户态下执行处理的指令是__(D)__
A.关中断 B.输入/输出 C.系统调用 D.从内存中取数
解析:注意输入、输出、系统调用和中断处理都属于OS内核
发生模式切换可以不改变当前运行态进程的状态(√)

7.进程创建

创建新进程的步骤:

①给新进程分配一个新的PCB和唯一的PID

②给进程分配内存空间(代码、栈、数据)

③初始化PCB:各属性取默认值或者所请求的值,在UNIX中,子进程PCB基本复制自父进程PCB

④将PCB放置到就绪队列或就绪挂起队列

⑤创建其他数据结构:如记账、日志等

8.进程切换

何时进行进程切换?

中断发生时:如时钟中断。当前进程的时间片结束,让出CPU,调度新进程,因此发生新旧进程切换

陷阱发生时:当前进程的指令产生错误或异常,非致命时重试或者报告,致命时将直接结束本进程,调度新进程

当前进程执行系统调用时,通常会被阻塞,让出CPU

进程切换的步骤:

①保存当前的上下文到对应的进程PCB上(保存现场),更新PCB,将PCB转移到相应的就绪队列或者阻塞队列

②选择(调度)另外一个就绪进程,准备执行

③更新该进程PCB,从就绪队列中移出,更新内存管理的数据结构(如设置页表指针、基址/界限寄存器)将该进程的上下文恢复到寄存器中

进程创建时,不需要为该进程做的是(D)
A.填写进程表(PCB)项
B.分配内存
C.将它插入就绪队列
D.分配CPU
解析:创建时未进入运行状态,在运行之前做的工作都仅仅是分配内存,分配地址等工作,分配CPU是在即将要运行时才进行
___一定会引起进程切换
A.一个进程创建后,进入就绪状态
B.一个进程由运行状态变为就绪状态
C.一个进程从阻塞状态变为就绪状态
D.以上答案都不对
解析:这道题可以这么理解,由于题目未提及发生中断的情况,因此都是①③种情况,此时都是针对CPU的,只需要在ABC中看哪个选项的CPU执行对象发生了变化,A只是将进程送入了就绪队列,未涉及CPU,不选,B一个进程由运行切换为就绪,那么是CPU让出了给别的进程,发生了进程切换,C与A同理

进程类型

孤儿进程:其父进程已经结束的进程

僵尸进程:已经exit(),但其PCB依然存在,但其父没有调用wait()函数等待其结束,也没有忽略SIGCHLD信号,该进程处于僵尸状态 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值