这是你👱🏻‍的亡🐏补牢 因为你👱🏻‍马上就要被🐏了

你👱🏻‍在操作系统这里相比于其他的确实沾点沉默寡言,你👱🏻‍觉得复习这玩意就沾点恶心,让你👱🏻‍怀疑你👱🏻‍是不是学的文科,怎么这么🐔8️⃣多东西,也不说个重点,就🐔8️⃣硬看。

(里面的很多图片都是你👱🏻‍搞的别处的,必须声明一下防止被🐏,你👱🏻‍只是个搬运工 但是你👱🏻‍还是发表点看法)

前趋图和程序执行

前趋图

前趋图,是指一个有向无环图,它用于描述进程之间执行的先后顺序。

图中的每个节点均可用于表示一个进程或一段程序,甚至是一条语句,节点间的有向边则表示两个节点之间所存在的偏序或前趋关系。

你👱🏻‍给你整个题让你clear一下。
画出下面4条语句的前趋图(符号“:=”是赋值的意思)
S1:a:=x+y

S2:b:=z+1

S3:c:=a-b

S4:w:=c+1

分析:

S1与S2可以并发执行,因为它们互不依赖;

但是S3必须在a(S1)、b(S2)被赋值后才能执行,S4必须在c(S3)之后才能执行。

画图:

具有如图所示的前趋关系:

你👱🏻‍:more!

画出下面6条语句的前趋图(符号“:=”是赋值的意思)

S1:a:=x + y;

S2:b:=z + 1;

S3:c:=a - b;

S4:e:=c+1;

S5:f:=c+a;

S6:g:=e * f;

分析:
S1与S2可以并发执行,因为它们互不依赖;但是S3必须在a(S1)、b(S2)被赋值后才能执行,S4必须在c(S3)之后才能执行,S5必须在c(S3)被赋值后才能执行,S6必须在e(S4)、f(S5)被赋值后才能执行。

画图:

具有如图所示的前趋关系:

程序顺序执行

1.程序的顺序执行
顺序执行:按照顺序进行执行。

顺序性:严格按照顺序执行,前一个结束后一个才能执行

封闭性:程序运行时独占资源,只有程序本身才能改变机器各种资源的状态。

可再现性:结果与执行速度无关,只与初始条件有关。给定相同的输入,输出结果一定相同。

2.程序的并发执行

多道程序系统执行环境的变化可以引起多道程序的并发执行。一组在逻辑上相互独立的程序或程序段在执行过程中其执行时间在客观上相互重叠,即一个程序尚未结束、另一个程序的执行已经开始的执行方式。

间断性:共享资源的使用使得在并发程序之间有相互制约。相互制约导致并发程序具有:执行-暂停-执行 这种间断性的活动规律。

失去封闭性:多个程序共享资源,执行时必定会受到其他程序的影响。

不可再现性:失去封闭性,也同时失去了不可再现性。资源的利用状况和环境有关,不能保证每次同一个输入有着相同的输出。

进程的描述

进程的定义与特征

对于进程,从不同的角度可以给出不同的定义,其中有

行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程。

具有一定功能的程序在某个数据集合上的一次活动。

进程是一个程序与其数据一道通过处理机的执行所发生的活动。

进程是指进程实体的运行过程,是系统进行资源分配和调度的独立单位。

程序的执行过程,从开始到结束

你👱🏻‍:多少沾点屁事多,不给你👱🏻‍个准信

进程的特征:

结构性:由程序(段)、数据(段)、进程控制块(PCB)三部分组成;

动态性:进程是程序的执行过程;

并发性:多个进程可同存于内存中,能在一段时间内同时运行;

独立性:独立运行的基本单位,独立获得资源和调度的基本单位;

异步性:各进程按各自独立的不可预知的速度向前推进。 

进程与程序的区别:
程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。程序是静态的,进程是动态的;

程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的;

进程更能真实地描述并发,而程序不能;

进程是由程序和数据、进程控制块PCB三部分组成的;

进程具有创建其他进程的功能,而程序没有

同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程 

属于是你👱🏻‍的意外收获

进程的基本状态与转换

1.进程的3种基本状态

就绪状态(Ready R态):存在于处理机调度队列中的所有进程,它们已经准备就绪,一旦得到CPU,就立即可以运行。这些进程所处的状态为就绪状态

运行状态(Running E态):正在运行的进程所处的状态为运行状态

等待/阻塞/睡眠状态(Wait/Blocked B态):若一进程正在等待某一事件发生(如等待输入输出工作完成),这时,即使给它CPU,它也无法运行,称该进程处于等待状态(阻塞、 睡眠、封锁状态)

就绪队列:处于就绪状态的进程按一定的策略排队,同一时刻可有多个就绪队列。

阻塞队列:根据阻塞原因可以设置多个队列。

进程的状态变迁图:

状态进程模型:

你👱🏻‍觉得挺有用的brainstorm:如果系统中有N个进程,运行的进程最多几个,最少几个;就绪进程最多几个最少几个;等待进程最多几个,最少几个?

运行:1 0

就绪:N-1 0

等待:N 0

挂起操作和进程状态的转换

1.挂起操作的引入
引入挂起操作主要是为了满足下列需要

     终端用户的需要
     父进程的需要
     负荷调节的需要
     OS的需要

2.引入挂起操作后进程3个基本状态间的转换

     活动就绪➡️禁止就绪
     活动阻塞➡️静止阻塞
     静止就绪➡️活动就绪
     静止阻塞➡️活动阻塞        


3.引入挂起操作后进程5个基本状态间的转换

     NULL➡️创建:
     创建➡️活动就绪:
     创建➡️静止就绪:
     执行➡️终止:

你👱🏻‍:增加了创建状态和终止状态后,具有挂起状态的进程状态图

你👱🏻‍:整点例题耍耍

下列选项中,会导致进程从执行态变为就绪态的事件是(【D】)。(2015年考研统考真题)

A. 执行P操作

B. 申请内存失败

C. 启动I/O设备

D. 被高优先级进程抢占

A、B和C都因为请求某一资源会进入阻塞态,而D只是被剥夺了处理机资源,进入就绪态,一旦得到处理机即可运行

下列选项中,可能导致当前进程P阻塞的事件是(【AB】)。(2018年考研统考真题)

A. 进程P申请临界资源

B. 进程P从磁盘读数据

C. 系统将CPU分配给高优先权的进程

D. 上述答案都对

进程等待某资源为可用(不包括处理机)或等待输入输出完成均会进入阻塞态,即A,B正确;

系统将CPU分配给高优先权的进程,会使当前进程从运行态变为就绪态,即 C错误

进程管理中的数据结构

1.OS中用于管理资源和控制进程的数据结构

2.PCB的作用
为了便于系统描述和管理进程,OS为每个进程专门定义一个数据结构——PCB

PCB是OS中最重要的记录型数据结构

PCB是OS感知进程存在的唯一标志。
进程与PCB是一一对应的。
PCB随进程创建而建立,随进程结束而回收
PCB应常驻内存

PCB的作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位。

作用:

  作为独立运行基本单位的标志
  实现间断性运行方式
  提供进程管理所需要的信息
  提供进程调度所需要的信息
  实现与其他进程的同步与通信

3.PCB中的信息

进程标识符(唯一,通常是一个整数)

  外部标识符(方便用户或者进程对进程的访问,须为每个进程设置一个外部标识符,由创建者提供,通常由字母和数字组成。为了描述进程的家族关系,还应设置父进程标识符和子进程标识符。此外,还可设置用户标识符,以指示拥有该进程的用户)

  内部标识符(为了方便系统对进程的使用,赋予每个进程唯一的一个数字标识符,通常是一个进程的符号)

处理机状态

处理机状态信息,也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成的。

寄存器:
(1)通用寄存器
(2)指令计数器
(3)程序状态字寄存器
(4)用户栈指针寄存器

进程调度信息

OS在进行进程调度时,必须了解进程的状态以及有关进程调度的信息,这些信息,这些信息包括:

进程状态
进程优先级
进程调度所需要的其他信息
事件(指进程由执行状态转换为阻塞状态所等待发生的事件,即阻塞原因)

进程控制信息:

程序和数据的地址
进程同步和通信机制
资源清单
链接指针

PCB的组织方式
常用的组织方式有以下3种:

线性方式(将所有PCB都放到一个表(连续的线性存储区)中)

链接方式(建立索引表和阻塞索引表,用指针连接)

索引方式(将PCB组成队列,形成就绪队列、阻塞队列、运行队列等等)

你👱🏻‍:不来点例题怎么表示会了

图中()

A.有1个运行进程、2个就绪进程、4个阻塞进程
B.有2个运行进程、3个就绪进程、2个阻塞进程
C.有1个运行进程、3个就绪进程、3个阻塞进程
D.有1个运行进程、4个就绪进程、2个阻塞进程

从图中可看出, 每个索引表指向了三个PCB, 因此就绪进程和阻塞进程都是3个

你👱🏻‍:选C

进程控制

进程的创建

1.进程的层次结构

在OS中,允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,而被创建的进程称为子进程。子进程可以继续创建其自己的子进程,由此便形成了进程的层次结构。

子进程可以继承父进程所拥有的资源,撤销父进程时,也必须同时撤销其所有子进程。

2.进程图

为了形象描述一个进程的家族关系而引入了进程图(你👱🏻‍:树状图看得懂吧)

3.引起进程创建的事件

     用户登录
     作业调度
     提供服务
     应用请求

4.进程的创建

在系统中每当出现创建新进程的请求时,OS便会调用进程创建原语,并按以下步骤创建一个新进程

  申请空白PCB
  为新进程分配其运行所需的资源,包括各种物理和逻辑资源
  初始化PCB
  如果进程就绪队列能够接纳新进程,就将新进程插入就绪队列

当进程创建新进程时,有两种执行的可能:

  父进程与子进程并发执行
  父进程等待,直到某个或全部子进程执行完毕

新进程的地址空间也有两种可能

  子进程是父进程的复制品
  子进程加载另一个新程序

进程的终止

1.引起进程终止的事件

  正常结束(进程的任务已经完成,准备退出运行)
  异常结束(程序在运行时,发生了某种异常事件,使得程序无法继续运行)
  外界干预(指进程应外界的请求而终止运行)

2.进程的终止过程

当系统中发生了要求终止进程的某事件后,OS便会调用进程终止原语,按下述步骤终止指定的进程:

   根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,并从该进程的PCB中读出该进程的状态
  
   若处于执行态,则立刻终止该进程的执行,并指示该进程被终止后应重新进行调度
   
   若该进程还有子孙进程,则还应终止其所有子孙进程
   
   将被终止的进程所有的全部资源,或归还给其父进程,或归还给系统
   
   将被终止进程的PCB从所在队列中移出,等待其他程序来搜集信息