知识总览
进程的定义
单道程序:在计算机当中,同一时间段内只能有一个程序在运行,系统的各个资源都为其这唯一一个程序服务。在内存当中会记录该程序的程序段以及数据段,以方便该程序的进行。
在引入多道程序技术之后,同一时刻计算机当中将会有多个程序在并发运行。同样在内存当中也会存储各个并发运行的程序的程序代码,那么操作系统如何找到这些程序相关的信息呢?依靠的是进程控制块。
进程的组成
进程(进程实体)由程序段、数据段、PCB三部分组成。
PCB详解
进程的组织
进程的组织方式—链接方式
进程的组织—索引方式
索引方式和链接方式很相似,反正我感觉差不多都是一样的。
进程的特征
回顾
进程的状态和转换
进程的五种状态
进程状态的转换
进程控制
什么是进程控制
如何实现进程控制
详细过程如下:
初始机器状态如下:
现在我们创建一个进程:
创建完成之后,进程就由创建态转化为就绪态,修改PCB当中的内容和相应队列(将该进程调入就绪队列中:
然后等到时机成熟(所需要的系统资源拿到了或者处理机的时间片轮到该进程了),该进程则会被调入CPU处理机中进行运行:
为什么需要恢复进程运行环境?
这是很自然的,因为该进程可能之前已经被CPU工作过,出于某种原因暂时中止了,所以当再次轮到该进程使用CPU时就需要根据PCB当中的状态信息恢复该进程当时中止运行时的运行环境。
然后是运行态转化为阻塞态,该进程将会进入对应发生的事件的阻塞队列当中去:
阻塞态转化为运行态:
完整版本如下:
上述过程存在一个问题:
如果一个进程从某个队列转移向另一个队列,然而我们并没有把PCB中对应的状态标志给改变,这种情况就是非常危险的,会导致严重的系统错误。
为了防止这个问题,我们使用了原语来实现进程的控制:
进程控制相关的原语
回顾
进程通信
总览
进程通信概念
共享存储
共享存储方式下,操作系统会在内存空间中开辟一块共享的空间,这个空间就可供两个进程之间进行信息交换。
管道通信
那么管道通信中数据传输是怎么实现的呢?
首先进程1会往管道中写入数据:
当管道中的数据写满了之后,进程2从会开始从这个管道中读数据:
当进程2将管道中的数据全部读出后,进程1又才能开始往管道中写入数据。
消息传递
回顾
线程概念和多线程模型
总览
什么是线程,为什么要引入线程
引入线程机制所带来的变化
线程的属性
线程的实现方式
用户级线程:
内核级线程:
二者组合方式中的线程实现方式:
多线程模型
在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题。
多对一模型
一对一模型
多对多模型
回顾
处理机调度的概念、层次
总览
调度的基本概念
以生活中的例子举例:
调度的三个层次–高级调度
调度的三个层次–中级调度
补充知识:进程的挂起态与七状态模型(408不考)
调度的三个层次–低级调度
三层调度的联系和对比
回顾
进程调度的时机、切换与过程、方式
总览
进程调度的时机
下面这种情况是不允许进程在处于内核程序临界区时进行处理机调度以及切换的:
而有些时候处于普通临界区的临界区时又是可以进行进程切换的,比如打印机这台设备被进程使用的情况:
进程调度的方式
进程的切换与过程
回顾
调度算法的评价指标
总览
CPU利用率
系统吞吐量
周转时间
等待时间
响应时间
回顾
调度算法
总览
先来先服务算法(First come First serve,FCFS)
以一个简单的例子为例:
短作业优先算法(SJF,Shortest Job First)
以一个例题为例,注意是非抢占式的:
为什么调度顺序是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)
高响应比优先算法由来:
主要就是综合了先来先服务算法和短作业优先算法的优点而产生的算法。
还是以刚刚的题目为例:
回顾
适合现代交互式系统的调度算法
总览
时间片轮转调度算法(RR,Round-Robin)
例子,假设时间片大小为2的情况:
下面是时间片大小为5的情况:
如果时间片分配太大,则时间片轮转算法就会退化成先来先服务算法:
但是时间片设置太小,则会导致进程切换过于频繁:
一般来说,设计时间片时要让切换进程的开销占比不超过百分之一。
优先级调度算法
例子,非抢占式优先级调度算法:
抢占式优先级调度算法:
多级反馈队列调度算法
其实就是集上述所有算法之所长于一身的最终算法:
例子:
这个最好还是结合王道的视频课中的动态PPT的演示动画会更好理解。
回顾
进程同步、进程互斥
总览
什么是进程同步
首先要记得,进程具有异步性的特征。异步性是指各个并发执行的进程以各自独立的、不可预知的速度向前推进。
为什么需要进程同步?下面以进程通信中的管道通信方式为例: