CUMT 2021-2022os考题
### 简答
1.分时操作系统的显著特征
2.何谓并发,并发和并行的区别
3.三态模型,什么时候阻塞到就绪
4.dma特点
### 论述
1.死锁的原因,改变互斥条件能防止死锁吗
2.p1p2p3三个进程单cpu如何设置优先级使cpu利用率资源利用率最高,p1为计算密集型,p3为IO密集型,p2位于中间
### 计算
逻辑地址转物理地址
进程调度算法时间顺序,平均周转时间,带权
### 综合
缺页中断lru中断次数
阅览室pv,信号量变化范围
银行家算法
三级索引算物理块
##考试重点复习内容去年版
## 进程
程序/进程/作业的概念
进程状态转换 重点(论述题)
三态、七态、五态会画模型
什么是挂起、挂起的契机、挂起就绪、阻塞 什么是激活等等
进程阻塞唤醒、挂起激活 可能考简答题
阻塞唤醒、挂起激活主题课题
进程同步互斥:
简答里面有概念
临界区、调度原则、pv 操作做了什么和含义 无发杂论述
大题pv操作必考,按照伪代码 按照书上
管程不考
通讯没什么可靠,非重点
三级调度以及含义
考进程调度的算法 必不可少,CC和多级反馈不考、
多CPU不考
死锁:
- 产生的原因、必要条件、破坏是否可能组织
- 银行家算法(大题)
线程不考
## 内存
分值仅次进程
考一个计算:页式逻辑到物理的转换
请求页式存储管理,算缺页中断次数 前几次不算中断,正常页面调度
还有小的简答,可变内存分配算法,快表是什么等覆盖技术,交换技术,可变分区分配的过程,思想,对比,紧凑技术
分段和分页的比较(考过多次)
段页式不考
段式不单独考
虚拟存储主要考请求页式,页面调度算法,缺页次数,看清分配的物理块数量
分配、调入、置换策略:可能考简答或者论述
请求分段不考
## 设备
考的不多,非重点
设备的分类:独占共享虚拟三种
设备的控制方法:四种,四种IO方法,必看(往年常考)DMA,中断驱动等,叙述原理
缓冲技术:优点、方式
4.4输入输出软件忽略
4.5分配和回收 数据结构不考,分配策略考(独占式,共享式,虚拟式
spooling经常考 叙述原理组成特点
## 文件
主要考2大部分
- 文件逻辑结构(主要关注记录式)
- 文件物理结构:那几种的基本原理
- 文件目录:
- 线性表,索引节点(重点,涉及计算和简答),哈希表
多级索引涉及计算:算物理块
直接文件知道原理即可,无需关注哈希函数
存取方法,空间管理基本不考
目录结构不考,文件的实现和共享不考
## 重点掌握
- 死锁
- PV
- 进程调度
- 请求页式存储管理:缺页中断
- 逻辑地址到物理地址
考试重点复习:今年版(前三章) 后面两章和往年一样
操作系统是一组程序的集合,主要用于控制和管理计算机的软硬件资源,合理的组织计算机的工作流程,向应用程序和用户提供方便,快捷,友好的使用接口。
主要记住四个基本功能
手工操作—联机批处理—脱机批处理(相较于联机批处理多了一个卫星机可以解决高速的主机与慢速的外部设备之间的矛盾)—多道批处理系统(出现了通道和中断机制)(在程序A输出的同时开始执行程序B,A的输出是独立执行的,实现了多个作业同时运行的脱机批处理)
正在运行的程序及其占据的资源(不可忽略其占据的资源),例如同时打开两个word文件就是两个不同的进程,尽管二者的程序相同。
程序是一系列指令的集合,包括一组预定义的操作码和参数,用于实现特定的计算操作或者数据处理任务。分为源代码和目标代码两部分:源代码是人类可读文本,目标代码机器编译而成的机器语言而形成的二进制文件。
一个作业通常指的是用户提供给计算机执行的一个任务单元,包括源代码,数据,相关参数和约束条件等等
进程的上下文指的是当前进程的全部状态信息和环境参数。当操作系统进行进程的切换时,即将CPU的运行权从当前的进程转移到其它的进程时,需要保留当前进程的上下文信息,从而保证操作系统能够恢复到原有的进程的状态。
进程切换的步骤:
进程上下文的优点:
由于进程上下文信息保存了当前进程的完整状态,因此操作系统可以通过它有效地实现进程的切换和调度,为多任务处理提供基础支持。
通过进程上下文这一特点切换进程的缺点以及如何应对:
进程上下文的保存和恢复需要耗费一定的资源,因此需要合理地调度进程切换的时间和频率,避免过度引入上下文切换的开销。同时,为了提高调度效率和降低延迟,现代操作系统通常会使用更为高效的多线程机制来实现多任务处理,从而减少进程切换时上下文信息的保存和恢复成本。
系统进程:系统进程指的是由操作系统内核启动并运行的进程,他们处理的任务通常和操作系统本身的运行和维护有关。其与用户进程相比也拥有更高的权限(在进程的调度中,系统进程的优先级更高!!!),因为它通常在和硬件打交道。
用户进程:用户进程指的是应用程序启动并执行的进程,在计算机系统中扮演着完成各种计算任务的作用。比如文字处理,图形渲染等等。如果用户进程想要访问硬件资源,需要操作系统提供相应的API接口才能进行访问。
死锁:鱼皮哥哥在字节面试是:对于死锁的理解:
两个或多个进程之间他们都在等待一些资源,然后没有办法完全释放现在已经占有的资源,但是他们需要的资源的话又被其他的进程所占有着,同时这一整个过程中你又没有办法去抢占,造成了一个循环等待的情况(请求保持,互斥,不可剥夺,循环等待)
互斥:进程之间由于相互竞争独占性资源而产生的竞争制约关系称之为互斥。
同步:操作系统对多个进程或线程之间的互动和协同访问共享资源进行协调管理和控制的过程。
临界区是一段程序代码(一段访问互斥资源的代码),在这段代码中对共享资源的访问需要进行互斥保护。简而言之就是,只有一个进程可以同时进入这个代码段,而且还要防止其它进程将其打断。
例如:假设有两个进程 A 和 B 同时读写同一个共享变量 x,当 A 进行修改时,B 同时也在修改它,就会导致最终 x 的值无法确定和可靠,这种情况被称为竞态条件(Race Condition)。为了避免这样的情况发生,可以在代码中增加临界区,并使用同步机制来控制进程访问共享资源的次序,从而保证程序的正确性、可靠性和安全性。
需要注意的是,临界区个数不一定只有一个,有时同一个进程或线程在不同的地方也需要停顿一些时间,以等待特定资源的释放或某个条件的满足。这种互斥访问和同步调度的机制在操作系统的实现中,扮演了重要的角色,并保证了并发程序中共享数据正确、稳健地被处理。
这部分食用方法:记住一点,磨刀不误砍柴功,这部分的重点就是书上的几个经典的问题(第16部分),你要学会通过经典问题去类比实际问题,比如给你一个实际问题。你要能够提取出关键信息,组织这些关键信息,然后套用经典问题的模板就可以了,所以这部分没有基础的小伙伴(可以先看看我整理笔记的顺序,先把这部分看了,然后再去看第16部分。)我的建议是先把一个经典问题弄懂:b占王道考研视频足矣,书上的理发师问题王道考研没有讲,但是可以自己琢磨,我在第16部分也会总结。但是你假如还有几个小时就要考试了,那我建议你可以看看我放在第16部分的第一个经典问题:生产者消费者问题对应的b占视频,讲的是老和尚小和尚挑水的实际案例,应试够了,因为矿大一般的老师出题都只会出生产者消费者模型,至少去年今年是这样,因为其它几个模型相对比较复杂,老师一般不会为难大家的。这部分以及同步(14部分)和互斥(15部分)基本概念你是必须要清楚的!!!
最重要的一点就是:13-16部分建议多看几遍,恕学长愚钝,我笔记都是在每次有了新的心得之后加上的,所以有一点乱的感觉,但是总体思路就是分治,这个思维很好用,就是你学习一样东西,第一遍没看懂没关系,你心中有大概框架就行,然后再带着第一遍留下的问题去学习,再最后你再看一遍我的笔记,你会有种茅塞顿开的感觉。
p操作:声明使用信号量
v操作:声明释放信号量
整型信号量:
记录型信号量
block之后将该进程挂到等待队列中
V操作之后检查value的值如果小于零,说明有进程被挂到了队列中,这个时候需要取下队列的队头并执行wakeup操作
PV操作的理解:
进程同步概念:
进程同步的过程以及口诀 (“前V P后”)
解题思路:
1.先分析清楚是什么类型的问题
1.生产者消费者(1:1) #银行问题
2.生产者消费者(m:n) #爸妈苹果橘子问题
3.吸烟者问题(1:m) #利用整型变量转换成m个(1:1)的生产消费者问题即可
4.哲学家问题(发n-1个令牌,从而避免n个进程同时运行导致的死锁)
2.画ER图分析存在的互斥和同步关系(从而设置相应的互斥和同步变量)
3.互斥操作(p 操作 v)
4.同步操作(操作 v p 操作)
1.生产者消费者问题(解决同步问题) (1:1)(m:m[m为若干,不专门服务])
b占同类题(适合零基础的同学):传送锚点
这个问题和银行办理业务问题一样的思路,取号机相当于生产者,生产号码,缓冲区相当于座位区,有空你就取号,没空就等待,然后银行柜员就相当于消费者,消费号码。
互斥条件:
需要注意的是 互斥P操作一定在同步P操作之后
2.多生产者多消费者问题 (m:n[m专门服务于部分n])
先取到盘子然后盛到水果,然后吃掉水果归还盘子 用盘子盛水果的时候别人不能来打扰,用盘子吃水果的时候别人也不能来打扰。(“前VP后”)
注意点:plate是一个同步信号量。只有当plate!=0的时候dad和mom才能拿到盘子放相应的水果。意思就是爸爸妈妈的操作只有建立在盘子有的基础之上,从而构成了盘子和爸妈操作这一同步过程。
3.吸烟者问题(我更愿意称之为面试问题:挨个发offer) (1:m)
思路就是引入一个整形信号量,通过整型信号量来切换为1:1的关系,就相当于把1:m的关系化简成了m对1:1的关系。因为正常的1:1关系中存在互斥访问操作,在引入整型信号之后这个互斥访问可以省略也可以不省略,省略可以使代码更简洁,同时这个也存在多对多问题中的一个隐含的同步操作,就是desk必须等于1 ,另外的smoker才能取材料开抽(类似于多对多问题中的plate)
4.读者-写者问题(读者和读者不互斥,写者- 互斥 设置count计数器解决互斥问题)(大概率不会考,因为太复杂了......为了平衡难度所以应该不会考。)
5.哲学家问题(主要用于解决死锁问题)
解法:
进程是分配系统资源的基本单位(包括内存地址空间),因此各个进程拥有的内存地址空间相互独立。所以:
共享存储:
管道通信
进程通信
进程调度的功能就是按照一定的策略,动态的把CPU分配给处于就绪队列中的某一进程执行。
抢占式(剥夺式):具有优先权原则,短进程优先原则,时间片原则。一旦有满足这些原则的进程,这些进程会立马抢占队头,抢占CPU。
非抢占式:只能按照队列优先的原则,先来先服务
三级调度指的就是高级调度和中级调度以及低级调度,上面时各自的作用
调度算法又称之为调度策略-用于控制CPU 的分配
系统吞吐量是指在一定时间内系统处理的任务数或完成的工作量。通常用单位时间内所处理的请求或事务总数衡量,如每秒钟可以处理的请求数(requests per second, RPS),或每分钟、每小时可以处理的事务数等。
1.先来先服务(按照作业顺序从前往后执行)(提交时刻为0时刻)
注意题目中的同时提交(也就是进入时刻都为0)
2.短作业优先SJF(估计使用CPU时间最短的进程优先执行)(提交时刻为0时刻)
3.最短剩余时间优先SRTF(从开始时刻执行,执行过程中同时关注所有进程剩余时间,每个时刻执行的都是剩余时间最短的进程)
4.高响应比优先HRRF(高响应比优先的算法在一个进程结束后需要重新计算响应比)
5.优先权算法(进程运行时,当有新的优先权更高的进程进入时:优先考虑优先权更高的进程)
考题预测(短作业优先):
下面的开始T改成进入时刻T更好
不要主观臆断(短作业优先一定不会发生抢占)(下面这种抢占就是错误的)
1.死锁的必要条件(四个条件被任意破坏一个就能打破死锁)
2.死锁的官方答法
两个或多个进程之间他们都在等待一些资源,然后没有办法完全释放现在已经占有的资源,同时他们需要的资源的话又被其他的进程所占有着,而且这一整个过程中你又没有办法去抢占,于是造成了一个循环等待的情况(请求保持,互斥,不可剥夺,循环等待)
3.死锁的避免
取出P1然后同时Availabe加上Possesion
取出p3
p2
p0
所以 P1 - P3 - P4 -P2 -P0是一个安全序列
首先进行有效性检查:保证request<=availabe 以及 request<=shortage
然后进行和1相应的操作 并写出每个时刻的状态表(availabe-request 同时 shortage-request 还有 possetion+request)
注意这种情况
1.逻辑地址的概念:又称为虚拟地址,逻辑地址由段号和偏移量两部分组成,其中段号指示了进程中的特定段,而偏移量表示这个段内的相对地址。
2.物理地址的概念:又称为实际地址,它是实际存在于RAM芯片上的存储单元的真实地址。
3.逻辑地址到物理地址的转换原理和方式:逻辑地址和物理地址之间的映射关系可以通过硬件实现,也可以通过操作系统的软件层面实现。常见的地址转换技术包括页式存储管理、段式存储管理、段页混合式存储管理等。
4.使用逻辑地址的好处:在多道程序设计中,每个进程都有自己的地址空间,能够保证各个进程之间的内存互不干扰,从而提高了操作系统的安全性和稳定性。
5.两种装入方式:
我们的目的就是:物理地址=内存块号*页面大小+页内偏移量
B占刷真题:传送锚点
零基础应试刷题看这个:传送锚点
补充:页面的大小等于内存块的大小
2.M号页的内存地址=页表起始地址X+页表项长度(页表项长度是n个字节用来表示内存块数量(内存块数量等于内存大小除以页面大小)的)*M
3.页号:存在的目的为了找到相应的内存块号
4.页内偏移量:2^页内偏移量的位数=页面大小
5.算法:
6.计算例题:(这里的页面大小假如没告诉,只告诉了偏移量位数,注意4的变换)
逻辑结构:(一级页号,二级页号,页内偏移量)
页面个数=2^页号位数
1.概念:请求页式存储是一种虚拟存储管理技术,主要用于实现虚拟内存中页面的动态分配与调度。
2.页面置换算法
操作系统必须从内存中按照一定的算法选择内存中的一些页面调出,并将所需的页面调入内存-称之为页面置换,页面置换算法决定从内存中置换出哪一个页面。
一些概念:
1.OPT(最佳置换算法)
2.先进先出算法FIFO
3.最近最久未使用置换算法(LRU)
不要想当然的认为前面几个就是梯子形!!!!
4.时钟置换算法(CLOCK) 【不太重要,理解思想就可以了】
目的:
简单的CLOCK算法
过程:3.2_3: 17:00
1.
2.第一轮扫描
第二轮:
按照CPU和IO控制器之前的联系方式分为四种
理解:比如公交车站和公交站台就是为了缓和乘客速度与汽车速度差异性引入的,这里的公交车站或者站台就是所谓的缓冲区
缓冲技术的三大作用:
方式:根据缓冲区的数量分为:单缓冲,双缓冲,多缓冲,环形缓冲,缓冲池。下面是对应的概念,理解即可
缓冲池不考,但是为了将来考虑,还是可以了解一下,如果单纯为了考试,那可以直接略过
缓冲池就是数据库系统里面那个buffer
独占方式,共享方式,虚拟方式(具体的概念理解即可)
相关考题预测:重点看第四个就可以了,前三个只是为了更好理解第四个(建议这部分先看一遍王道考研的视频解析。)
1.什么是虚拟技术?实现虚拟设备的主要条件是什么?
虚拟技术:在一台共享设备上模拟若干台独享设备的操作,把独占设备变成逻辑上的共享设备,这种技术叫做虚拟设备技术
实现虚拟设备的条件是硬件要有大容量的缓冲区,软件要有预输入程序和缓输出程序,井管理程序
2.试述SPOOLing系统和作业调度之间的关系
SPOOLing系统是用一类物理设备模拟另一类物理设备的技术,能使独占式设备变为共享式设备。作业调度程序根据预定的调度算法选择收容状态的作业运行作业表示作业调度程序运行作业调度的依据,是SPOOLing系统和作业调度程序共享的数据结构。
3.为什么SPOOLing技术又叫做假脱机技术?
所谓脱机指的就是脱离主机的控制进行输入/输出操作,SPOOLing的意思是外部设备同时联机操作,是一种用软件模拟的脱机技术
4.SPOOLing是如何把独占式设备改造成共享式设备的
由于现代计算机有较强的并行操作能力,处理器在执行计算的同时可进行联机外
部设备操作,操作系统将一批作业从输入设备上预先输人至磁盘的输人缓冲区中暂存,这称为“预输人”。此后,由作业调度程序调度作业执行,作业使用数据时不必再启动输入设备,只要从磁盘的输入缓冲区中读入即可;类似地,作业执行过程中不必直接启动输出设备,只要将作业的输出数据暂时保存到磁盘的输出缓冲区,当作业执行完毕后,由操作系统组织信息成批输出,这称为“缓输出”。这样,不但设备利用率提高,作业运行时间也缩短了,因为作业执行时需要1/0数据时不再和低速设备联系,而是与高速磁盘交互。可见,操作系统提供外部设备联机操作功能后,不但系统效率会有很大提高,而且使得每个作业感觉各自拥有所需的独占型设备。例如,虽然系统只有两台物理打印机,但是运行的5个作业都感到各自拥有一台速度如同磁盘样快的打印机,可以说采用这种技术的操作系统提供了虚拟设备。SPOOLing 技术是用类物理设备模拟另一类物理设备的技术,是使独占型设备变成共享设备的技术。
1.概念:文件的内部数据如何组织起来
2.分类:
有结构文件(比如数据库关系表):由一组组相似的记录组成,又称为记录式文件。
无结构文件(文本文件):由一些二进制或者字符流组成
3.有结构文件的分类:
1.顺序文件:逻辑上顺序的,但是物理存储上可以是顺序存储也可以是链式存储,然后顺序文件的组织方式主要由串结构和顺序结构两种方式组织,记录又分为定长和不定长,不定长的记录和链式存储都不能实现随机存取,定长记录可以实现随机存取,但是要想实现快速查找,还要求是顺序结构而不能是串结构。
2.索引文件:目的就是为了解决不定长记录查找速率慢。比如SQL中的根据某个关键字建索引表,就是因为数据库中的关系表往往是通过串结构组织的,没有顺序结构的关键字,用索引的好处就是等价于把串结构组织变成了顺序结构组织,同时可忽略记录的不定长特性。
3.索引顺序文件:目的是因为索引文件建立的索引表中每一个索引表项都对应一个记录,索引表的存储空间代价太高了。索引文件时一条记录对应一个索引表项,索引顺序文件是一组记录对应一个索引表项。但是存在的问题就是当记录特别多的时候,比如10000条记录我分成10组,查找平均次数就是5+500=505次,还是有点大,这个时候我们就可以考虑使用多级索引结构了,比如我再在每组里面再分10组,那查找的平均次数就是:5+5+50=60次。
1.概念:多个目录项的集合,一个FCB(文件控制块)就是一个目录项,一个FCB对应一个文件,多个FCB就组成文件目录。
2.目录结构:
3.索引节点(考点,计算题)(注意和物理索引节点相区分)
索引节点的目的和好处就是为了减少磁盘IO次数以及FCB目录表的大小,引入索引节点之后,FCB目录项就只包含文件名和索引节点指针两部分信息,其它信息都包含在对应的索引节点指针指向的索引节点中。
文件的逻辑地址被分为一个个文件“块”,操作系统为文件分配存储空间以块为单位。
文件的物理结构(文件分配方式,文件数据应该怎么放在外存当中):
重点掌握索引分配:(这部分建议直接去看王道视频,解题嘛,最重要的还是思路,下面我只给出相应的题目)
索引分配:
1.链接方案
2.多层索引
3.混合索引
磁盘块大小 = 物理块大小=簇大小=1024B
索引表项 = 盘块号(地址)=地址项长度=4B
一级索引:物理地址块+数据块
二级索引:物理地址块+物理地址块+数据块
解题思路:首先你要明确索引分配方式的蓝图就是磁盘上有许多磁盘块,每个磁盘块存储索引节点块和数据块。文件是被分成一个个文件块存放在磁盘上的,所以当我们知道了文件的大小,物理块(磁盘块)的大小之后,就可以算出一个文件存储需要多少个物理块,然后根据物理块的数量,决定索引的级数,每个物理块又可以存储多个地址(其中的地址可以分别指向另外的磁盘物理块),具体多少个地址要根据地址项长度来计算(n=物理块大小/地址项长度)
在做题的时候,脑袋里一定要有下面这张图(文件是怎么被分成块,然后怎么存的)
书上的例子(这个可以先计算出每一级对应的物理块的数量然后乘以物理块的大小,最后算出每一级能存储的总空间大小,然后用文件大小和算出的相应总空间大小进行比较选择索引的级别即可。)
题目:现在有一个文件占20MB,问需要几级索引来存储这个文件?
解题步骤:
然后再看一道考研题目:
传送锚点
1.算出每个物理块可以存储的地址的数量,然后根据分级计算出总共所需要的物理块数量,最后乘以物理块的大小就得到了最大课存储文件的大小
2.根据索引节点项计算出磁盘实际可以存储文件的个数(索引节点的个数)一个索引节点对应一个文件:64M个。 然后计算理论上可以存放文件的个数:文件存储一定是按照物理块来存储的,不足一个的按一个算,比如题目中的文件大小大约是5KB,然后一个物理块的大小是4KB,因此需要两个物理块来存一个文件。现在又512M个物理块,所以可以存256M个文件,两个比较,所以只能存64M个文件
3.文件存取选择哪个索引是根据它具体大小来判断的(详细可以看上面书上例题),
在本题中直接索引:4KB*8=32KB 所以F1=6KB<32KB采用直接索引,一级索引=1024*4KB=4046KB,所以F2采用一级索引,所以文件获取的时间肯定是不同的。