本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
作业调度与低级调度算法
(记忆平均作业周转时间和平均带权作业周转时间计算方法)
-
先来先服务FCFS
- 按照进入系统先后顺序挑选作业
- 非剥夺式调度算法
- 易于实现
- 只顾等待时间,没考虑服务时间长短
- 不利于短作业,优待长作业
- 利于cpu繁忙型,不利于i/o繁忙型
-
最短作业优先SJF
- 在到达系统的作业中挑选估计计算时间最短的作业投入运行
- 非剥夺式算法
- 易于实现
- 估计值很难精确
- 算法忽视了等待时间,容易造成饥饿问题
-
最短剩余时间SRTF
- 剥夺式最短时间优先调度算法
-
相应比最高算法HRRF
- 响应比 = 作业的响应时间 / 作业处理时间 = 1+已等待时间 / 作业处理时间
- 非剥夺式算法
-
2-3
-
5个批处理作业A~F 到达系统的时间,需要运行的时间及各自的优先级如下图所示,分别采用先来先服务,最短作业优先,最短剩余时间优先算法,抢占式优先算法,时间片轮转算法(每个作业获得2min长的时间片),最高响应比优先算法,计算平均作业周转时间和平均带权作业周转时间.
作业 到达时间 需要运行时间 优先级 A 8 10 3 B 3 6 5 C 0 2 2 D 2 4 1 E 6 8 4
-
-
2-5
-
4个作业到达多道程序系统的时间,估计运行的时间 如下图所示
作业 进入系统时间 估计运行时间(min) Job1 10:00 30 Job2 10:05 20 Job3 10:10 5 Job4 10:20 10 -
系统采用SJF算法调度进程,不限制进程道数,计算作业平均周转时间与平均带权周转时间
-
系统采用SJF算法调度作业,采用SRTF算法调度进程. 闲置进程道数不超过两道.计算作业平均周转时间与平均带权周转时间
-
第三章
生产者-消费者问题
生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。
哲学家进餐问题
有5个哲学家围坐在一张圆桌旁,桌面中央有一盘通心面,每人面前有一只空盘子,每两人之间放一把叉子。每个哲学家思考、饥饿、吃面。为了吃面,每个哲学家必须获得两把叉子,且每人只能从自己左边或右边取叉子。
图书馆问题
有一图书馆,最多同时容纳500名同学。同时,大门只能有一名同学进入或离开. 试用wait和signal原语描述读者进程的同步问题
semaphore empty = 500;// 记录容纳人数
semaphore mutex = 1;// 最多只有一人进入或离开
void reader()
{
while(true)
{
wait(empty);
wait(mutex);
进入
signal(mutex);
看书
wait(mutex);
离开
signal(mutex);
signal(empty);
}
}
银行家算法
Dijkstra提出
对客户约束条件
1. 每个客户必须预先说明自己要求的最大资金量
2. 每个客户每次提出的部分资金量申请贺获得分配
3. 如果银行满足了客户对资金的最大需求量,则客户在资金运作后一定时间后一定可以很快归还资金
避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。
页面淘汰算法
最佳页面淘汰算法
最佳页面算法在调入一页而必须淘汰一个旧页时,所淘达的页是以后不再访问的页或现在最长时间后再访问的页。该算法是衡量具体算法的标准。
【例1】
某程序在内存中分配三个页框,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。用最佳页面淘汰算法分析页面置换过程。 按照最佳页面淘汰算法对该页面访问序列进行置换,共发生7次缺页中断。分析过程如图4-27所示。
| 4 | 3 | 2 | 1 | 4 | 3 | 5 | 4 | 3 | 2 | 1 | 5 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 | 4 | 4 | 4 | 4 | 2 | 2 | |||||
| 3 | 3 | 3 | 3 | 3 | 1 | ||||||
| 2 | 1 | 5 | 5 | 5 |
先进先出页面淘汰算法
先进先出页面淘汰算法总是淘汰最先调入主存的那一页,或者说淘汰在主存中驻留时间最长的那一页(常驻的页面除外)。
【例2】
某程序在内存中分配三个页框,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。用先进先出页面淘汰算法分析页面置换过程。 按照先进先出页面淘汰算法对该页面访问序列进行置换,共发生9次缺页中断。分析过程如表所示。
| 4 | 3 | 2 | 1 | 4 | 3 | 5 | 4 | 3 | 2 | 1 | 5 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 | 4 | 4 | 1 | 1 | 1 | 5 | 5 | 5 | |||
| 3 | 3 | 3 | 4 | 4 | 4 | 2 | 2 | ||||
| 2 | 2 | 2 | 3 | 3 | 3 | 1 |
页缓冲技术是对FIFO替换算法的一种改进,策略如下:淘汰了的页面进入两个队列,即修改页面和非修改页面队列。修改页面队列中的页不时地成批写出并加入到非修改页面队列中非修改页面队列中的页面被再次引用时回收,或者淘汰掉以做替换。
最近最久未使用页面淘汰算法
最近最久未使用页面淘达算法淘汰的页面是在最近一段时间里较长时间未被访问的那一页。
【例3】
某程序在内存中分配三个页框,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5 用最近最久未使用页面淘达算法分析页面置换过程。 按照最近最久未使用页面淘达算法对该页面访问序列进行置换,共发生1次缺页中 断分析过程如表所示。
| 4 | 3 | 2 | 1 | 4 | 3 | 5 | 4 | 3 | 2 | 1 | 5 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 | 4 | 4 | 1 | 1 | 1 | 5 | 2 | 2 | 2 | ||
| 3 | 3 | 3 | 4 | 4 | 4 | 4 | 1 | 1 | |||
| 2 | 2 | 2 | 3 | 3 | 3 | 3 | 5 |
磁盘调度算法
-
先来先服务算法
- 先来先服务算法根据磁道访问请求到来的先后顺序完成请求。该算法简单、公平,但是很难优化寻道时间。
-
最短寻道时间算法
- 在将磁头移到远处以处理其他请求之前,先处理距离当前磁头位置较近的请求可能更为合理。基于此,最短寻道时间优先(SSTF)算法总是优先满足距离当前磁头位置最近的访问请求。
-
电梯调度算法
- 对于先后到达的磁盘访问请求,电梯调度算法先选择移臂方向,磁臂在该方向上移动的过程中依次处理途经的各个访问请求,直到该方向上再无请求时,改变移臂方向,依次处理相反方向上遇到的各个请求。如果同一柱面上有多个请求,则需进行旋转优化。
-
循环扫描算法
- 循环扫描算法希望各个请求的等待时间更为均匀。在该算法中,磁头仅在一个移动方向上提供访问服务。磁臂从磁盘开始端柱面至结束端柱面移动的过程中依次处理途经请求,再直接返回开始端柱面重复进行,归途中并不响应请求。开始端与结束端柱面构成了一个循环。
名词解释与简答题
操作系统主要特性
并发性
指两个或两个以上的事件或活动在同一时间间隔内发生
共享性
指操作系统中的资源(包括硬件资源与信息资源)可被多个并发执行的进程共同使用,而不是被其中一个程序独占.
资源共享的方式有两种
- 互斥访问
- 同时访问
异步性
也称随机性. 在多道程序环境中,程序的执行不是一贯到底的.而是走走停停. 何时运行,何时停止是不可预知的.操作系统必须保证多次运行同一程序时,都会获得与单道运行时相同的结果.
异步性是并发性的表现特征,并发性是异步性的内在原因
虚拟性
是操作系统资源管理技术(资源虚拟化)的特性, 它即是将物理上的一个实体变成逻辑上的多个对应物, 或把物理上的多个实体变成逻辑上的一个对应物.
并行与并发区别
并行和串行:
- 串行:一次只能取得一个任务并执行这一个任务
- 并行:可以同时通过多进程/多线程的方式取得多个任务,并以多进程或多线程的方式同时执行这些任务
并发是一种现象:同时运行多个程序或多个任务需要被处理的现象这些任务可能是并行执行的,也可能是串行执行的,和CPU核心数无关,是操作系统进程调度和CPU上下文切换达到的结果
操作系统的发展和分类
考现代操作系统
多道批处理系统:
在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。
多道程序设计和操作系统的形成
多道程序设计是指允许多个程序同时进入一个计算机系统的主存储器并启动进行交替计算的方法,即计算机内存中同时存放了多道程序,它们都处于开始和结束点之间。从宏观上看,多道程序并发运行,它们都处于运行过程中,但都未运行结束。从微观上看,多道程序的执行是串行的,各道程序轮流占用CPU,交替执行。多道程序设计技术的硬件基础是中断及通道技术。引入多道程序设计技术可以提高CPU的利用率,充分发挥计算机系统部件的并行性。
操作系统的分类
批处理操作系统
分时操作系统
实时操作系统
操作系统的主要构件
内核
屏蔽硬件复杂性,为上层提供简洁,统一的接口
单体式结构
微内核结构
进程
进程是程序的一次运行过程,用于完成特定任务,因此,进程是一个任务单位。运行进程需要执行设备操作装入进程的程序代码及数据、分配内存、分配处理器、分配设备、分配外存等资源管理工作,进程结束时回收上述资源,操作系统为用户运行进程提供了各种资源管理服务。
用户通过在操作系统上运行各种进程完成各种业务。因此,进程也可以视为用户的代表。
线程
线程是CPU独立运行和独立调度的基本单位。线程是进程中的一个执行流,一个进程可以包含多个执行流,此时,称该进程为多线程进程。每个执行流分别承担一个计算任务,多线程进程包含多个任务。多线程进程可以将分散在多个进程中的任务集中在同一个进程中,有利于降低任务切换、资源共享的开销。
管程
管程是用来管理共享资源的一种对象。管程封装了对共享资源进行同步、互斥操作的数据结构和一组过程,进程调用管程过程访问共享资源时,如同其他进程不存在一样。管程将分散在进程中的同步互斥操作集中起来统一管理,简化进程编制,减少出错机会。
进程的基本状态有哪些?这些状态之间是如何转换的?进程的基本状态有:
就绪,阻塞,执行三种。 就绪到执行:进程调度 执行到就绪:时间片完
执行到阻塞:I/0请求或等待事件发生 阻塞到就绪:I/0完成或事件已发生
进程的状态与切换
三态
- 运行态(Runnning)
- 就绪态(Ready)
- 等待态(Wait)
graph TB
a((运行态))
b((就绪态))
c((等待态))
a-->|出现等待时间|c
c-->|等待事件结束|b
a-->|落选|b
b-->|选中|a
五态
- 新建态
- 终止态
- 运行态(Runnning)
- 就绪态(Ready)
- 等待态(Wait)
NULL-->新建态
创建一个子进程
新建态-->就绪态
系统完成进程的创建,系统的性能与内存容量允许接纳新进程
运行态-->终止态
进程自然结束,或出现无法克服的错误,或被终结
就绪态 || 等待态 -->终止态
父进程终结子进程
七态
- 新建态
- 终止态
- 运行态(Runnning)
- 就绪态(Ready)
- 等待态(Wait)
- 挂起就绪态
- 挂起等待态
挂起进程的特征
挂起进程不能立即被执行。 挂起进程所等待的事件独立于挂起条件,事件结束并不能导致进程具备执行条件进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。 结束进程挂起状态的命令只能通过操作系统或父进程发出。
进程控制块 每一个进程都捆绑一个进程控制块,用来存储进程的标志信息、现场信息和控制信息。进程创建时建立进程控制块,进程撤销时回收进程控制块,进程控制块与进程一对应。
原语(Primitive)
在管态下执行,完成系统特定功能的不可中断的过程,具有原子操作性.
原子操作
所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束
进程
进程是程序的一次运行过程,用于完成特定任务,因此,进程是一个任务单位。运行进程需要执行设备操作装入进程的程序代码及数据、分配内存、分配处理器、分配设备、分配外存等资源管理工作,进程结束时回收上述资源,操作系统为用户运行进程提供了各种资源管理服务。
用户通过在操作系统上运行各种进程完成各种业务。因此,进程也可以视为用户的代表。
处理器调度系统
处理机调度分为哪三级?各自的主要任务是什么?
作业调度
从一批后备作业中选择一个或几个作业,给它们分配资源,建立进程,挂入就绪队列。执行完后,回收资源。
进程调度
从就绪进程队列中根据某个策略选取一个进程,使之占用CPU。
交换调度
按照给定的原则和策略,将外存交换区中的进程调入内存,把内存中的非执行进 程交换到外存交换区中。
什么是高级调度、中级调度和低级调度?
高级调度用于作业调度:从一批后备作业中选择一个或几个作业,给它们分配资源,建立进程,挂入就绪队列。执行完后,回收资源。中级调度是进程调度:从就绪进程队列中根据某个策略选取一个进程,使之占用CPU。低级调度用于交换调度:按照给定的原则和策略,将外存交换区中的进程调入内存,把内存中的非执行进程交换到外存交换区中。
高级调度
高级调度(作业调度、长程调度)从磁盘后备作业队列中挑选若干作业进入内存,为其分配资源,创建进程;作业完成后还要做善后处理工作。高级调度根据CPU空闲时间控制多道程序的道数,每当作业结束后,装入新的作业到内存中。高级调度配置在批处理系统或者操作系统的批处理部分中。 新提交的批处理作业保存在磁盘后备作业队列中等候创建进程。高级调度涉及两个决策:进程创建时机和为哪个或哪些作业创建进程。进程创建时机取决于系统并发度。创建的进程越多,每个进程获得的CPU可执行时间比越低。为了给当前进程集提供满意的服务,高级调度可能限制系统并发度。每当一个作业结束或者处理器空闲时间片超过一定阈值时,高级调度都可以增加一个或几个新作业到内存中。为哪个或哪些作业创建进程的决策有基于先来先服务原则、基于优先级原则、基于期待执行时间和/需求的原则等。交互性作业将直接接纳,直至系统饱和为止。
中级调度
中级调度(平衡调度、中程调度)是进程对换的一部分。中级调度决定哪些进程参与竞争处理器资源,途径是把一些进程换出主存,使之进入“挂起”状态,不参与进程调度:或者将进程对换到内存中,解除挂起状态。中级调度根据主存资源决定主存中所能容纳的进程数目,并根据进程的当前状态来决定外存和主存中进程的对换。中级调度起到平滑和调整系统负荷的作用,提高主存利用率和系统吐吞率。
低级调度
低级调度(进程调度、线程调度、短程调度)的主要功能是按照某种原则决定就绪队列中的哪个进程或内核级线程获得处理器,并将处理器出让给它进行工作。低级调度执行分配CPU的程序称为分派程序。 低级调度程序是操作系统最为核心的部分,执行十分频繁。低级调度策略的优劣直接影响到整个系统的性能。 低级调度是各类操作系统必须具有的功能;在纯粹的分时或实时操作系统中,通常不需要配备高级调度,而仅配置低级调度;一般的操作系统配置了高级调度和低级调度;引进中级调度有利于提高主存利用率和作业吞吐量。 低级调度执行的时机是当前进程阻塞或可能抢占当前运行进程的事件发生时,这类事件有时钟中断、操作系统调用、中断和信号(如信号量)。
并发程序设计
临界区
临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。
当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用。只能被单一线程访问的设备,例如:打印机。
临界资源
多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如输入机、打印机、磁带机等。
PV操作
这部分看雨课堂中选择题
死锁
四个必要条件
-
互斥条件
进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
-
占有和等待条件
当进程因请求资源而阻塞时,对已获得的资源保持不放。
-
不剥夺条件
进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
-
循环等待条件
在发生死锁时,必然存在一个进程一资源的环形链。
死锁防止
资源可同时访问(破坏互斥条件)
破环互斥条件使资源可以同时访问而不是互斥使用, 对于部分资源可用, 对于打印机等多数资源不仅不能破坏互斥使用条件,还要加以保证
资源一次性分配(破坏占有和等待条件)
一次性分配所有资源,这样就不会再有请求了
只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请求保持条件)
可剥夺资源(破坏不可剥夺条件)
即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源
死锁避免算法
死锁检测与解除
地址重定位
地址重定位也称地址变换,涉及逻辑地址与内存物理地址之间的变换.
相对地址
虚拟内存地址
逻辑地址空间
物理地址空间
逻辑地址
逻辑地址是与程序在内存中的物理位置无关的访问地址。在执行对内存的访问之前必须把逻辑地址转换为物理地址。
相对地址
相对地址是逻辑地址的一个特例,是相对于己知点(通常是程序的开始处)的存储单元。
物理地址(绝对地址)
物理地址是程序运行时中央处理器实际访问的内存单元地址。
静态重定位
静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故称为静态重定位。
动态重定位
动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。动态重定位需要软件和硬件相互配合完成。
什么是段式存储管理?它从逻辑地址到物理地址是怎么变换的?
把程序按内容或构成关系分成段,每段有自己的名字。一个用户作业或进程包含的段对应于一个二维虚拟储存器。以段为单位分配内存,然后通过地址映射机构把逻辑地址转换成物理地址。只将那些经常访问的段驻留内存,其他的段放在外存,待需要时自动调入。地址变换过程:由虚地址中的段号为索引,查段表。找出该段在内存的起始地址,并将其和段内地址相加,从而得到物理地址。
分段,分页
第六章讲不完,要自己看
什么是内存分页存储管理?它有什么特点?
分页存储管理是将各进程的地址空间分成大小相等的页,把内存的存储空间也分成与页大小相同的片,称为物理块。在分配存储空间时,以块为单位来分配。
优点:
有效解决存储器的零头问题,能在更高的程度上进行多道程序设计,从而相应提高了存储器和CPU的利用率。
缺点:
采用动态地址变换为增加计算机成本和降低CPU的速度。表格占内存空间,费时来 管理表格。存在页内碎片。作业动态的地址空间受内存容量限制。
虚拟存储管理
虚拟存储器:
是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度, 而每位的成本却又接近于外存。
5-3
一个单处理器系统以单道方式处理作业流,目前作业流中有两道作业,作业资源 需求情况如下表所示:
| 作业号 | 所需CPU时间(min) | 输入卡片数(张) | 打印输出行数(行) |
|---|---|---|---|
| 1 | 3 | 100 | 2000 |
| 2 | 2 | 200 | 600 |
卡片输入机运转速度是1000张/min,打印机打印速度是1000行/min,试求:
(l)不采用SPOOLing技术,计算两道作业的总周转时间; (2)采用SPOOLing技术,计算两道作业的总周转时间。
文件结构
文件结构分为逻辑结构和物理结构
什么是文件的逻辑结构和物理结构?
文件的逻辑结构(文件的组织):从用户角度看到的文件的全貌,也就是它的记录结构,包括流式文件、顺序文件、索引文件和索引顺序文件。文件的物理结构(文件的存储结构):文件在外存上的存储组织形式,包括连续文件、串联文件和索引文件。
逻辑结构
用户构造的文件称为文件的逻辑结构。如用户的一篇文档、一个数据库记录文件等。逻辑文件有两种形式:流式文件和记录式文件。
流式文件
是指用户对文件内信息不再划分的可独立的单位,如我们的word文件,图片文件 等。整个文件是以顺序的一串信息组成。
记录式文件
是指用户对文件内信息按逻辑上独立的含义再划分信息单位,每个单位为一个 逻辑记录。记录式文件可以存取的最小单位是记录项。每个记录可以独立存取。这个在数据库中我们学得比较多,容易理解。
物理结构
由文件系统在存储介质上的文件构造方式称为文件的物理结构。物理结构有:
顺序结构:
在磁盘上就是一块接着一块地放文件。逻辑记录的顺序和磁盘顺序文件块的 顺序一致。顺序文件的最大优点是存取速度快(可以连续访问)。
链接结构:
把磁盘分块,把文件任意存入其中,再用指针把各个块按顺序链接起来。这样所有空闲块都可以被利用,在顺序读取时效率较高但需要随机存取时效率低下(因为要从第一个记录开始读取查找)。
索引结构:
磁盘不分块,文件的逻辑记录任意存放在磁盘中,通过一张“索引表”指示 每个逻辑记录存放位置。这样,访问时根据索引表中的项来查找磁盘中的记录,既适合顺序存取记录,也可以随机存取记录,并且容易实现记录的增删和插入,所以索引结构被广泛应用。