title: OS
tags: 408
categories: 408
top: false
- OS
总述
操作系统的定义
-
操作系统(operating system,OS)是配置在计算机硬件上的第一层软件,是对硬
件系统的首次扩充,其主要作用是管理硬件设备,提高它们的利用率和系统吞吐量,并为
用户和应用程序提供一个简单的接口,以便于用户和应用程序使用硬件设备。
特征
- (共享、并发【基本特征】)、异步、虚拟
操作系统的基本类型及特征
批处理系统
分时系统
分布式系统
嵌入式系统
- 系统内核小
- 系统精简
- 实时性高
- 具有可配置性
操作系统的功能及特征
- 处理机管理
- 存储器管理
- 设备管理
- 文件管理
- 接口管理
操作系统结构
- 简单结构
- 模块化结构
- 分层式结构
- 微内核结构
- 外核结构
进程
进程的定义、特征
- 进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位
- 特征
- 动态性
- 异步性
- 并发性
- 独立性
进程基本状态及其转换原因
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LHLId7Xe-1684642788359)(https://s2.loli.net/2023/05/20/yMvIDKCkFrLB5ns.png)]
进程互斥、同步(三个同步问题)
生产者-消费者问题
读者-写者问题
哲学家问题
何谓死锁?产生死锁的原因和必要条件是什么?
- 死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进
产生死锁的必要条件
- 互斥条件:必须互斥使用的资源的争抢
- 不剥夺条件:进程保持的资源只能主动释放,不可强行剥夺
- 请求和保持条件:保持某些资源不放,同时请求其他资源
- 循环等待条件:存在一种进程资源的循环等待链
预防死锁
原则:
- 破坏产生死锁的后3个条件,互斥条件是非共享设备必需条件,不可破坏,如果破坏只能改为共享资源(SPOOLing技术等)
破坏不可抢占条件
- 两种解决方式,资源被其他进程占用时,要么把自己已有的资源全部释放让别的进程执行,要么让操作系统协助把所需资源剥夺
- 比较复杂,系统开销大,可能导致饥饿
破坏请求和保持条件
- 运行前分配所有需要的资源,然后保持
- 资源利用率低,可能因为资源无法获得造成饥饿
破坏循环等待条件
- 给资源编号,按编号顺序申请资源
- 会导致资源浪费,且不利于设备扩展和用户编程
死锁避免
数据结构
-
可利用资源向量Available。这是一个含有m个元素的数组,其中的每个元素代表一类可利用的资源数目,其初值是系统中所配置的该类全部可用资源的数目,该数目会随对应资源的分配和回收而动态改变。如果Available[ j]=K,则表示系统中现有Rj类资源K个。
-
最大需求矩阵Max。这是一个n×m的矩阵,它定义了系统中n个进程中的每个进程对m类资源的最大需求。如果Max[i, j]=K,则表示进程i需要Rj类资源的最大数目为K。
-
分配矩阵Allocation。这是一个n×m的矩阵,它定义了系统中每类资源当前已分配给每一进程的资源数。如果Allocation[i, j]=K,则表示进程i当前已分得Rj类资源的数目为K。
-
需求矩阵Need。这是一个n×m的矩阵,用于表示每个进程尚需的各类资源数。如果Need[i, j]=K,则表示进程i还需要Rj类资源K个方能完成其任务。
-
Need[i, j]=Max[i, j]-Allocation[i, j]。
银行家算法
- 步骤
- 检测当前申请资源数是否超过之前声明的最大需求数
- 检测是否有足够资源完成申请,没有则等待
- 尝试分配,更改数据结构
- 用安全性算法检测分配后系统是否处于安全状态。如果是非安全状态,作废当前分配方式,重新尝试
安全性算法
- 检测当前剩余可用资源是否能满足某个进程的最大需求,如果可以就把这个进程加入安全序列,并把该进程持有的资源回收
- 不断重复上面的过程,看能否将所有进程都加入安全序列
- 有点像迪杰斯特拉
进程控制块的内容、作用
-
作用
-
作为独立运行基本单位的标志
-
实现间断性运行方式
-
提供进程管理所需要的信息
-
提供进程调度所需要的信息
-
实现与其他进程的同步与通信
-
8. 用信号量和PV操作机制实现进程的同步和互斥(119)
引入线程的目的
- 是使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么,在OS中再引入线程,则是为了减少程序在并发执行时所付出的时空(时间和空间)开销,以使OS具有更好的并发性
调度
-
作业:一个具体任务
-
高级调度(作业调度)
-
中级调度(内存调度,置换)
-
低级调度(进程调度/处理机调度)
调度算法评判指标
- CPU利用率【忙碌时间 / 总时间】
- 系统吞吐量【完成作业量 / 花费时间】
- 周转时间【作业完成时间 - 作业提交时间】
- 平均周转时间【周转时间和 / 作业数】
- 带权周转时间【作业周转时间 / 作业实际运行时间】
- 平均带权周转时间【带权周转时间之和 / 作业数】
- 等待时间
- 响应时间【用户提交请求到首次产生响应所用时间】
调度算法
-
先来先服务【FCFS】
-
短作业优先【SJF】
-
高响应优先【HRRN】
-
时间片轮转【RR】
-
优先级调度算法
-
多级反馈队列调度算法
连续分配原理和特点
-
内存空间是连续的:在连续分配中,操作系统将可用的内存空间划分为若干块,每个块都是连续的一段内存空间。这种连续性可以方便程序的访问和管理。
-
分配效率高:由于内存空间是连续的,因此在分配内存时,只需要记录空闲块的起始地址和长度即可,分配效率比较高。
-
碎片化严重:连续分配容易出现碎片化问题,即已分配的内存块和未分配的内存块之间形成许多零散的空间,这些空间无法被利用。碎片化会降低内存利用率,使得系统无法分配足够的内存给新的进程,因此需要采取一些措施来减少碎片化问题。
连续分配算法
- 首次适应算法
- 最佳适应算法(容量递增排序,优先选取差值最小分区)(产生很多碎片)
- 最坏适应算法(容量递减排序,优先选取最大分区)
- 邻近适应算法(从上次首次适应算法结束位置开始检索,减少查找开销)(容易无大)
虚拟存储器概念、理论基础
- 特征:多次性
页面置换算法
-
缺页率 = 缺页中断次数 / 访问页面次数
-
最佳置换算法(淘汰之后长时间不使用的页面)
-
先进先出置换算法【FIFO】(淘汰最早进入内存页面)(Belady异常:进程分配的物理块数增大时,缺页次数不减反增)
-
最近最久未使用置换算法【LRU】
-
时钟置换算法【CLOCK】【NRU】
- 改进:优先淘汰未修改页面(访问位 & 修改位同0)
设备
设备分配时应考虑的因素
- 固有属性:独占设备、共享设备、虚拟设备(SPOOLing技术)
- 分配算法
- 安全性
磁盘读写操作所需时间
磁盘的调度算法
- 先来先服务【FCFS】
- 最短寻找时间优先【SSTF】
- 缺点:可能产生饥饿
- 扫描算法【SCAN】
- 电梯算法
- 只有磁头移动到最外侧磁道的时候才能向内移动,移动到最内侧磁道的时候才能向外移动
- 缺点:对于各磁道的响应频率不平均
- 循环扫描算法【C-SCAN】
- 优点:各磁道的响应频率平均
- 缺点:平均寻找时间大
- 【LOOK】算法
- 磁头方向无请求则转向
- 【C-LOOK】算法
- 磁头移动方向无请求则返回
打开文件、关闭文件的操作
- 引入“打开”(Open) & “关闭”(Close)的文件系统调用
- 当用户第一次请求对某文件进行操作时,须先利用系统调用Open将该文件打开。系统将指定文件的属性(包括该文件在外存中的物理位置),从外存复制到内存中的打开文件表的一个表目中,并将该表目的编号(或称为索引号)返回给用户。
- “打开”就是在用户和指定文件之间建立一个连接。
- 此后,用户可通过该连接直接得到文件信息,当用户再次向系统发出文件操作请求时,系统可以根据用户提供的索引号,直接在打开文件表中查找到文件信息。这样不仅节省了大量的检索开销,还显著地提高了对文件的操作速度。
- 如果用户已不再需要对该文件实施相应的操作,则可利用“关闭”(Close)系统调用来关闭此文件,即断开此连接,而后OS将会把此文件从打开的文件表中的表目上删除。
文件的物理结构
顺序结构
-
优点:顺序访问和随机访问
-
缺点:产生碎片,不利于拓展
链接结构
- 隐式
- 除文件的最后一个盘块外,每个盘块都有指向下一个盘块的指针,文件包括文件的第一块和最后一块的指针
- 优点:便于文件拓展,无碎片问题,外存利用率高
- 缺点:只支持顺序访问,存储开销大
- 显式
- 创建文件分配表(FAT),将用于链接文件各物理块的指针都放在该表中
- 优点:便于文件拓展,无碎片问题,外存利用率高,支持随机访问
- 缺点:FAT,存储开销大
索引结构
-
为文件数据块建立索引表,记录索引块的块号
-
单级
-
多级
-
增量式
-
优点:可随机访问,易拓展
-
缺点:存储,读盘
文件存储管理
空闲表法(适用于连续分配方式)
位示图
- 01矩阵
- 盘块号 = 字号*len + 位号
空闲块链法
- 空闲盘区链
- 空闲盘块链
成组链接法
系统调用的过程
- 当OS捕获到应用程序中的该系统调用后,便会将CPU的状态从用户态转换到内核态,然后转向OS中的相应过程,由该过程执行所需的I/O操作。执行完成后,系统又将CPU状态从内核态转换到用户态,返回应用程序继续执行
系统调用与一般过程调用的区别
- 状态切换上的区别
- 权限不同:系统调用是由操作系统内核执行的,因此需要系统管理员或特权用户的权限。而程序级的过程调用是在用户空间中执行的,通常由普通用户发起。
- 开销不同:由于系统调用需要进行状态切换,所以它的执行开销较大。而程序级的过程调用不需要状态切换,因此执行开销较小。
- 执行环境不同:系统调用是在内核态下执行的,而程序级的过程调用是在用户态下执行的。在内核态下,操作系统内核具有更高的权限和更广泛的访问权限,可以执行更多的操作。
- 返回值不同:系统调用的返回值通常是内核返回的错误码或执行结果,而程序级的过程调用的返回值通常是调用过程的执行结果。
- 调用方式不同:程序级的过程调用通常是通过函数调用的方式来实现的,而系统调用则需要使用特定的系统调用函数或指令来实现。
《操作系统R》试卷题型
一、选择题(每题2分,共40分)
二、判断题(每题1分,共10分)
三、简答题(每题5分,共20分)
四、应用题(每题10分,共30分)
UNIX系统多级混合(增量式)索引结构
PV原语操作
逻辑地址 & 物理地址转换,以及转换过程图
简答题
第一章
设计现代操作系统的主要目标是什么
- 在计算机系统上配置OS,其主要目标是实现:方便性、有效性、可扩充性、开放性(P2)
OS的作用表现在哪几个方面
- OS 作为用户与计算机硬件系统之间的接口
- OS 作为计算机系统资源的管理者
- OS 实现了对计算机资源的抽象
可采用哪几种方式将程序装入,它们分别适用于何种场合?
- 绝对装入
- 计算机系统很小,且仅能运行单道程序(驻留在内存中的位置确定)
- 可重定位装入
- 多道程序环境(根据内存的具体情况,将装入模块装入内存的适当位置)
- 动态运行时装入
- 在运行过程中程序在内存中的位置可能经常要改变
试描述什么是微内核OS
- 将操作系统内核的功能划分为最小的独立模块,只保留最基本的功能,如内存管理、进程管理、线程管理、进程间通信等,而将其他功能,如文件系统、网络协议栈等,放到用户空间运行的服务程序中
第二章
在操作系统中为什么要引入进程概念
- 为了使程序可以并发执行,并且可以对并发执行的程序加以描述和控制
试说明PCB的作用
- 作为独立运行基本单位的标志
- 实现间断性运行方式
- 提供进程管理所需要的信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步与通信
同步机构应遵循哪些基本准则
- 互斥原则:同一时刻只有一个进程或线程访问共享资源,其他进程或线程需要等待。
- 同步原则:进程或线程之间需要相互协调,按照一定的顺序执行,避免出现竞争条件和死锁等问题。
- 空闲让进原则:当没有进程或线程访问共享资源时,应该立即让其他等待的进程或线程进入临界区。
- 忙则等待原则:当共享资源已被其他进程或线程占用时,应等待直到占用者释放资源。
- 有限等待原则:等待进程或线程应该有限时间内获得共享资源,避免出现死锁等问题。
线程具有哪些属性
- 线程是进程内部的一个独立执行单元,具有独立调度和执行、共享进程资源、轻量级、并发执行、共享代码段、独立的堆栈空间和状态等属性
临界资源、临界区
-
临界资源是指在多个线程或进程之间共享的资源。由于多个线程或进程同时访问临界资源可能会引发竞争条件和数据不一致等问题,因此需要使用同步机制来保护临界资源的访问
-
临界区是指访问临界资源的代码段,只有一个线程或进程能够进入临界区执行临界资源的访问操作,其他线程或进程需要等待。在临界区中,需要使用同步机制来保证临界资源的正确性和一致性,避免出现竞争条件和数据不一致等问题
第三章
为什么说多级反馈调度算法能较好地满足各方面用户的需要
- 由于每个队列都有不同的时间片大小和优先级,因此多级反馈调度算法可以较好地平衡各个进程的响应时间和吞吐量,能够同时满足交互式和批处理等不同类型的用户需求
在选择调度方式和调度算法时,应遵循的原则时什么
- 围绕评判标准胡扯
高级调度与低级调度的主要任务是什么?为什么要引入中级调度
-
高级调度(也称作作业调度)的主要任务是从作业队列中选择一个或多个作业进入内存,为之分配足够的资源,以便它们可以运行。高级调度的目标是提高系统的资源利用率和吞吐量。
-
低级调度(也称作进程调度)的主要任务是从就绪队列中选择一个进程调度器,为之分配CPU资源,以便它可以运行。低级调度的目标是提高系统的响应时间和公平性。
-
中级调度主要任务是将一些长时间运行的进程从内存中移出,以便为新的进程腾出空间,或者将一些低优先级的进程移出内存,以便让高优先级的进程更快地得到执行。中级调度的目标是平衡系统的资源利用率和运行效率。
第五章
有哪几种I/O控制方式
引入缓冲的主要原因
- 为了解决不同设备之间的速度不匹配和处理器与I/O设备之间的速度不匹配问题
试说明SPOOLING系统的组成
- 输入/输出队列:用于存储等待处理的I/O请求,分为输入队列和输出队列两种。
- 缓冲区:用于暂存输入和输出数据,以便进行处理和传输。
- 控制程序:用于管理输入/输出队列和缓冲区,控制I/O设备的访问和数据传输。
- 设备驱动程序:用于管理I/O设备的驱动程序,实现数据的输入和输出。
- 作业调度程序:用于按照一定的顺序处理输入/输出请求,提高计算机系统的效率和可靠性。
- 存储管理程序:用于管理SPOOLing系统使用的磁盘等外部设备的存储空间,确保输入/输出数据的可靠存储和传输。
- 系统日志:用于记录系统的操作和状态,方便进行故障排除和系统管理。
试说明设备驱动程序应完成哪些功能
①接收由与设备无关的软件发来的命令和参数,并将命令中的抽象I/O要求转换为与设备相关的低层操作序列
②检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置I/O设备的工作方式
③发出I/O命令,如果I/O设备空闲,则立即启动它,完成指定的I/O操作;如果I/O设备忙碌,则将请求者的请求块挂在I/O设备队列上等待;
④及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。
第六章
文件系统的模型可分成三层,试说明其每一层所包含的基本内容
- 物理层:物理层是文件系统的最底层,主要负责管理存储设备的物理结构和存储空间分配
- 文件层:文件层是文件系统的中间层,主要负责文件和目录的管理和组织
- 逻辑层:逻辑层是文件系统的最高层,主要负责文件的逻辑管理和访问控制
何谓逻辑文件?何谓物理文件?
-
逻辑文件:逻辑文件是指用户在文件系统中创建的抽象文件,它是用户在操作系统中定义的一个逻辑实体,与具体的物理存储设备无关。逻辑文件通常由文件名和文件属性等信息组成,可以通过文件系统提供的接口进行访问和操作
-
物理文件:物理文件是指逻辑文件在存储设备上的实际存储形式,它是由操作系统管理的一组物理数据块,存储在磁盘等存储设备上。物理文件的组织形式和存储方式会对文件系统的性能和效率产生影响。
对目录管理的主要要求是什么
- 实现“按名存取”
- 提高对目录的检索速度,通过合理地组织目录结构,可加快对目录的检索速度,从而提高对文件的存取速度
- 文件共享,在多用户系统中,应允许多个用户共享一个文件。这样,只须在外存中保留一份该文件的副本供不同用户使用即可
- 允许文件重名,系统应允许不同用户对不同文件采用相同的名字,以便用户按照自己的习惯给文件命名和使用文件
目前广泛采用的目录结构形式是那一种?它有什么优点?
-
树形目录结构,也叫层次目录结构
-
易于管理和查找
-
支持多层次的组织方式
-
支持文件和目录的重命名和移动
-
支持共享和访问控制
-
支持备份和恢复
-
易于扩展和维护
基于索引结点的文件共享方式有何优点?
- 灵活性:支持多个用户或进程同时访问同一个文件,可以方便地进行文件共享和数据传输。
- 安全性:可以对共享文件进行访问控制和保护,可以保护文件系统中的数据安全。
- 效率性:可以减少数据传输和复制,可以提高数据传输效率和文件系统的性能。
- 可靠性:可以保证共享数据的一致性和可靠性,可以避免数据冲突和损坏。
- 易于管理:方便地进行文件管理和维护,可以根据需求进行动态调整和优化。