进程管理

处理机管理也称为进程管理,其核心是如何合理地分配出理时间,提高系统地效率。在计算机系统中有多个并发执行程序,采用“程序”这个静态地概念已经不能描述程序执行时动态变化的过程,所以引入了“进程”。

进程的特性

  • 顺序性:程序的各程序段严格按照规定的顺序执行;
  • 封闭性:程序运行时系统内的资源只受该程序控制而改变,执行结果不受外界因素的影响。
  • 可再现性:只要程序执行环境和初始条件相同,多次执行的结果一致。

进程(Process)是程序的一次执行,是进行资源分配和调度的基本单位。进程通常由程序、数据和进程控制块(PCB)组成。
image.png

三态模型:
image.png
五态模型:
image.png

原语(Primitive)是指由若干条机器指令组成的、用于完成特定功能的程序段。原语的特点是在执行时不能被分割,即原子操作要么都做,要么都不做。内核中所包含的原语主要由进程控制原语、进程通信原语、资源管理原语以及其他原语。属于进程控制方面的原语有进程创建原语、进程撤销原语、进程挂起原语、进程激活原语、进程阻塞原语以及进程唤醒原语等。

进程通讯:

  1. 互斥
  2. 同步
  3. 临界区管理
    image.png
  4. 信号量机制 PV 操作
    image.png

PV 操作例题

pv 操作必考,多多注意。
image.png

S1 表示缓冲区是否空间的同步量,S2 是表示是否有数据的同步量。缓冲区初始为空闲,所以初值为 1。数据需要进程 P1 生产,初始为 0。P1 生产数据,然后占用缓冲区 P(S1),将数据放入缓冲区 V(S2);消费者 P2 取出数据 P(S2),使用数据 V(S1)。

image.png

image.png

image.png

  1. 共享内存
  2. 消息传递模式:进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信。如 Send(A)、Receive(A)。、
  3. 管道通信:管道是用于连接一个读进程和一个写进程以实现它们之间通信的共享文件(pipe 文件)。向管道提供输入的发送进程(即写进程),以字符流的形式将大量的数据送入管道;接收进程可从管道接收大量的数据。

调度算法:

  • 先来先服务:按照作业提交或进程变为就绪状态的先后次序分配 CPU,即每当进入进程调度时,总是将就绪对列队首进程投入运行。FCFS 调度法比较有利于长作业和 CPU 繁忙作业;而不利于 I/O 繁忙作业。FCFS 算法主要用于宏观调度。
  • 时间片轮转:时间片轮转算法主要用于微观调度,其设计目标是提高资源利用率。通过时间片轮转,提高进程并发性和响应时间特性,从而提高资源利用率。时间片的长度可从几个 ms 到几百 ms,选择的方法一般有以下两种:
    • 固定时间片:分配给每个进程相等的时间片,使所有进程都公平执行,是一种实现简单有效的方法。
    • 可变时间片:根据进程不同的要求对时间片的大小实时修改,可以更好地提高效率。
  • 优先级调度
    • 静态优先级:进程的优先级在创建时确定,直到进程终止都不会改变。确定优先级的因素有进程类型(系统进程优先级较高)、对资源的需求(如对 CPU 和内存需求较少的进程优先级较高)和用户要求(如紧迫程度)。
    • 动态优先级:在创建进程时赋予一个优先级,在进程运行过程中还可以改变,以便获得更好的调度性能。例如:在就绪队列中,随着等待时间增长,优先级将提高。这样,对于一个优先级较低的进程在等待足够的时间后,其优先级提高到可被调度执行。进程每执行一个时间片,就降低其优先级,从而当一个进程持续执行时,其优先级会降低到让出 CPU。
  • 多级反馈调度:多级反馈队列算法是时间片轮转算法和优先级算法的综合与发展。其优点是照顾短进程以提高系统吞吐量、缩短了平均周转时间;照顾 I/O 型进程以获得较好的 I/O 设备利用率和缩短响应时间;不必估计进程的执行时间,动态调节优先级。

死锁
image.png

产生死锁的条件:

  1. 互斥条件:进程对其所要求的资源进行排他性控制,即一次只允许一个进程使用。
  2. 请求保持条件:零星的请求资源,即已获得部分资源又请求资源被阻塞。
  3. 不可剥夺条件:进程已获得的资源在未使用完之前不能被剥夺,只能在使用完时由自己释放。
  4. 环路等待条件:当发生死锁时,在进程资源有向图中必然构成环路,其中每个进程占有了下一个进程申请的一个或多个资源,如图所示。

image.png

赢行家算法:
当一个进程对资源的最大需求量不超过系统中剩余资源数时,可以将资源分配给此进程,使其能够正常运行。
进程可以分批请求资源,但请求的总数不能超过此进程的最大需求量。
当系统现有的资源不能满足进程尚需资源数时,对进程的资源请求可以推迟分配,但总能使进程在有限时间内得到所需资源。

image.png

线程:
传统的进程有两个基本属性:可拥有资源的独立单位,可独立调度和分配的基本单位。由于在进程的创建、撤销和切换中,系统必须为之付出较大的空间开销,因此在系统中设置的进程数目不宜过多,进程切换的频率不宜太高,这就现指令并发程度的提高。引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的空间开销。

存储管理

image.png

地址重定位:将逻辑地址转换成主存物理地址的过程称为地址重定位。

image.png

image.png

内存分配算法:

image.png
image.png

image.png

分页管理

将一个进程的地址空间划分成为若干个大小相等的区域,称为页。相应的,将主存空间划分成与页相同大小的若干个物理块,称为块或页框。为进程分配主存时,可将进程中若干页分别装入多个不相邻接的块中。

image.png

image.png

这里后续需要完善一下

文件管理

image.png

空闲区表:

image.png

位示图:

位示图:这种方法是在外存上建立一张位示图(bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。文件存储器上的物理块依次编号为0,1,2,……。假如系统中字长为32位,那么在位示图中的第一个字对应的文件存储器上的0,1,2,……,31号物理块;第二个字对应文件存储器上的32,33,34,……,63号物理块,依次类推。

位示图的大小由磁盘空间的大小(物理块总数)决定,其描述能力很强,适合各种物理结构。例如,大小为120GB 的磁盘,物理块的大小为4MB, 那么,位示图的大小为:120*1024/4/8=3840B

image.png

作业管理

image.png

例题(搞懂就可以了):

image.png

image.png

image.png

采用短作业优先调度策略时,作业调度是根据作业的运行时间,优先选择计算时间短且资源能得到满足的作业。由于作业1,2,3是依次到来的,所以当开始时系统中只有作业1,于是作业1先被选中。在10.0时刻,作业1运行完成,这时系统中有两道作业在等待调度(作业2和作用3),按照短作业优先调度算法,作业3只要运行0.1个时间单位,而作业2要运行1个时间单位,于是作业3被优先选中,所以作业3先运行。待作业3运行完毕,再运行作业2. 作业调度的次序是1,3,2,如下图所示:

image.png

image.png

显然,作业的平均周转时间越短,意味着这个作业在系统中停留的时间越短,因而系统的利用率也就越高。另外,也能使用户都感到比较满意。因此,用平均周转时间和平均周转系数来衡量调度性能比较合理。就平均周转时间和平均周转系数来说,最短作业优先算法最小,先来先服务算法最大,响应比高者优先算法居中。

设备管理

通道技术:
引入通道的目的是使数据的传输独立于 CPU,将 CPU 从繁琐的 I/O 工作种解脱出来。设置通道后,CPU 只需向通道发出输入/输出命令,通道收到命令后,从内存中取出本次输入/输出要执行的通道程序加以执行,当通道完成输入/输出任务后,才向 CPU 发出中断信号。
由于通道价格昂贵,因此计算机系统中的通道数量有限,这往往会成为输入/输出的“瓶颈”问题。一个单通路的 I/O 系统中主存和设备之间只有一条通路。一旦通道被占用,即使另一通道空闲,链接此通道的其他设备只有等待。

DMA 技术:
直接内存存取是指数据在内存与输入/输出设备之间实现直接成块传送,即在内存与输入,即在内存与输入/输出设备之间传送一个数据块的过程中,只需要 CPU 在开始与结束时进行处理,实际操作过程由 DMA 硬件直接执行完成,CPU 在此传送过程中可执行别的任务。例如,需要打印2048字节的数据,在 DMA 方式下,若一次 DMA 可传送512字节,则只需要执行4次输出指令和处理4次打印机中断。若一次 DMA 可传送字节数大于等于2048字节,则只需要执行一次输出指令和处理一次打印机中断。

缓冲技术:
缓冲技术可提高外设利用率,尽可能使外设处于忙状态。缓冲技术可以采用硬件缓冲和软件缓冲。硬件缓冲是利用专门的硬件寄存器作为缓冲,软件缓冲是通过操作系统来管理。引入缓冲的主要目的如下:
(1)缓和 CPU 与输入/输出设备间速度不匹配的矛盾;
(2)减少对 CPU 的中断频率,放宽对中断响应时间的限制;
(3)提高 CPU 和输入设备之间的并行性。
在所有的输入/输出设备与处理机(内存)之间,都使用了缓冲区来交换数据,所以操作系统必须组织和管理好这些缓冲区。缓冲可分为单缓冲、双缓冲、多缓冲和环形缓冲。

Spooling 技术:
Spooling(Simultaneous Peripheral Operation On-Line,外部设备联机并行操作)是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。Spooling 技术用一类物理设备模拟另一类物理设备,使独占使用的设备变成多台虚拟设备,它也是一种速度匹配技术。Spooling 系统由“预输入程序”、“缓输出程序”和“井管理程序”以及输入和输出井组成。其中,输入井和输出井用于存放从输入的信息以及作业执行的结果,是系统在辅助存储器上开辟的存储区域。