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