目录
第一章 操作系统引论
1. 理解操作系统的目标
2. 理解 OS 的作用
3. 理解操作系统的功能
4. 深入理解多道、并发 OS 的含义
5. 掌握多道批处理 OS、分时 OS、实时 OS 的基本特性,掌握分时 OS 基本特点
和响应时间概念和公式 T=n q。
6. 了解 OS 设计目的
7. 理解 OS 的基本特性及含义:并发性、共享性、虚拟性、异步性
8. 理解 OS 的进程、内存、IO、文件、接口模块的基本功能
9. 理解 OS 内核概念,了解什么是微内核和强内核,
10. 了解 OS 结构设计(模块、分层、微内核的基本概念)
11. 理解中断、异常基本概念
第九章 接口
1.理解内核态和用户态的概念
2.复习云班课发布的录课视频(2.1 操作系统接口概述 ,2.2Linux 系统调用机制):
3.深入理解用户态执行库函数(如 fwrite)经过系统调用 write 再到内核执行对应服务例程 sys_write 的整个详细具体过程。
4.理解系统调用概念,理解操作系统处理系统调用的具体过程
5.理解系统调用和库函数的区别?
6.理解本章发布的作业
第二章 进程的描述与控制
一、进程概念及控制
1. 理解进程概念
2. 理解进程并发执行的四大特征及含义
3. 理解 PCB 概念,了解 PCB 存储的基本信息,知道一个进程对应一个 PCB,PCB是进程的唯一标志,伴随着进程的生命期存在。
4. 理解进程和程序的区别
5. 理解进程的基本特征
6. 理解进程的三种基本状态,及典型转换关系和时机
7. 了解进程控制块的组织形式
8. 理解进程控制
9. 理解进程创建、撤销、唤醒、阻塞的基本过程和时机。
10. 理解进程上文切换的具体过程。理解切换过程中 CPU 现场需要保存哪些数据。
二、进程的同步与互斥
1. 理解进程之间的两种相互制约关系
2. 理解临界资源、临界区、信号量、记录型信号量(重点),了解 and 信号量、了解记录集信号量
3. 结合实验代码理解经典的同步问题(生产者-消费者、读写问题、哲学家问题)
4. 理解分桔子苹果问题、get-copy-put 问题。
5. 了解进程通信概念、了解高级通信和低级通信概念、了解高级通信的基本形式和基本含义,理解消息缓冲区机制。
6. 理解线程概念、特征、TCB
第三章 进程调度和死锁
1. 理解进程调度概念
2. 理解处理机高级-中级-低级调度
3. 理解常见处理机调度策略基本思想、特点、性能分析(时间片轮转 RR--甘特图、FCFS 、 SJF 、 优先权、高响应比、抢占式、非抢占式),了解多级反馈算法,参考云班课发布的录课视频理解。
4. 熟练使用时间片轮转 RR--甘特图、FCFS 、 SJF 、 优先权、高响应比算法。计算作业/进程的周转时间和平均周转时间。
5. 死锁理解
1)产生死锁的原因
2)产生死锁的 4 个必要条件
3)处理死锁的基本方法有哪几种,了解原理和特点
4)死锁的预防(具体策略)
5)死锁的避免(银行家算法)
6)了解死锁的检测(基本策略)
7)了解死锁的解除(基本策略)
第四章+第五章 内存管理
1. 理解虚拟存储器概念和特征
2. 理解地址重定位,静态重定位、动态重定位概念
3. 了解静态链接基本含义,了解动态链接的基本含义
4. 理解早期动态分区内存管理原理,包括:内存分配策略(FF BF WF 算法策略)、内存回收策略
5. 理解内存管理中快表的作用
6. 深入理解请求分页管理原理、地址变换机构工作过程、地址变换过程(会计算虚拟地址转换为物理地址)
7. 深入理解缺页中断处理过程
8. 了解请求分页中的内存分配策略,包括固定分配局部置换、可变分配全局置换、可变分配局部置换的基本策略
9. 理解请求分段管理原理、地址变换机构、地址变换过程
10. 了解请求段页式管理原理
11. 理解页面置换算法策略(FIFO ,OPT,LRU,CLOCK(NRU) )
12. 了解抖动概念、了解工作概念
13. 理解程序局部性原理
14. 了解二级页表
第六章 设备管理
1. 理解设备控制器功能和基本组成
2. 理解三种 I/O 控制方式的基本原理和特征,重点掌握中断和 DMA 控制方式
3. 了解缓冲管理基本原理(单缓冲、双缓冲, 缓冲池)
4. 了解设备分配基本工作原理
5. 理解 I/O 软件层次,每层功能和功能间的关系。
6. 了解 Spooling 技术(基本原理和组成)。
7. 理解驱动程序的基本功能。
第七章 文件管理
1. 理解文件系统逻辑组织
2. 理解文件系统模型
3. 深入理解这些概念:FCB、Inode、内存 inode、外存 inode、目录文件、目录项(FCB 即目录中的一项)、盘块、扇区
4. 深入理解 open()系统调用作用,操作系统做了什么?fd 的作用。参考录课视频理解。
5. 理解文件目录管理策略(重点树目录顺序查询过程)
第八章 磁盘存储器的管理
1. 深入理解文件外存的组织方式(连续、链接、单级索引、增量式索引的原理),重点增量式索引的原理。
2. 理解文件存储空间管理策略(空闲表(链表)、位示图),重点位示图
3. 了解提高磁盘 I/O 速度的途径
4. 了解文件的共享方式(基于索引结点和基于符号链接)
熟练掌握算法:
1. 进程同步
2. 死锁中银行家算法
3. 进程调度算法(时间片轮转 RR、FCFS、SJF、优先权、高响应比),计算进程周转时间和平均周转时间
4. 请求分页、请求分段中虚拟地址到逻辑地址映射计算。
5. 存储管理中,动态分区管理 FF BF WF 算法。P140
6. 页面置换算法(FIFO ,OPT,LRU,CLOCK(NRU) )
7. 磁盘调度算法(FIFO ,SSTF, SCAN)
每章标题后的内容为SPOC的选择题内容。
目标是能理解真实操作系统的运转甚至可以写一个操作系统
操作系统可以管理CPU、内存、网卡、键盘、显卡等硬件
进程管理就是管理CPU
通过命令使用计算机就是操作系统的一个接口
操作系统并不是一种应用软件。应用软件需要在操作系统这一系统软件上运行,应用软件一般由多个程序组成。程序是一组按照特定顺序组织的指令,用来完成某个特定的任务。
学习操作系统可以搞定并发性
在有一台处理机CPU和两台输入输出设备IO1和IO2,且能够实现抢先式多任务并行工作的多道程序环境内,投入运行优先级由高到低的P1、P2、P3 三个作业。它们使用设备的先后顺序和占用设备时间分别是:
作业P1:IO2(30ms),CPU(10ms),IO1(30ms),CPU(10ms)
作业P2:IO1(20ms),CPU(20ms),IO2(40ms)
作业P3:CPU(30ms),IO1(20ms)
在控制程序介入时间可以忽略不计的假设下,作业P1、P2、P3 从投入到完成所用的时间分别是多少?三个作业从投入运行到全部完成,CPU、IO1和IO2的利用率分别是多少?
CPU并不是在每个时钟周期都检查是否有中断
中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需要保存其内容的是程序状态字。中断处理需要保存和恢复的现场信息包括:程序计数器、通用寄存器以及程序状态字寄存器等关键寄存器的内容。
程序状态字一般包括条件码、中断允许/禁止位、内核/用户态位。一般由硬件保存。
中断模型是一种C/S结构。
中断的引入并不是为了支持设备和设备之间的并行操作。而是为了支持CPU和设备之间的并行操作
对系统调用进行优化,是因为系统调用的实现从用户态切换到内核态,执行完系统调用程序后又从内核态切换回用户态,代价很大。
可加装的内核模块在内核运行时可加载和卸载,是开发一个新的文件系统,驱动程序的基本机制。
普通开发者会使用到操作系统的系统调用,这是提供给编程人员的接口。
CPU运行现场指在程序的执行过程中任一时刻状态信息的集合,处理器的状态放在程序状态字(PSW寄存器)。
Linux系统的系统调用是通过0x80中断实现的(软中断)
DOS系统的系统调用是通过21H中断号实现的
系统调用与一般函数调用的最大不同是系统调用存在用户态和内核态的转换,而一般函数没有。
想查看程序调用了那些系统调用,可以使用strace命令
以fwirte函数调用为例,它的实现过程是:在用户态fwrite函数在glibc库中调用系统调用write(),然后在内核态,查找系统调用表syscall table,找到对应的系统调用服务例程为sys_write,然后在内核执行该例程
在单处理机系统中,处于运行状态的进程最多只有一个
进程状态的转换中,不能从就绪到阻塞
某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态转换是从运行变为阻塞
原语是若干条机器指令组成,不可被中断
支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但有新进程进入就绪状态不是引起操作系统选择新进程的直接原因。
进程并不是指令的集合。
状态变化中,等待到运行是不可能发生的
一个运行的进程用完了分配给它的时间片后还没运行完,它的状态变为就绪态
多道程序环境下,操作系统分配资源以进程为基本单位
操作系统通过PCB对进程进行管理
在支持多线程的系统中,进程P创建的若干个线程不能共享的是进程P中某线程的栈指针。
TCB中不应拥有的内容是内存地址空间。TCB中的主要信息包括线程标识、线程状态、调度参数、现场、链接指针,其中现场信息主要包括通用寄存器、指令计数器PC以及用户栈指针,对于操作系统支持的线程,TCB中还应包含系统栈指针。
创建新进程的过程:申请空白PCB,为新进程分配资源,初始化进程控制块,将新进程插入就绪队列。并不是在创建时就为它分配CPU并运行。
进程处于浅度睡眠(interruptible sleep)状态并不是不可由其他进程通过信号和时钟中断唤醒。 可中断睡眠是因为进程等待某些条件(如操作硬盘)而主动放弃CPU,进入睡眠队列,等待被唤醒。在这种状态下,进程可以相应外部的中断或信号,如果收到合适的中断或信号,进程就会从睡眠队列中移除,重新进入就绪队列等待被调度。
信号是一种软件中断,是异步的,可以在任何时候发生,是可以被进程屏蔽的,是可靠的,可以保证被发送和接收。
时钟中断是一种硬件中断,是同步的,只能在固定的时间间隔发生,必须被响应和处理,是不可靠的,可能因为系统负载过高而丢失或延迟。
wait和signal操作是信号量的两个基本操作,用来实现进程间的同步和互斥。wait操作表示进程请求一个资源,如果资源可用,则信号量的值减一;如果资源不可用,则进程阻塞,直到资源可用。Signal操作表示进程释放一个资源,信号量的值加一,并唤醒等待该资源的进程。
临界区是访问和操作共享数据的代码段。对临界资源应采取互斥访问方式,来实现共享。
关于读者写者问题,如果有多个读者,需要设一个共享变量来计数,这个共享变量是临界资源
两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向前执行,这种关系是进程间的同步关系
同步分为直接同步和间接同步,如生产者消费者 (主动wait生产者的产品)与读者写者模型(被动接收缓冲区的数据)
解决进程间的直接制约和间接制约两种基本关系,往往运用对信号量进行wait-signal的通信原语。
关于生产者消费者问题,当只有生产者、消费者、缓冲区都只有一个时,它们之间只有同步关系,不需要互斥信号量。如果三者都是多个时,因为可能存在对某个缓冲区的竞争访问,需要同步与互斥。
生产者消费者问题可以通过AND信号量解决
Signal和wait操作的正确描述:
signal (semaphore *S){ S->value++; //先加1再判断 if (S->value<=0 ) wakeup(S->list);
wait(semaphore *S){ S->value--; if (S->value<0 ) block(S->list); }
为实现消息缓冲队列通信,在PCB中增加消息队列首指针mq,消息队列直接制约信号量mutex以及消息队列资源型信号量sm三个数据项
管程是操作系统中的一种同步机制,由共享资源的数据及其在该数据上的一组操作组成。
操作系统内核是系统硬件的首次延伸,通过执行各种原语操作来实现对进程的控制功能(创建、调度、通讯、撤销等)。
不适宜采用不可抢占处理机的优先数调度算法的系统是实时系统,可能延误高优先数的紧急任务。
在采用等长时间片轮转处理机调度算法的分时操作系统中,各终端用户(一般拥有不同数量进程)所占有处理机的时间总量是与终端进程数有关的。
在分时系统中,进程调度除了采用时间片轮转算法,还可以结合可剥夺CPU的动态优先数调度算法。(要求响应速度及时)
在非剥夺调度方式下,运行进程执行V原语后,其状态不变。
运行进程执行V原语后,可能唤醒等待队列上的进程,但是在非剥夺调度方式下,不会抢夺正在运行进程对CPU的控制权
若在T1时刻进程P1运行,T2时刻进程P2运行,且P1≠P2,则在时刻T1和时刻T2期间之内发生过中断,执行了处理机调度程序
中断是系统由用户态转换为内核态的必要条件。
假设就绪队列中有10个进程,系统将时间片设为400ms,CPU进行进程切换要花费20ms。则系统开销所占的比率约为5%(每一个进程都需要切换一次)
当一个位于后备队列中的作业被选中调入内存时,按照其作业步的顺序,依次为每个作业建立对应的主进程,并为它分配必要的资源,然后提交给进程管理模块由进程调度程序管理
为作业创建进程后进入就绪队列,等待进程调度程序的调度
当一个作业的作业控制块等表格填写完毕后,任务作业的JCB就连成一串作为外存的后备队列
界限寄存器存储保护是一种用来防止进程越界访问内存的方法。它的基本思想是设置基址寄存器和限长寄存器两个寄存器,分别存放进程的起始地址和长度。这两个寄存器是CPU的一部分,用户不能修改它们的值,只能由操作系统在进程创建或切换时进行设置。在每次访问内存时,都要检查访问地址是否在合法范围内,即“基址寄存器值≤访问地址≤基址寄存器值+限长寄存器值”。如果不在该范围内,则不允许访问,并产生错误中断。
设三个目标模块A、B、C,起始地址都是0,长度分别是L、M、N,这三个模块按A、B、C顺序采用静态链接方式链接在一起后,则模块C的起始地址变换为L+M
在多用户环境中为了实现多用户之间的隔离,必须采取存储保护方法。
把空闲最多的分区分配给新作业,这是WF最坏适应算法
优点是能尽量减少小碎片的产生,查找效率高(该算法要求将所有空闲分区按容量从大到小排列,查找时只需查看第一个分区是否满足),缺点是容易破坏大的空闲分区。
在可变分区存储管理系统中,某一个作业完成后,系统回收其主存空间,并与相邻空间合并,为此需要修改空闲区表,造成空闲区数减1的情况是有上邻接空闲区,也有下邻接空闲区
某计算机采用二级页表的分页存储管理方式,按字节编址,页大小为2^10字节,页表项大小为2字节,逻辑地址结构为: 页目录号 页号 页内偏移量 ,逻辑地址空间大小为2^16页,则表示整个逻辑地址空间的页目录表中包含表项的个数至少是128
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| 页目录表 | | 页目录 | | 二级页表 | | 物理帧 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| 页目录地址 |->|二级页表地址| ->| 物理帧号 | ->| 数据 |
| 有效位 | | 有效位 | | 有效位 | | |
| 修改位 | | 修改位 | | 修改位 | | |
| 访问位 | | 访问位 | | 访问位 | | |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
页面高速缓存是一种硬件机制,专门用来支持地址转换。
在页式存储管理方案中,采用页表实现地址变换
页式存储管理是一种将内存和作业分成大小相等的单位(页)来进行管理的方法。它将作业中的每个页面映射到内存中的任意一个物理帧中,以实现动态分配和重定位。
有一系统采用页式存储管理,有一作业大小是8KB,页大小是2KB,依次装入内存的第7、9、A、5块,试将虚地址1ADDH转换成内存地址。
先将虚地址转为二进制,按照页大小(2^11)进行划分,由页号对应物理块号,将物理块号与页内偏移量进行拼接,再转回十进制得出结果。
虚地址是指作业中的逻辑地址,由页号和页内偏移量组成,物理帧号表示该地址所在的物理帧编号,页内偏移量表示该地址在页面中的位置。
内存地址则由物理帧号和页内偏移量组成。
在页式存储管理系统中,地址寄存器长度为24位,其中页号占14位,则主存的分块大小为2^10字节。
通常CLOCK置换算法只有一位访问位,而一种改进的版本则通过一个访问位A和一个修改位M来选出淘汰的页。如果已访问,则A为1,如果已修改,则M为1,最佳被淘汰页为A=0,M=0。
淘汰时访问位的优先级高于修改位。
CPU访问的是虚拟地址
分段存储管理系统中,地址长度为32位,其中段号占8位,则最大段长是2^24字节
在请求分页内存管理的页表表项中,其中状态位供程序访问时参考,修改位供置换页面时参考,访问位供置换算法在选择换出页面时参考,外存始址供调入页面时参考
在请求分页系统中,凡未装入过内存的页都应从文件区调入,已运行过的页主要是从页面缓冲池调入,有时也可从对换区调入。
地址寄存器为24位,则虚拟存储器可管理的空间为?
2^24的寻址空间,即16MB
分页机制是在保护模式下开启的
一个计算机系统配置有同型号3台打印机,同型号两台绘图仪,为了正确驱动这些设备,系统应该提供2个设备驱动程序。(根据型号,一类提供一个即可)
某系统采用中断驱动I/O控制方式,假设中断时,CPU用1ms来处理中断请求,其他时间CPU完全用来计算,若系统时钟中断频率为100Hz,则CPU利用率为?
时钟周期=1/100=0.01s=10ms,CPU利用率=1-1ms/l0ms=90%
设备管理的主要程序之一是设备分配程序,当进程请求在内存和外设之间传送信息时,设备分配程序分配设备的过程通常是先分配设备,再分配控制器,最后分配通道
通道对CPU的请求形式是中断
CPU对通道的请求形式是通道命令
CPU和常用设备传送控制方式是中断控制方式,DMA方式,通道方式
在DMA方式中,信息的传送方向、信息传送的源地址和目的地址以及传送长度等都是由DMA控制器控制
程序直接控制方式耗费大量CPU时间,无法检测发现设备或其他硬件产生的错误,设备和CPU、设备和设备之间不能并行工作
中断处理方式因为中断次数太多,耗费大量CPU时间
通道控制方式在CPU发出I/O启动命令后,由通道指令来完成存放数据的内存原始地址以及操作方式和传送字节的长度
DMA方式可以在外设和内存之间交换数据
需要CPU干预最少的I/O控制方式是I/O通道控制方式,它是DMA方式的发展,把对一个数据块的读写为单位的干预减少为对一组数据块的干预
关于Spooling技术(共享打印机),在输入进程的控制下,输入缓冲区用于暂存从输入设备输入的数据,之后再转存到输入井中,而输出缓冲区则是暂存输出井送来的数据,再传到输出设备上。
输入井用于模拟脱机输入时的磁带,用于收容I/O设备输入的数据
输出井用于模拟脱机输出的磁带,用于收容用户进程输出的数据
SPOOLing技术需要独占设备(不需要直接使用独占设备),可以使独占设备变为共享设备,加快了作业的执行速度,实现了虚拟设备功能
为了使多个进程有效地同时处理输入和输出,最好使用缓冲池结构的缓冲技术
设备独立性是指用户程序独立于具体使用的物理设备的一种特性。
设备驱动程序是系统提供的一种通信程序,它专门用于在请求I/O的进程与设备控制器之间传输信息。它可以检查用户I/O请求的合法性,及时响应由控制器或通道发来的中断请求,了解I/O设备的状态,传递有关参数,设置设备的工作方式
某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为100 μs,将缓冲区的数据传送到用户区的时间是50 μs,CPU对一块数据进行分析的时间为50 μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是(输入到缓冲为T,缓冲到用户为M,CPU处理为C)
第一个数据块花费的时间固定,为100+50+50=200
单缓冲区MAX(T,C)+M
双缓冲区MAX(T,C)
如果要在两台机器中同时双向通信,必须在两台机器中都设置两个缓冲区,一个发送一个接收
I/O设备控制方式中,对于数据流向的区别:中断方式需要CPU参与每个字的传输,而DMA方式只需要CPU在传输开始和结束时干预,整个数据块的传输是由DMA控制器完成的
键盘按键发送来的数据首先会存放在键盘控制器(设备控制器)数据寄存器中,当中断发生时,数据寄存器中的内容移到CPU的寄存器,之后CPU寄存器数据再转储内存中。
磁盘所花费的寻道时间=磁盘启动时间+磁头移动N条时间
若一个用户进程通过read系统调用读取一个磁盘文件的数据,若该文件的数据不在内存,则该进程进入睡眠等待状态,请求read系统调用会导致CPU从用户态切换到内核态,read系统调用的参数是文件描述符、缓冲区和字节数。
下列磁盘调度算法中,会造成磁头随时改变运动方向的是:FCFS(FIFO),SSTF
用户程序发出磁盘I/O请求后,系统的处理流程是:用户程序→系统调用处理程序→设备驱动程序→中断处理程序。其中,计算数据所在磁盘的柱面号、磁头号、扇区号的程序是设备驱动程序
显卡的驱动程序中包含中断处理程序
Buffer就是存放要写入磁盘的数据,cache就是存放从磁盘中读出来的数据
磁盘转速50转每秒,盘面被划分为10个扇区,则读取一个扇区的时间为?
可知每秒读取500个扇区,1/500=0.002s=2ms
设某磁盘旋转速度为3600r/min,一条磁道上的字节数15K,每次读写1KB字节的数据传输时间为?
由字符序列组成,文件内的信息不再划分结构,这类文件属于流式文件
数据库文件与库函数、可执行程序、源程序文件在逻辑结构上根本不同
数据库文件属于有结构文件或记录式文件,类似的还有表格、图形、音频等文件
其他三者属于无结构文件或流式文件
逻辑文件存放在磁带上应组织成顺序文件
有一个顺序文件含有10000个记录,同样记录的索引顺序文件的检索效率大约是该顺序文件检索效率的多少倍?
文件信息的逻辑块号到物理块号的变换方法是由文件的物理结构决定的
在文件系统中,文件的不同物理结构有不同的优缺点,链接结构不具有直接读写文件任意一条记录的能力
在磁带上的顺序文件中插入新的记录时,必须复制整个文件
在有直接存取需求和文件长度动态增长的情况下,应选择索引文件
从对文件信息的存取次序考虑,存取方式包括顺序存取和随机存取,存取方式的选择因素有使用文件的方法,存储介质的特性,存储设备的类型。
若文件的物理结构采用顺序结构,则文件控制块中关于文件的物理位置应包括首块地址和文件长度。
文件名及属性可以收纳在目录中以便查找
文件目录由若干目录项组成,目录项中包括存取控制、文件结构、管理等信息
绝对路径名指出了从根目录开始到指定文件的路径
相对路径名指出了从当前路径出发到指定文件的路径
路径名由文件所属的各级子目录名和文件名中间加分隔符组成
某软盘容量为1.2M,其文件分配表FAT需要占用多少内存空间?(假设磁盘块的大小为1K)
软盘上共有1200个磁盘块。由于软盘使用FAT12文件系统,每个簇在FAT中占用12位(1.5字节),那么FAT需要占用1200×1.5=1800字节(1.8K)
设文件索引节点中有7个地址项,其中4个地址项是直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,每个地址项大小为4字节。若磁盘索引块和磁盘数据块大小均为256字节,则可表示的单个文件最大长度是?
直接地址索引可以表示的文件长度为:4×256=1024字节(1KB)
一级间接地址索引可以表示的文件长度为:2×64×256=32768字节(32KB)
二级间接地址索引可以表示的文件长度为:1×64×64×256=1048576字节(1024KB)
因此,可表示的单个文件最大长度为:1KB+32KB+1024KB=1057KB
下面关于文件共享的说法中正确的是( C )。
A. 在一级、二级、树形即多级文件目录结构中,只有树形文件目录结构才具有文件共享的基础并实现了文件共享
B. 一级目录结构允许文件共享
C. 二级目录结构允许文件共享
D. 一级、二级、树形目录结构都允许文件共享
在理解 wait(s)/P(S),signal(s)/V(s)公式基础上,灵活应用多进程并发时的 wait(s)signal(s)信号量 s 的数据变化;生产者-消费者(单和多缓冲区)、读写问题、哲学家问题、分桔子苹果问题、get-copy-put 问题模型。 生产者-消费者、读写问题、哲学家问题能够结合代码理解,参考录课视频复习。
1.某系统中有5种资源,数量为[5,6,8,6,4],某个时刻进程和资源的使用情况如下:(每问2分,共8分)
进程名 Allocation Need
P0 [0,2,1,1,1] [1,0,2,1,1]
P1 [2,0,1,1,1] [0,3,2,1,0]
P2 [0,1,0,1,1] [0,3,3,2,2]
P3 [0,3,1,2,0] [1,0,1,2,1]
(1)此时系统的可用资源数量Available为多少?
(2)按照从P0到P3依次进行的顺序,进行安全性检测找到的第二个满足条件的进程为P3 ,检测后发现系统是不是安全状态?为什么?
(3)若此时进程P0提出申请资源[1,0,0,0,1],假设系统满足其要求后,经检测发现系统是不是安全状态,为什么?
(4)在此次寻找安全序列时,找到的第一个进程为P0,若其运行完毕释放资源后,系统的Available变为多少?请写出详细的过程。
一、(10分)
1、 假设一个系统有4个计算进程,它们的到达时间和服务时间如下表所示,忽略IO以及其它开销时间,若分别按先来先服务(FCFS)算法、最短进程优先(SPF)算法、HRRN(响应比高者优先)算法进行CPU调度。回答以下问题:
(1)三种调度算法下,计算4个进程的平均周转时间,并写出进程的调度顺序。(6分)
(2)使用FCFS算法时,5时刻A、B、C进程分别处于什么进程状态?(2分)
(3)针对本题,比较FCFS算法和SPF算法,说明哪种算法更适合?为什么?(2分)
进程达到和需要服务时间表
进程 到达时间 服务时间
A 0 6
B 3 4
C 4 3
D 6 2
答案:FCFS 平均周转时间= 7.5
调度顺序ABCD
进程 到达时间 服务时间 开始执行时间 完成时间 周转时间
A 0 6 0 6 6
B 3 4 6 10 7
C 4 3 10 13 9
D 6 1 13 14 8
SJF 平均周转时间=6
调度顺序ADCB
进程 到达时间 服务时间 开始执行时间 完成时间 周转时间
A 0 6 0 6 6
B 3 4 10 14 11
C 4 3 7 10 6
D 6 1 6 7 1
HRRN 平均周转时间= 7
调度顺序ABCD
进程 到达时间 服务时间 开始执行时间 完成时间 周转时间
A 0 6 0 6 6
B 3 4 6 10 7
C 4 3 11 14 10
D 6 1 10 11 5
(2)A--运行,B--就绪,C-就绪
(3)SPF算法更合适,因为后续到达的进程服务时间相对短,SPF算法使短进程优先调度,使得整体的平均周转时间较短。
二、(8分)
有一个批处理操作系统只能容纳2道作业,有 6 个作业进入系统,它们的进入时刻、估计运行时间和优先级如下表所示:
作业号 进入时刻 估计运行时间 优先级
JOB1 8:00 90 分钟 5
JOB2 8:10 30 分钟 6
JOB3 8:30 20 分钟 3
JOB4 8:50 25 分钟 8
JOB5 9:20 10 分钟 2
JOB6 9:40 5 分钟 4
系统采用短作业优先作业调度算法,作业一旦被调度运行就不再退出内存,但当有新的作业投入运行时,系统是可以按照优先级(优先级越大表示优先级越高)进行进程调度。
(1)请分析系统采用调度方式是抢占式还是非抢占式调度?使用了哪些调度算法(2分)
(2)试给出各个作业的运行时间序列。(例如:JOB1:8:00-8:30,9:10-9:20,…) (2分)
(3)试计算出作业的周转时间和平均周转时间。 (2分)
(4)提出两个问题并回答(2分)
答案:首先经过分析,系统同时只能容纳两道作业,采用短作业优先作业调度算法,抢占调度方式,优先权进程调度算法,接下来分析运行序列及计算平均周转时间。
(1)各个作业的运行时间序列为:
JOB1 8:00-8:10(JOB2 抢占),8:40-10:00(此时系统中只有 JOB1 和 JOB3)
JOB2 8:10-8:40(运行完毕后 JOB3 进入内存)
JOB3 10:05-10:25(JOB3 比 JOB5 的优先级高,所以先运行)
JOB4 10:25-10:50(JOB3 运行完毕之后,JOB4 进入内存,优先级比JOB5 高, 所以先运行)
JOB5 10:50-11:00(JOB6 运行完毕后,选择 JOB4,JOB5 种运行时间最短的 JOB
5 进入内存)
JOB6 10:00-10:05(JOB1 运行完毕之后由于 JOB6 的运行时间在处于后备队列中的 JOB4,JOB5,JOB6 中最短,所以先进入内存,与 JOB3 同处于内存,并且 JOB6 的优先级高,先运行)
(2)根据公式计算:
周转时间=完成时间-进入时间 平均周转时间=周转时间之和/n
JOB1 周转时间=10:00-8:00=120min
JOB2 周转时间=8:40-8:10=30min
JOB3 周转时间=10:25-8:30=115min
JOB4 周转时间=10:50-8:50=120min
JOB5 周转时间=11:00-9:20=100min
JOB6 周转时间=10:05-9:40=25min
平均周转时间=(120+30+115+120+100+25)m/6=510m/6=85min