操作系统-复试

Posted by wzc on 2021-03-31

1. 覆盖和交换技术

首先,覆盖和交换技术都是内存扩充技术,利用外存来逻辑的扩展内存

覆盖是一个程序中的若干程序段共享某一存储空间,基本单位是程序段,是进程的一部分;其实现是将程序划分为若干个功能上相互独立的程序段,按照自身的逻辑结构使不会同时执行的程序段共享同一块内存空间,前一段程序段执行结束后,后续的程序段调入内存,覆盖前面的程序段。

当然,这种程序段的划分,需要开发人员(用户)来实现,增加用户的负担

交换技术是指一个作业装入内存后,仍然可以将其交换出内存或再交换入内存(传统是一个程序进入内存便一直运行到结束),基本单位是整个进程的地址空间由操作系统完成发生在不同程序之间

思考三个问题:

​ 1.应该在外存的什么位置保存被换出的进程

​ 具有对换功能的操作系统,通常把磁盘空间划分为文件区和对换区,对换区比文件区的速度快,存放在对换区

​ 2.应该在什么时候交换

​ 交换通常发生在内存吃紧时,当发现许多进程经常发生缺页时,可换出一些进程,如果缺页率明显下降,就可以暂停换出

​ 3.应该换出哪些进程

​ 可优先换出阻塞进程,注意:PCB会常驻内存,不会被换出内存

2. 进程和线程

进程是指程序在一个数据集合上运行的过程,是系统资源分配和调度的独立单位。习惯上,我们定义进程为:程序的一次执行

线程是进程中的实体,是被系统(CPU)独立调度和分配的基本单位,线程自己不拥有系统资源,只拥有一些在运行中必不可少的资源,但它可以与同属一个进程的其他线程共享系统资源。

关系:一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行。

比较:

  • 调度:线程作为调度和分配的基本单位,进程作为资源拥有的基本单位,显著提高系统的并发程度,同一进程中线程的切换不会引起进程的切换,不同进程中线程的切换会引起进程的切换
  • 并发性:一个进程中的多个线程之间,亦可并发执行,因此操作系统具有更好的并发性。
  • 拥有资源:一个进程的代码段、数据段以及系统资源,可供同一进程的所有线程共享
  • 系统开销:进程切换的开销明显大于线程的开销,线程的切换、同步和通信都无需操作系统内核的干预

3. 系统调用

1) 系统调用与库函数

WX20210323-172948@2x

高级语言中的库函数使用系统调用,隐藏掉系统调用的一些细节。

系统调用背后的过程:

其中int指令之后,引发内中断,从而使CPU进入核心态,处理之后的操作

系统调用会使处理器从用户态进入核心态

系统调用发生在用户态,对系统调用的处理发生在核心态

4. 进程通信

1)共享存储

​ 临界区/临界资源

  • 使用临界资源的原则:

    • 空闲让进

    • 忙则等待

    • 有限等待

    • 让权等待

      当进程不能进入临界区时,应立即释放处理机,防止进程忙等待

    • 多中择一

2)消息传递

3)管道通信

半双工通信!!!

4)套接字

5. 进程调度

为什么要进程调度:

首先,明确作业通常是指一个正在准备进入内存的程序,当进入内存后,称为进程,因此有作业调度和进程调度,作业调度又称为高级调度,由用户决定哪个作业进入内存,而进程调度又称为低级调度

当有多个作业进入内存,也就是说选择了一个作业集合来运行,系统要为作业建立起一组进程,即所谓的多个程序并发执行,这组进程协同运行,以便共同完成该作业的计算任务,那么就存在进程调度问题。

进程调度的职能就是动态的、合理的把处理机分配给就绪队列中的某一进程,使该进程投入运行。

进程调度算法:

  • 先来先服务(FCFS)

    按照进程就绪的先后顺序来调度算法,先到达的进程优先级越高

  • 轮转调度

    所有进程都执行相同的时间片,优先分配就绪队列的第一个进程,当时间片用完之后,便被迫释放处理机给下一个处于就绪队列的第一个进程

  • 分级轮转法/多级队列调度

    将就绪队列分为若干个队列,不同的队列具有不同的优先级,不同的就绪队列采用不同的调度算法

  • 优先级法

    按照进程的优先级分配时间片,根据已占有的进程是否可被剥夺,可分为:

    • 非抢占式/优先占有法

      一旦某个最高优先级的就绪进程分得处理机之后,只要不是其自身的原因被阻塞而不能继续运行时,就一直运行下去,直到运行结束

    • 抢占式/优先剥夺法

      当一个正在运行的进程其时间片未用完时,当有更高优先级的进程处于就绪队列时,优先级更高的进程就可以取代目前正在运行的进程

  • 其他

6. 进程同步与异步

异步:

进程异步是指进程互不影响,运行无序,一个进程不需要一直等下去,而是继续执行下面的操作,不管其他的进程的状态

特点:

非阻塞模式,无需等待,彼此独立,线程是异步实现的一个方式

同步:

进程同步是指进程之间有相互合作的协同工作关系,有前后次序的等待关系,一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么,这个进程将会一直等待下去,直到收到返回信息才继续执行下去

特点:

阻塞模式,按顺序执行,需要等待,协调运行

互斥;

进程互斥是指一个进程运行某个操作时,另一个进程不能做这个操作

进程间的互斥和同步是一种通信方式,进程通过修改信号量或其他方式与另一进程通信

7. 死锁

死锁产生的原因:一是系统提供的资源不能满足每个进程的使用;二是在多道程序运行时,进程推进顺序不合法

死锁产生的必要条件:

  • 互斥条件

    一个资源每次只能被一个进程使用

  • 不可剥夺

    进程已获得的资源,在未使用完之前,不能被其他进程剥夺,只能自己释放

  • 请求和保持

    进程已经保持了至少一个资源,但又提出了新的资源要求,而请求的资源被其他进程占有

  • 循环等待

    前一个进程占有的资源正是后一个进程请求的资源

预防死锁:–破坏产生死锁的四个条件

  • 资源独占

    将一个进程需要的资源一次性全部分配

  • 资源顺序分配–破坏了循环等待条件

  • 资源受控动态分配—银行家算法

死锁处理:

  • 资源剥夺法
  • 撤销进程法

8. 线程间通信机制

  • 锁机制:互斥锁、条件变量、读写锁
  • 信号量机制
  • 信号机制

9. 线程间通信的方式

  • 临界区
  • 互斥量
  • 信号量
  • 事件

10. 一个鼠标点击引发的操作系统的工作

鼠标单击屏幕的图标时,首先由鼠标按钮产生中断,然后转入操作系统的中断处理,之后通过相应的分析程序获取屏幕上图标所在的坐标,从而得知是哪个程序,在将该程序调入内存之前,首先由进程管理模块为此程序建立进程,再由存储管理模块为此程序分配内存,然后由文件管理系统提供该程序在外存上的位置等属性,文件管理系统调用设备管理模块启动磁盘驱动器,并将该程序由磁盘读取到内存中

鼠标点击->请求中断->操作系统中断处理->相应的分析程序获取图标的坐标->获知哪个程序->进程管理建立进程(程序+数据+PCB)->存储管理模块分配内存->文件管理系统提供程序在外存上的位置->文件管理系统调度设备管理器,启动磁盘驱动器->磁盘驱动器将程序读入内存->等待进程调度

11. 存储体系

  • 寄存器-内存-外存
  • 寄存器-缓存-内存-外存(目前主流)

12. 存储管理的功能

存储分为内存和外存,内存空间是指由存储单元组成的一维连续的地址空间,统称为内存空间,用来存放当前正在运行的程序的代码和数据

内存至少划分为两个区域,一个是操作系统本身,另一个区域是用于安置用户程序

存储管理解决以下问题:

  1. 内存的分配和回收
  • 记录每个存储区域的状态,使用相应的表格记录,空闲还是已分配
  • 完成分配
  • 回收
  1. 存储保护
  • 地址越界保护

保证每个进程都具有相对独立的地址空间

  • 权限保护

对公共区域的访问加以限制和检查

  1. 地址转换

源程序经过汇编、编译连接,形成目标代码

地址转换是将目标代码中的相对地址转换为计算机物理内存中的实际地址

相对地址的集合叫做相对地址空间,或地址空间

绝对地址空间的集合称为绝对地址空间,或存储空间

根据重定位的时机,可分为静态重定位和动态重定位

  • 静态重定位

程序执行之前完成,连接程序在生成统一地址空间和装配模块的时候,还应产生一个重定位表,表中存储的是相对地址所表示的位置

操作系统的装入程序要将装配模块和重定位表一起装入内存,然后根据重定位表修改重定位项,重定位表被丢弃。

优点是无需硬件支持

缺点是程序定位后就不能再在内存中移动,要求程序的存储空间是连续的

  • 动态重定位

程序执行中进行,即在每次访问内存单元前完成地址转换

优点是目标模块无需修改,相互独立的目标模块不必顺序相邻

缺点是需要硬件支持,需要定位寄存器和加法器

  1. 存储共享

  2. 扩充内存容量

13. 分区存储管理

分区的划分方式很多,可将其归纳为两类,一类是固定式分区,另一类是可变式分区

可变式分区无内碎片,但有外碎片

固定分区无外碎片,但有内碎片

可变分区的分配算法:

  • 最佳适应算法-碎片尽量小
  • 最先适应算法-减少查找时间
  • 最坏适应算法-使剩下的空区最大,减少空区碎片机会
  • 下次适应算法-每次分配从上次分配的位置开始找合适的空闲区

再定位分区和多重分区:

其中固定分区、可变分区、再定位分区是不可共享的,多重分区是可共享的

多重分区是指将一个作业分为若干个部分,每一个部分一个分区。这样一个作业就有多个分区,可共享的数据就可以和其他作业共享。

14. 页式存储管理

  1. 什么是页式管理

页式管理是将内存分为若干个大小固定的页块,同样,用户程序的虚拟地址空间划分为同样大小的若干页面,按照这种页式的概念,用户访问内存的地址形式由相对页号和页内地址组成。

要为每个被装入内存的进程提供一张页表,页表的起始地址和长度均存放在进程的进程控制块中。

  1. 和分区管理的区别

分区管理方式管理内存时,每道程序都占用内存的一个或几个连续的存储空间,但当内存中无足够的连续空间时,程序就无法装入,必须移动已在内存中的某写程序后才能再装入新的程序,这不仅不方便,而且系统开销也增大。

引入分页后,可以把逻辑地址连续的程序分散存放在几个不连续的内存空间中

  1. 页表为什么要隐藏页号

我们只需要知道页表的其实位置,根据「起始地址+块号长度*页块号 」即可得到对应的内存块号。

页表中只有一列,存储的是内存块号

从地址转换过程来看,若页表存放在内存中,一次读(或写)的操作要访问两次主存,第一次内存访问是读取页表,找到数据的物理地址,第二次内存访问才是存取数据。

15. 段式存储方式

按照程序自身的逻辑关系划分为若干个段,每个段拥有一个段名,每段从0开始编址,每个段的长度不定

内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间

分段的地址空间是二维的,程序员在标识一个地址时,既需要给出段名,又需要给出段内地址

16. 段页式存储方式

分段VS分页 优缺点:

原理是:将用户程序分为若干个段,然后把每个段划分为若干个页,在段页式系统结构中,

​ 逻辑地址结构:段号+段内页号+页内地址

​ 段表寄存器:段表大小+段表始址

​ 段表项构成:段号(隐含)+页表始址+页表长度

​ 页表项构成:页号(隐含)+内存块号/物理块号

​ 物理地址:内存块(页)号*块(页)长+页内地址 或者 内存块号和页内地址二进制拼接

一个作业一个段表,一个段一个页表

17. 虚拟存储管理

解决一个作业必须存放在一个连续的内存中,虚拟存储基本思想是:不必将程序全部装入内存,而只需将当前需要执行的部分页或段读入内存。

虚拟页式存储

基本思想是进程开始之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程需要的,动态的装入其他页面,当内存空间已满,需要进行淘汰。

18. 页面置换算法

  • 先进先出FIFO
  • 最近最久未使用LRU
  • 最少使用LFU
  • 最佳置换OPT

19. 文件目录

  • 文件控制块
  • 目录结构
  • 索引节点

基本作用:按名存取目录

目录文件存放在外存中

20. 磁盘管理

磁盘调度:

目的:进程请求访问磁盘时,使磁盘的平均寻道时间最少

磁盘调度算法:

  • 先来先服务FCFS
  • 最短寻道时间优先SSTF
  • 扫描算法
  • 扫描SCAN/电梯算法
  • 循环扫描CSCAN

思考:为什么磁盘的物理地址是(柱面号,盘面号,扇区号),而不是(盘面号,柱面号,扇区号)呢?

因为在读取地址连续的磁盘块时,可以减少磁头移动的时间

如:读取000,00,000~000,01,111时,第二个地址由00变为01时,柱面可以不用改变,即减少了磁头移动的时间。

21. 软链接和硬链接

22.I/O输入输出硬件

I/O控制器(I/O端口)的功能

  • 接受和识别CPU发出的命令–控制寄存器
  • 向CPU报告设备的状态–状态寄存器
  • 数据交换–数据寄存器
  • 地址识别–识别不同设备–I/O逻辑实现
    • 内存映像编址
    • 寄存器独立编址–设置专门的指令对寄存器进行操作

操作系统的I/O控制方式是指操作系统控制I/O设备执行I/O操作的方式,主要有程序直接控制方式、中断方式、DMA方式和通道控制方式。

  • 程序直接控制方式

    1.干预的频率:

    完成一次读/写操作,I/O操作开始之前、完成之后需要CPU的介入,并且在

    等待I/O完成的过程中CPU需要不断的轮询检查

    2.数据传送的单位:

    每次读写一个字

    3.缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于忙等待状态。

  • 中断方式

    CPU发出请求,可以将I/O进程阻塞,等I/O进程发出中断请求,CPU再进行I/O处理。

    1.干预的频率:

    每次I/O操作开始之前、完成之后需要CPU介入。

    等待I/O完成的过程中CPU可以切换到别的进程执行

    2.数据传送的单位:

    每次读/写一个字(每次传一个字需要中断一次)

    3.优点:CPU和I/O设备可并行工作

    4.缺点:中断处理需要消耗较多的CPU

  • DMA方式/直接存储器存取

    CPU和DMA数据输入的交互处理过程:

    (1)当进程要求存储设备输入数据时,CPU把准备存放输入数据的内存始址和要传输的字节数据分别送入DMA控制器中的内存地址寄存器和传送字节计数器,把设备控制器的中断允许位和启动位置置1,从而启动设备进行传输

    (2)此时,发出数据请求的进程进入等待状态,进程调度程序则调度其他进程占用cpu

    (3)输入设备不断的请求DMA挪用CPU工作周期,将数据缓冲寄存器中的数据写入内存,直到传送结束

    (4)DMA控制器在传输字节数减为0时向CPU发出中断请求,CPU在接受中断信号后,转中断处理程序进行处理。

    (5)中断处理结束时,CPU返回被中断的进程,继续执行。

    1.干预的频率:

    仅在传送开始和结束的时候才需要CPU的干预

    2.传送的单位

    每次读写一个或多个块

    3.缺点

    CPU每发出一个I/O指令,只能读写一个或多个连续的数据块

  • 通道控制方式

    通道可以识别一系列通道指令

    1.干预的频率

    完成一组数据块的读写后才需要发出中断信号,请求CPU干预

    2.数据传送的单位

    每次读写一组数据块

    3.优点

    CPU、通道、I/O设备可并行工作,资源利用率很高

    4.缺点

    实现复杂,需要专门的通道硬件支持

23.I/O软件

  • 用户层软件

  • 设备独立性软件

    又称设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层是心啊

    功能如下:

    • 向上一层提供统一的调用接口

    • 设备保护

      不同用户对设备的访问权限不同

    • 差错处理

    • 设备的分配与回收

    • 数据缓冲区管理

    • 建立逻辑设备名到物理设备名映射关系,根据设备类型选择调用相应的驱动程序

      逻辑设备名+物理设备名+驱动程序入口地址

  • 设备驱动程序–与硬件相关

    不同设备的驱动程序不同

  • 中断处理程序–与硬件相关

  • 硬件

24.I/O核心子系统

  • I/O调度

  • 设备保护

  • 假脱机技术

    脱机技术:脱离主机的控制进行的输入/输出操作

    假脱机技术:

    作用:缓解设备与CPU的速度矛盾,实现预输入和缓输出

    特点:

    • 提高了输入输出速度

      SPOOLing技术提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾。

    • 将独占设备改造成共享设备

      由于SPOOLing技术把所有用户进程的输出都送入输出井,然后再由输出进程完成打印工作,而输出井在磁盘上,为共享设备。这样,SPOOLing技术就把打印机等独占设备改造成立共享设备。

    • 实现了虚拟设备功能

      由于SPOOLing技术实现了多个用户进程共同使用打印机这种独占设备的情况,从而实现了把一个设备当成多个设备来使用,即虚拟设备的功能。

  • 设备分配与回收

  • 缓冲区管理