操作系统学习:进程管理

知识总览

操作系统学习:进程管理_第1张图片

进程的定义

操作系统学习:进程管理_第2张图片
单道程序:在计算机当中,同一时间段内只能有一个程序在运行,系统的各个资源都为其这唯一一个程序服务。在内存当中会记录该程序的程序段以及数据段,以方便该程序的进行。
操作系统学习:进程管理_第3张图片
在引入多道程序技术之后,同一时刻计算机当中将会有多个程序在并发运行。同样在内存当中也会存储各个并发运行的程序的程序代码,那么操作系统如何找到这些程序相关的信息呢?依靠的是进程控制块。
操作系统学习:进程管理_第4张图片

进程的组成

进程(进程实体)由程序段、数据段、PCB三部分组成。
操作系统学习:进程管理_第5张图片
操作系统学习:进程管理_第6张图片

PCB详解

操作系统学习:进程管理_第7张图片

进程的组织

操作系统学习:进程管理_第8张图片

进程的组织方式—链接方式

操作系统学习:进程管理_第9张图片

进程的组织—索引方式

索引方式和链接方式很相似,反正我感觉差不多都是一样的。
操作系统学习:进程管理_第10张图片

进程的特征

操作系统学习:进程管理_第11张图片

回顾

操作系统学习:进程管理_第12张图片

进程的状态和转换

操作系统学习:进程管理_第13张图片

进程的五种状态


操作系统学习:进程管理_第14张图片

进程状态的转换

操作系统学习:进程管理_第15张图片
操作系统学习:进程管理_第16张图片

进程控制

操作系统学习:进程管理_第17张图片

什么是进程控制

操作系统学习:进程管理_第18张图片

如何实现进程控制

操作系统学习:进程管理_第19张图片
详细过程如下:
初始机器状态如下:
操作系统学习:进程管理_第20张图片
现在我们创建一个进程:
操作系统学习:进程管理_第21张图片
创建完成之后,进程就由创建态转化为就绪态,修改PCB当中的内容和相应队列(将该进程调入就绪队列中:
操作系统学习:进程管理_第22张图片
然后等到时机成熟(所需要的系统资源拿到了或者处理机的时间片轮到该进程了),该进程则会被调入CPU处理机中进行运行:
操作系统学习:进程管理_第23张图片
为什么需要恢复进程运行环境?

这是很自然的,因为该进程可能之前已经被CPU工作过,出于某种原因暂时中止了,所以当再次轮到该进程使用CPU时就需要根据PCB当中的状态信息恢复该进程当时中止运行时的运行环境。

然后是运行态转化为阻塞态,该进程将会进入对应发生的事件的阻塞队列当中去:
操作系统学习:进程管理_第24张图片
阻塞态转化为运行态:

操作系统学习:进程管理_第25张图片
完整版本如下:

上述过程存在一个问题:
如果一个进程从某个队列转移向另一个队列,然而我们并没有把PCB中对应的状态标志给改变,这种情况就是非常危险的,会导致严重的系统错误。
为了防止这个问题,我们使用了原语来实现进程的控制:
操作系统学习:进程管理_第26张图片

进程控制相关的原语

操作系统学习:进程管理_第27张图片
操作系统学习:进程管理_第28张图片

操作系统学习:进程管理_第29张图片

回顾

操作系统学习:进程管理_第30张图片

进程通信

总览

操作系统学习:进程管理_第31张图片

进程通信概念

操作系统学习:进程管理_第32张图片

共享存储

共享存储方式下,操作系统会在内存空间中开辟一块共享的空间,这个空间就可供两个进程之间进行信息交换。
操作系统学习:进程管理_第33张图片

管道通信

操作系统学习:进程管理_第34张图片

那么管道通信中数据传输是怎么实现的呢?
首先进程1会往管道中写入数据:操作系统学习:进程管理_第35张图片
当管道中的数据写满了之后,进程2从会开始从这个管道中读数据:
操作系统学习:进程管理_第36张图片
当进程2将管道中的数据全部读出后,进程1又才能开始往管道中写入数据。
操作系统学习:进程管理_第37张图片

消息传递

操作系统学习:进程管理_第38张图片

回顾

操作系统学习:进程管理_第39张图片

线程概念和多线程模型

总览

操作系统学习:进程管理_第40张图片

什么是线程,为什么要引入线程

操作系统学习:进程管理_第41张图片
操作系统学习:进程管理_第42张图片
操作系统学习:进程管理_第43张图片

引入线程机制所带来的变化

操作系统学习:进程管理_第44张图片

线程的属性

操作系统学习:进程管理_第45张图片

线程的实现方式

用户级线程:
操作系统学习:进程管理_第46张图片
内核级线程:
操作系统学习:进程管理_第47张图片
二者组合方式中的线程实现方式:
操作系统学习:进程管理_第48张图片

多线程模型

在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题。

多对一模型

操作系统学习:进程管理_第49张图片

一对一模型

操作系统学习:进程管理_第50张图片

多对多模型

操作系统学习:进程管理_第51张图片

回顾

操作系统学习:进程管理_第52张图片

处理机调度的概念、层次

总览

操作系统学习:进程管理_第53张图片

调度的基本概念

以生活中的例子举例:
操作系统学习:进程管理_第54张图片

调度的三个层次–高级调度

操作系统学习:进程管理_第55张图片

调度的三个层次–中级调度

操作系统学习:进程管理_第56张图片
补充知识:进程的挂起态与七状态模型(408不考)
操作系统学习:进程管理_第57张图片

调度的三个层次–低级调度

操作系统学习:进程管理_第58张图片

三层调度的联系和对比

操作系统学习:进程管理_第59张图片

回顾

操作系统学习:进程管理_第60张图片

进程调度的时机、切换与过程、方式

总览操作系统学习:进程管理_第61张图片

进程调度的时机

下面这种情况是不允许进程在处于内核程序临界区时进行处理机调度以及切换的:
操作系统学习:进程管理_第62张图片
而有些时候处于普通临界区的临界区时又是可以进行进程切换的,比如打印机这台设备被进程使用的情况:
操作系统学习:进程管理_第63张图片
操作系统学习:进程管理_第64张图片

进程调度的方式

操作系统学习:进程管理_第65张图片

进程的切换与过程

操作系统学习:进程管理_第66张图片

回顾

操作系统学习:进程管理_第67张图片

调度算法的评价指标

总览

操作系统学习:进程管理_第68张图片

CPU利用率

系统吞吐量

操作系统学习:进程管理_第69张图片

周转时间


操作系统学习:进程管理_第70张图片

等待时间

响应时间

在这里插入图片描述

回顾

操作系统学习:进程管理_第71张图片

调度算法

总览

操作系统学习:进程管理_第72张图片

先来先服务算法(First come First serve,FCFS)

操作系统学习:进程管理_第73张图片

以一个简单的例子为例:

短作业优先算法(SJF,Shortest Job First)

操作系统学习:进程管理_第74张图片

以一个例题为例,注意是非抢占式的:

为什么调度顺序是P1->P3->P2->P4?

因为在0时刻,显而易见此时就绪队列中只有P1进程到达了,其他都还没到达,所以P1先被处理机服务,因为其需要7个时刻的服务时间,当P1进程运行结束时,P2、P3、P4进程都已经到达,因为短作业优先算法是每次选择当前已经到达且运行时间最少的作业优先,所以三个进程中P3的运行时间是最少的,所以P1运行完之后就到P3,P2和P4的运行时间相同,可是P2先到达,所以P2比P3先被服务。

下面是抢占式的短作业优先例题:


高响应比优先算法(HRRN,Highest Response Ratio Next)

高响应比优先算法由来:
操作系统学习:进程管理_第75张图片
主要就是综合了先来先服务算法和短作业优先算法的优点而产生的算法。
操作系统学习:进程管理_第76张图片

还是以刚刚的题目为例:

回顾

操作系统学习:进程管理_第77张图片
在这里插入图片描述
在这里插入图片描述

适合现代交互式系统的调度算法

总览

操作系统学习:进程管理_第78张图片

时间片轮转调度算法(RR,Round-Robin)

操作系统学习:进程管理_第79张图片

例子,假设时间片大小为2的情况:


操作系统学习:进程管理_第80张图片
下面是时间片大小为5的情况:

如果时间片分配太大,则时间片轮转算法就会退化成先来先服务算法:

但是时间片设置太小,则会导致进程切换过于频繁:
在这里插入图片描述
一般来说,设计时间片时要让切换进程的开销占比不超过百分之一。

优先级调度算法

操作系统学习:进程管理_第81张图片

例子,非抢占式优先级调度算法:
操作系统学习:进程管理_第82张图片
抢占式优先级调度算法:

多级反馈队列调度算法

其实就是集上述所有算法之所长于一身的最终算法:

例子:
操作系统学习:进程管理_第83张图片
这个最好还是结合王道的视频课中的动态PPT的演示动画会更好理解。

回顾

操作系统学习:进程管理_第84张图片

进程同步、进程互斥

总览

操作系统学习:进程管理_第85张图片

什么是进程同步

首先要记得,进程具有异步性的特征。异步性是指各个并发执行的进程以各自独立的、不可预知的速度向前推进。
为什么需要进程同步?下面以进程通信中的管道通信方式为例:
操作系统学习:进程管理_第86张图片
在这里插入图片描述

什么是进程互斥

操作系统学习:进程管理_第87张图片

操作系统学习:进程管理_第88张图片

回顾

操作系统学习:进程管理_第89张图片

你可能感兴趣的:(学习,系统架构)