操作系统简答
- 操作系统在计算机系统中的地位?它是主要功能是什么?
操作系统是管理计算机软硬件资源,控制程序执行,改善人机界面,合理组织计算机工作流程和为用户使用计算机提供良好运行环境的一种系统软件。
操作系统在计算机硬件之上,在应用程序之下
主要功能:处理器管理、存储管理、文件管理、设备管理、用户接口
- 机制与策略的关系
机制是需要实现什么样的功能;策略是如何去实现这样的功能
比如死锁避免是一种处理死锁的机制,而银行家算法是一种处理策略
- 操作系统为用户提供了哪几种接口,有什么特点?
两种接口
命令接口:面向普通用户,通过命令行和GUI界面使用户能方便的操作计算机
系统调用:面向专业用户,允许他们通过系统调用访问底层代码
- 系统调用和API有什么区别和联系
系统调用和API相似但不等同,API是对系统调用的一种封装,隐藏了系统调用的繁杂的细节。使用API编程的好处是程序可移植性高,比系统调用更容易使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-71mD2Rpo-1639103612965)(C:\Users\11569\AppData\Roaming\Typora\typora-user-images\image-20211209100434841.png)]
区别:和内核的关系
联系:和内核打交道的API是对系统调用的封装
- 操作系统的设计目标
方便性、高效性、易维护性、开放性(可移植性)
- 为什么要有内核态和用户态?
内核态:具有对处理器的所有指令、寄存器和内存的控制能力
用户态:只能执行规定的指令,访问指定的寄存器和存储区
系统进程运行在内核态下,用户进程运行在用户态下,不能执行操作系统的指令和访问的区域,有效保护操作系统不被用户程序破坏。
- 什么是微内核,微内核的优点?
微内核就是将内核中最基本的功能保留在内核,将其他不需要在内核执行的功能移到用户态执行,降低了内核设计的复杂性,提高了操作系统的可靠性,同时具有良好的可扩展性和可移植性。
- 操作系统为什么要引入进程?
因为程序是一个静态的概念,操作系统需要一个动态的,能描述程序的执行过程以及共享资源的基本单位,也就是进程,来管理、控制、约束并发程序的执行。
- 进程和程序的区别与联系?
- 进程是动态的,暂时的;程序是静态的,永久的
- 进程是程序的执行,包括程序和数据;程序是一组代码的集合,没有建立进程则无法运行
- 进程是程序功能的体现;程序是产生进程的基础
- 通常有哪些事件会导致创建一个进程?
终端用户登录系统时会创建初始进程
现有的进程可以派生子进程
操作系统可以为用户创建服务进程
操作系统处理完一批作业时,作业调度程序会为下一批作业创建新的进程
- 简述创建一个进程的过程
首先申请空白的PCB–》为进程分配空间分配包括程序、数据等–》将新进程插入到就绪队列和进程隶属关系族群中–》创建或扩充其他数据结构
- 使用fork函数创建子进程时,子进程有什么特点?父进程与子进程被调度的顺序是怎样的?
子进程具有和父进程同样的代码和数据,子进程创建成功返回0
调度顺序:父子进程从相同的地方开始并行执行,调度顺序由调度策略决定
- 进程控制块PCB存储哪些信息,作用是什么?
存储:进程的描述信息、控制信息和资源信息。(一切操作系统需要的,用于描述和控制进程运行的信息)
作用:操作系统通过PCB感知进程的存在,掌握进程的状态以达到管理和控制进程的目的。
- 什么是线程?进程与线程的区别与联系?
线程是轻型进程,线程是一个可独立执行和调度的基本单位,但不再是拥有资源的独立单位。它只拥有运行时必要的资源,它可以与同属于一个进程的其他线程共享该进程的资源。
区别与联系:(在引入了线程的系统中)
基本单位:进程是系统分配资源的基本单位;线程是调度和分派的基本单位。线程的切换不会引起进程的切换。
并发性:进程可以并发执行,同一进程内的线程也可以并发执行。这样的系统又更好的并发性。
创建、切换、销毁:进程是拥有资源的独立单位,线程只有少量资源,但它可以访问隶属进程的资源。因此线程更加轻量级,所以线程的创建、切换、销毁开销也比进程小。
通信与共享:同一进程内的线程共享该进程的所有资源,在同一个地址空间内,通信无须内核,通信开销小。
- 写时复制
目的是避免不必要的内存拷贝
父进程创建子进程时,最初父子进程共享内存空间,等到子进程修改数据时,才真正分配内存空间,而未被修改的页面仍然共享。
- 线程池技术引入的原因是什么?有什么优缺点?
原因:为了减少管理线程而产生的开销引入了线程池
优点:避免了管理线程产生的开销;保证内核的充分利用;防止过分调度
缺点:
使用上:线程池不支持线程创建销毁通知等的交互式操作;线程池不能规定线程的使用顺序;池化线程不能命名
性能:池化线程一般是后台线程,优先级不高;池化线程阻塞会影响性能;线程池使用全局队列,会出现竞争资源的情况。
- 什么是进程互斥?什么是进程同步?
进程互斥:同一时间段只能由一个进程访问临界资源。是间接制约关系
进程同步:为完成某个任务而建立的多个进程并发执行,他们之间有依赖关系,只能以某种次序执行。是直接制约关系
- 信号量的物理意义是什么?
s<0:|s|是等待使用该资源而阻塞的进程个数
s=0:无资源可用,或不允许进程进入临界区
s>0:可使用的资源数量
- 硬件机制解决互斥问题的机制有哪些?有什么缺陷?
禁用中断:不能使用中断,也就意味着临界资源的访问是原子的
缺陷:代价太高;不能用于多处理器结构
使用专用机器指令:(相当于上锁)
缺陷:导致CPU空耗;导致饥饿进程
- 忙等的含义是什么?操作系统还有哪些形式的等待?它们有什么缺陷?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gItSwQVt-1639103612967)(C:\Users\11569\AppData\Roaming\Typora\typora-user-images\image-20211209155700925.png)]
- 为什么要对进程的并发执行进行控制
有交互的并发进程执行时一定会共享某些资源,多个并发进程之间也往往存在某些制约关系,如果不加以控制,那么就会出现很多问题,进程可能不能正确而顺利的执行下去。
- 简述产生死锁的 4 个必要条件。举一个例子,虽然这 4 个条件都满足,但不产生死锁。
必要条件:互斥、占有且等待、不可剥夺、循环等待
不一定产生死锁:多体资源类
- 简述处理死锁的 3 种方法的基本思想,简要分析它们各自的利弊。
死锁预防:破坏产生死锁的四个必要条件之一
实现简单但是系统效率低
死锁避免:用相应的算法确保系统一直处于安全状态
实现较为复杂,但进程可以有更高的并发性。
死锁检测与恢复:允许进程在运行过程中发现发生死锁,后续可以通过系统的检测机构及时检测死锁的发生并解除死锁。
需要代价
- 简述三种类型的处理器调度
长程调度:又称作业调度,将外存中处于后备队列的作业调入内存,为它们创建进程,插入就绪队列中。
中程调度:又称交换调度,将内存中那些暂时不能运行的进程调出到外存等待,当这些进程具备运行条件,并且内存有足够空间时,将他们重新调入内存
短程调度:又称进程调度,决定就绪队列中的哪个进程获得处理器,然后将处理器分配给该进程的操作。
- 抢占式调度和非抢占式调度有何区别?
非抢占:一旦把CPU分配给某个进程,那么该进程就会保持CPU到运行完毕或者转换到阻塞态。实现简单,系统开销小。
抢占式:当一个进程正在执行时,一旦有某个更重要或更紧迫的进程需要使用处理器,就立即暂停执行的进程,将处理器分配给优先级更高的进程。
- 多级反馈轮转调度算法中,为什么对不同就绪队列中的进程使用不同长度的时间片?
如果都设置相同的时间片,较短的进程在不同优先级的就绪队列中降级几次就会结束执行,但是较长的进程会经过较多次的降级调度,就会导致较周转时间增加。为了改善这一状况,就给优先级越低的就绪队列设置越长的时间片。
- 硬实时任务和软实时任务有什么区别?
硬实时任务必须满足最后期限
软实时任务希望能满足最后期限,但是对最后期限的要求不是强制的。
- 名词解释:逻辑地址、物理地址、地址重定位、局部性原理、覆盖与交换
逻辑地址:程序经过编译之后,每个单元从0开始编址,这就是逻辑地址
物理地址:内存中每个物理存储单元分配一个号码,这个号码就是物理地址
地址重定位:从逻辑地址到物理地址的转换过程
局部性原理:程序在执行的过程中,在一个较短的时间内,指令的地址和操作数地址分别局限在一定的区域内。
覆盖与交换:
覆盖就是将程序分段,常用的段驻留在固定区内,不常用的段放在覆盖区,且不可能被同时访问的程序段共享同一个覆盖区,使用时调入内存。
交换就是在内存吃紧时将暂时不会执行的进程换出内存,将外存中已经具备运行条件的进程换入内存。
- 存储保护的目的是什么?在页式存储管理中如何进行存储保护?
目的:为了使系统正常运行,避免内存中各进程相互干扰。
(为了使系统正常共,必须防止因为一个进程出错而破坏其他进程的现象产生;还需防止一个用户进程不合法访问其他进程的内存空间。)
页式存储保护:防止地址越界方面,在地址转换时产生的页号应该小于页表长度,否则视为越界访问;在防止操作越权方面,在页表中对每项增加存取控制字段,访问某页时,先判断该字段是否允许某操作。
- 什么是系统抖动?产生抖动的原因是什么?
系统抖动:随着进程数量的增加,CPU的利用率上升,但是若同一时间进程数过多,每个进程占用的页帧数变少,导致缺页率上升,CPU利用率下降,但是系统认为是进程数量太少导致CPU利用率下降,于是继续加进程,导致缺页率更高的恶性循环。
原因:
- 页帧分配太少;
- 置换算法选择不当
解决策略:
- 工作集策略:统计工作集近似得到需要的页帧数,与物理页帧对比
- 缺页率策略:监测缺页率
最佳实践方法:在可能的情况下提供足够的物理内存以避免抖动和交换。
- 简述页式存储管理和段氏存储管理的区别
划分的思想:
- 页式以页为单位,为管理内存方便划分。是系统划分的,大小固定,对用户而言是透明的。
- 段式以段为单位,根据用户的需要划分。是用户划分的,大小不固定,对用户而言可见。
虚地址:
- 页式向用户提供一维地址空间
- 段氏向用户提供二维地址空间
共享与访问控制:
- 页式不容易共享,访问控制困难
- 段氏便于共享,易于实现访问控制
动态链接:
- 页式不支持动态链接
- 段氏支持动态链接
- 内存保护是否可以完全由软件实现?为什么?
不可以,一般是硬件保护机制为主,软件为辅。因为完全用软件实现系统开销太大,速度成倍降低。
(硬件保护机制:当发生越界或非法操作时,硬件产生中断,进入操作系统处理。)
- 内存管理的目标和任务分别是什么
目标:合理分配和利用存储器,使得系统中的进程都能高效利用有限的内存资源
任务:
- 存储分配与回收:根据进程的需要为它们分配合理的内存资源,实现内存共享,提高内存利用率。
- 存储保护:为分配给用户的内存提供存储保护
- 存储扩充:提供逻辑上的内存扩展,使得用户拥有比内存实际容量更大的存储空间,方便编程和使用
- 内部碎片和外部碎片的区别?
内部碎片:分配给进程的内存区域中,有些部分没有用到。
外部碎片:内存中某些空闲分区由于太小而难以利用
- 文件系统的功能
系统角度:文件系统对文件存储器(磁盘)的存储空间进行组织、分配和回收,负责对文件的存储、检索、共享和保护
用户角度:文件系统主要实现“按名存取”
- 文件系统如何实现按名存取?
目录管理程序为每个文件建立目录项,并对众多的目录项加一有效组织,可以方便的实现按名存取。
- 名词解释:文件、文件控制块、文件目录、文件系统
文件:文件是以计算机硬盘为载体存储在计算机上的信息集合
文件控制块:FCB,是操作系统为管理文件而设置的一组具有固定格式的数据结构,存放为了管理文件所需的所有属性信息。也是文件目录中的目录项
文件目录:文件目录是专门管理文件名与文件物理位置这种映射关系的数据结构。
文件系统:文件系统是操作系统实现文件统一管理的一组软件
- 文件控制块与文件的关系
文件控制块和文件一一对应,文件控制块中存储着管理文件所需要的所有属性信息,是操作系统和文件之间的联系纽带
- 虚拟文件系统的功能和优势是什么?
功能:隐藏各种硬件的具体细节,把操作和不同文件系统的具体实现细节分开,为所有设备提供了统一的接口,可以支持十多种不同的文件系统
优势:方便用户访问不同的文件系统
- 用户级线程和内核级线程比较
用户级线程:线程的管理工作都是应用程序完成的。线程对内核是透明的,内核以进程为单位进行调度。操作系统提供一个线程库给用户对线程操作。
- 优点:切换线程不需要内核参与,开销小;用户可以自行选择调度算法;可以运行在任何操作系统上
- 缺点:一个线程阻塞,会导致所属进程的所有线程阻塞;无法调度使用多处理器技术,因为内核只为进程分配一个处理器
内核级线程:线程的管理工作是内核完成的。用户通过API来进行进程管理。
- 优点:多个线程可以调度到多个处理器并行执行,即一个线程阻塞不会影响同一进程中其他线程;内核程序本身也可以多线程执行,提高了系统并行性
- 缺点:线程切换时需要内核参与,开销大
- 名词解释:设备控制器、虚拟设备、IO端口、设备独立性
设备控制器:设备控制器是CPU和IO设备之间的接口,能接收CPU发来的命令,控制一个或多个IO设备工作,实现计算机和IO设备之间的数据交换,减轻CPU的负担。
虚拟设备:通过虚拟技术将一台设备虚拟成多台逻辑设备,供多个进程使用。这种设备叫虚拟设备
IO端口:在IO控制器中CPU能访问的各类寄存器端口。设备驱动程序能通过IO端口控制外设进行IO操作,对IO端口的读写就是对IO设备的读写。
设备独立性:即应用程序独立于具体使用的物理设备。
- IO设备与控制器之间的关系
设备控制器是CPU和IO设备之间的接口,能接收CPU发来的命令,控制一个或多个IO设备工作,实现计算机和IO设备之间的数据交换,减轻CPU的负担。
一个设备控制器可以关联多个设备
- 简要描述使用中断控制方式和DMA方式进行内外存之间数据传输的基本原理,对比优缺点
中断控制:引入中断处理机构,CPU向IO设备发出IO指令之后可以调度其他进程进行执行,当IO操作完成时,向CPU发送中断信号。这样CPU无须空转轮询,提升了CPU和外设之间的并发执行能力。
- 优点:CPU利用率大大提高,能支持多道程序和设备的并行操作
- 缺点:一次数据传输过程中,中断次数较多;CPU由于中断次数增多而无法响应中断,出现数据丢失。
DMA:
一个进程有IO请求时,CPU初始化DMA–》该进程进入阻塞状态,调度其他进程执行,DMA就控制整个数据的传输–》数据开始传输时,DMA接管数据地址总线的控制权(窃取CPU的内存使用周期),将数据送入内存单元–》恢复CPU对数据总线的控制权–》数据不断传输,该过程不断循环直到传输结束–》一批数据传输完毕,DMA向CPU发出中断信号,CPU转而处理请求数据进程,使其变成就绪状态,再返回被中断进程继续执行。
- 优点:提高了CPU与外设的并行工作程度,排除了中断方式中数据丢失的情况
- DMA主要用于内存中连续存放数据的IO传输,对不连续的数据块要多次DMA方式;系统中多个DMA同时使用会造成内存冲突,管理和控制复杂。
(补充)通道:
和DMA方式类似,初始化通道–》阻塞进程,调度其他进程执行–》通道负责数据交换–》交换完成,发出中断信号–》关闭通道,将请求进程变为就绪态,返回被中断进程继续执行
- 优点:进一步减少CPU对数据传输的控制,即把以一个数据块为读写单位的干预变为以一组数据块的读写为单位的干预;同时并行性更高,提高系统利用率
- 设备的分配过程
首先根据IO请求的物理设备名,查找系统设备表(SDT),找到对应的设备控制表(DCT),查看DCT中设备状态,判断忙否,安全否;
分配设备后,查找DCT,找到对应的设备控制器表(COCT),查看控制器状态,判断忙否;
分配设备控制器后,查找COCT,找到对应的通道表(CHCT
),判断通道忙否。
三者都分配成功,本次设备分配才算成功。
- 设备驱动程序的主要功能,在系统中的地位?
功能:
- 接收用户发来的命令和参数,并转换成与设备相关的底层操作序列
- 检查用户IO操作的合法性
- 发出IO命令,若设备空闲则立即启动IO设备,完成指定的IO操作后及时响应设备控制器发来的中断请求,并调用相应的中断处理程序进行处理。
地位:
是一种可以使计算机和设备通信的特殊程序,相当于硬件的接口,操作系统只有通过这个接口才能控制硬件设备工作。操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。
(设备驱动程序是CPU和设备控制器之间的部分)
- 什么是SPOOLing技术?使用SPOOLing的例子
SPOOLing技术是一种虚拟技术,它采用缓冲技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程使用。
实例:将一台独享打印机改造为可供多个用户共享的打印机
- 进程读取硬盘耗费的时间有哪几部分组成?
磁盘读写时间=寻道时间+旋转延迟时间+数据传输时间