操作系统期末复习知识梳理

操作系统知识梳理

​                                              copyright © 2020 by 宇智波Akali

第一章 引论

  1. 概念:管理和控制计算机系统中的软硬件资源,合理地组织计算机的工作流程,以便有效地利用这些资源为用户提供一个功能强大、使用方便和可扩展的工作环境,从而在计算机与其用户之间起到接口的作用的系统软件,程序模块集合。
  2. 操作系统的目标: 方便性 有效性 可扩充性 开放性
  3. 操作系统的作用:
  • 作为用户与计算机硬件系统之间的接口
  • 是计算机系统资源的管理者
  • 实现了对计算机资源的抽象
  1. 操作系统的类型

    • 单道批处理系统特征:自动性 顺序性 单道性(内存中只保持一道作业)
    • 多道批处理系统特征:多道性(宏观并行微观串行) 无序性 调度性
    • 分时系统 :多路性 独立性 及时性 交互性
    • 实时系统 :实时控制系统 实时信息处理系统
    • 具有分时、实时和批处理功能,又称作通用操作系统
  2. 操作系统的功能:

    • 处理机管理
    • 存储器管理
    • 设备管理和文件管理
    • 操作系统接口
  3. 操作系统的基本特性:并发 共享 虚拟 异步

第二章 进程的描述与控制

第一节 进程及其状态

  1. 程序的并发执行:程序的并发执行是指两个或两个以上的程序或程序段在同一时间段内发生。具有间断性,失去封闭性,不可再现性(同样的初始条件可能有不同的结果

  2. 引入进程的目的:是为了使多个程序并发执行,以改善资源利用率及提高系统的吞吐量,用进程代表运行的程序。

  3. 进程的结构:进程实体:程序段,数据段和PCB。

  4. 动态性:有生命周期,并发性:多个进程存于内存,独立性:独立接受调度,异步性:进程各自独立,不可预知执行。

  5. 进程的概念:进程是程序的一次执行,是进程实体的运行过程。进程与程序对应,同一个程序多次执行将形成多个不同进程,同一程序一次执行也可产生多个进程(fork函数,一个进程也可执行多个程序(exec调用,程序不具有PCB。

  6. 进程与线程:进程是资源分配的最小单位,线程是程序执行的最小单位,包含在进程中,一个进程可以并发多个线程,并行执行不同的任务。线程是处理机分配时间资源的基本单元。

  7. PCB:是进程存在的唯一标志,常驻内存。其中存有进程的描述、调度、控制、处理机状态等信息,组织方式:线性,链接和索引方式。

进程的三种基本状态:
就绪:等待CPU
运行
阻塞:发生某事件:如IO请求等,暂时无法继续执行的状态。
挂起:使进程处于静止,相对应的操作是激活。正在执行的进程挂起后变为静止就绪状态,激活后变为活动就绪,调度后才能执行。

第二、三节进程的描述、进程的控制

  1. 进程的控制由内核通过原语来实现。

  2. 两种执行状态:

    • 系统态:能访问一切寄存器和存储区,执行一切指令。
  • 用户态:较低的特权执行状态,只能执行规定的指令。
  1. 内核通常运行在系统状态下。防止用户程序破坏OS内核和数据。
  2. 通过原语进行进程的创建、撤销、阻塞、唤醒、挂起、激活。

第四节 进程同步

  1. 进程同步概念:
    • 广义:指对多个相关进程在执行次序上进行协调,使系统中各进程有效地共享资源和相互合作,从而使程序执行有可再现性。
    • 狭义:一组并发进程因直接制约而进行相互合作,相互等待,使得各进程按一定速度执行的过程称为进程间的同步。
  2. 临界资源:一次只允许一个进程使用的资源。(包括硬件资源和软件资源,如打印机、共享变量等。
  3. 临界区:每个进程中,访问临界资源的那段代码。
  4. 互斥:一组并发进程中的一个或多个程序段,因为共享一公有资源而导致它们必须以一个不允许交叉执行的单位执行。 也可以说,不允许两个以上共享资源的并发进程同时进入临界区称为互斥。

信号量机制

  1. 整型信号量:没有遵循“让权等待”的原则

  2. 记录型信号量:包含代表资源数目的整型变量Value和进程链表指针list。
    wait(semaphore *S){
    S->value–;
    if( S->value<0 ) block(S->list); //表示该类资源分配完毕,进程调用block原语进行自我阻塞,放弃处理机,并插入到信号量链表中
    }
    signal(semaphore *S){
    S->value++;
    if(S->value<=0) wakeup(S->list); //表示该信号量链表中仍有等待该资源的进程被阻塞,用wakeup原语唤醒。
    }
    value的初值为1时,表示只允许一个进程访问临界资源,此时信号量转换为互斥信号量,用于进程互斥。

  3. AND型信号量要么:一次性分配全部所需资源,用完一起释放,要么就一个也不分配。
    信号量集:
    Swait(S1, t1, d1, …, Sn, tn, dn) 其中Si信号量,d为需求量,t为下限值。
    Ssignal(S1,d1,…,Sn,dn) 其中Si信号量,d为需求量。

    信号量的应用:

  4. 利用信号量实现进程互斥,设置mutex为互斥信号量,初值为1.
    缺少wait(mutex)会使系统混乱,不能保证对临界资源的互斥访问;缺少signal(mutex)会使临界资源永远不被释放,从而等待的进程不能被唤醒。所以w-s必须成对出现。

  5. 利用信号量实现前趋关系

第五节 经典进程同步/互斥问题

1.生产者消费者问题。P60
2.读者写者问题。P65
3.哲学家进餐问题P64

第六节 进程通信

低级通信:只能传递状态和整数值(控制信息,速度快但是信息量小,编程复杂易出错
高级通信:利用OS提供的通信命令(原语)高效大量传送数据的通信方式:消息、共享存储区、管道。
消息队列自身有同步机制;但不支持广播机制; 当传输大量数据时,花费较高;
共享内存必须自己考虑同步问题,但支持广播机制;当传输大量数据时,系统开销小;
管道能传递大量数据,但只支持半双工,只能用于有血缘关系的进程之间。

第七节 线程

线程作为CPU的调度单位,而进程只作为资源的分配单位。
同样具有就绪、阻塞和执行三种状态
优点:减小并发执行的时间和空间开销,多线程提高并发度
进程和线程的比较:
调度性:线程调度的基本单位,而进程是资源分配
并发性;不仅进程间可并发,同一进程中多个线程可并发执行
资源:线程除了运行必不可少的资源本身基本不拥有系统资源,但可访问隶属进程的资源
开销:创建和撤销、切换进程的代价远大于线程

第三章 处理机调度与死锁

第一节 处理机调度的基本概念

1.处理机调度的层次:
高级调度:对象是作业,决定将哪些作业从外存调入内存,为其创建进程、分配资源,加入就绪队列。称作业调度
低级调度:对象是进程,决定哪个进程获得处理机。又称进程调度。
中级调度:把暂不能运行的进程(挂起状态的=,调至外存等待,提高系统吞吐量和内存利用率,又称内存调度。

作业调度时间最长,不频繁,允许算法时间较多,而进程调度频率高,时间短,调度算法不允许太复杂。

调度算法的准则:
面向用户:
周转时间短:从作业提交给系统开始,到作业完成为止的这段时间。
响应时间短 :从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间。

截止时间保证
优先权准则
面向系统:
吞吐量高 单位时间内系统所完成的作业数。
处理机利用率好
各类资源平衡利用

第二三节 作业/进程调度算法

先来先服务FCFS调度算法*:等待时间最长的优先,也就是先来的。用于作业或进程调度
短作业SJF优先的调度算法(作业或进程调度):估计运行时间,最短的优先。缺点:必须预估运行时间。对长作业不利,无法人机交互,没有考虑作业的紧迫性。
优先级调度算法:外部赋予优先级,又分为抢占式和非抢占式
高响应比优先算法:Rp=等待时间+要求服务时间/要求服务时间
轮转RR调度算法
基于时间片,最初的队列形成可按照FCFS排队为每个进程分配一个时间片,轮流运行。中断的进程送往就绪队列队尾进行轮换
多级反馈队列调度算法:
(1)设置多个就绪队列,优先级从高到低,时间片长度设置长度从短到长,后一个比前一个长一倍
(2)每个队列都采用FCFS,新进程首先进入第一个队列的队尾,在时间片内未完成则放入第二队列队尾,依次推,放入最后一个队列后使用RR算法。
(3)按队列的优先调度,仅当高优先级队列空闲才能调度低优先级队列,且为抢占式。

第四节 实时调度

1、 非抢占式调度算法
(1) 非抢占式轮转调度算法(几秒至数十秒);
(2) 非抢占式优先调度算法(几秒至数百毫秒);

  1. 抢占式调度算法
    (1) 基于时钟中断的抢占式优先权调度算法(几十毫秒至几毫秒);
    (2) 立即抢占(Immediate Preemption)的优先权调度算法(几毫秒至100微秒)。

3.最早截止时间优先EDF算法:(非抢占式):根据任务的开始截止时间来确定任务的优先级。开始截止时间:任务在某时间以前必须开始执行。
4.最低松弛度优先LLF(Least Laxity First)算法(主要用于抢占式) :该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。松弛度=必须完成时间-其本身的运行时间-当前时间。

第五节 死锁

1.定义:是指多个并发进程彼此等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而使得各进程不能继续向前推进。
2.原因:
系统资源不足
进程推进顺序不合适
3.死锁的必要条件,缺一不可:
互斥条件:并发进程所要求和占有的资源是不能同时被两个以上进程访问;
不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程自己释放;
请求和保持条件:进程已经占有了至少一个资源,但又申请新的资源,而申请的资源已被其他进程占有,该进程在等待新资源的同时继续占有已分配的资源;
环路等待条件:存在一种进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。
解决死锁的方法:
预防死锁:通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,以预死锁。
避免死锁:在资源的分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁。
检测和恢复死锁:系统设有专门的机构,当死锁发生时,该机构能够检测到死锁发生的位置和原因,并通过外力破坏死锁发生的必要条件,使得并发进程从死锁状态中恢复出来。

第六节 预防死锁

破坏“请求和保持”条件 :
1.规定所有进程都必须一次性申请其在运行过程中所需的全部资源。
2.允许进程只获得运行初期需要的资源就开始运行,运行过程中逐步释放已用毕的全部资源
破坏“不剥夺”条件 :规定一个已经保持了某些资源的进程,在提出新的资源请求而不能立即得到满足时,必须释放它已获得的所有资源。
破坏“环路等待”条件 :将系统中的资源按类型赋予不同的序号,并规定所有的进程必须严格按照资源序号递增的顺序申请资源。

第七节 避免死锁

允许进程动态地申请资源,但系统在进行资源分配之前,应先计算这次资源分配的安全性。若这次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,令进程等待。

安全状态:是指系统能按某种进程顺序(P1, P2, …,Pn) (称〈P1, P2, …, Pn〉序列为安全序列) ,来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。

银行家算法P113

第八节 死锁的检测与解除

检测没看懂
解除:
剥夺资源:从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态。
撤消进程:
撤销死锁中的进程,释放出资源。
撤销进程的代价
进程优先级;
进程运行代价(已运行的%);
进程类型等。

第四章 存储器管理

第一节 存储器的层次结构

第二节 程序的装入和链接

1.程序的运行包括:编译、链接、装入
2.逻辑地址、物理地址、地址映射(重定位)
3.程序的装入
绝对装入方式:
优点:装入过程简单。
缺点:不适于多道程序系统。

可重定位装入方式:
静态重定位:当用户程序装入内存时,由装入程序一次性完成逻辑地址到物理地址的转换,以后不再转换。而相应的装入方式则称作可重定位装入方式。
优点:不需硬件支持,可以装入有限多道程序。
缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。

动态运行时装入方式
重定位不是在装入时进行,而是将它推迟到程序真正执行时进行。为了不影响指令的执行速度,在系统中增设一个重定位寄存器,用它来存放程序(数据)在内存中的起始地址。程序执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而成的。 (它是虚拟存储的基础)
优点:允许运行中的进程在内存中移动,比如进行对换或紧凑。
缺点:需要硬件支持。

4.程序的链接
链接是将编译后得到的各个目标模块以及所需的库函数连接在一起,形成一个完整的装入模块。根据链接时间的不同,将链接分成三种方式。
静态链接:
在程序运行之前,将各目标模块及它们所需的库函数,连接成一个完整的装入模块
装入时动态链接:
装入时动态链接是指链接在装入时进行,即在装入一个目标时,若发生一个外部模块的调用事件,则由装入程序去找出相应的外部模块,将它装入内存,并把它链接到调用者模块上。
运行时动态链接
链接在运行时进行,即在执行过程中,当发现一个被调用模块还没有装入内存时,立即由os找出该模块,将它装入内存,并把它链接到调用者模块上。

第三节 连续分配存储管理

程序装入内存则需要为它分配一定大小的内存空间,连续分配方式就是分配一个连续的内存空间,程序的代码数据逻辑地址相邻则分配的空间物理地址也相邻。
1.单一连续分配方式:只能用于单用户、单任务的操作系统中。
2.固定分区分配方式:分区大小相等、大小不等。由于分区大小固定,必然造成存储空间的浪费
3.动态分区分配方式:在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。
优点:没有内碎片
缺点:有外碎片;如果大小不是任意的,也可能出现内碎片
分区分配操作、内存回收:尽可能大的形成空闲分区

4.动态分区分配算法

基于顺序搜索的动态分区分配算法有:

  • 首次适应(First Fit)FF算法:它要求空闲分区链以地址递增的次序链接,每次从链首开始顺序查找,把最先找到的满足需求的空闲区分配之,此法的目的在于尽量减少查找时间。

缺点:低址部分不断被划分,留下很多难以利用的空闲分区碎片

  • 循环首次适应算法(Next Fit):为了避免低址部分留下很多很小的空闲分区,循环首次适应算法将空闲区链成环形链,每次分配从上次找到的空闲分区的下一个空闲分区开始查找能满足需求的空闲区。

缺点:把空闲分区分布的均匀,减少了查找空闲分区的时间但是会缺乏大的空闲分区

  • 最佳适应(Best Fit)算法:它从全部空闲区中找出能满足作业需求的容量最小的空闲区分配之,此法的着眼点是使碎片尽量小。为了加速寻找,该算法要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。但是每次分割后剩余部分总是最小的,还是会留下碎片
  • 最坏适应(Worst Fit)算法:该算法在扫描整个空闲分区链时,总是挑选一个最大的空闲区,从中分割一部分存储空间给作业使用。此法的目的在于使剩下的空区最大,减少空区碎片机会。该算法要求将所有的空闲分区按其容量以从大到小的顺序形成一空闲分区链。这种算法会缺少大的空闲分区,但是也会使得产生碎片的可能性最低,而且查找效率很高。

基于顺序搜索的动态分区分配方法不适合太大的系统,分区链太长会很慢

基于索引搜索的动态分区分配算法有

  • 快速适应算法:空闲分区按容量大小进行分类。对于每一类具有相同容量的所有空闲空间分区,单独设立一个空闲分区链表。同时,在内存中设立一张管理索引表,每个索引表项对应一种空闲分区类型。不会进行分割,查找最适应的直接分配,优点是效率高,但是一个分区分配给一个进程,分区中还是有浪费,属于空间换时间。

  • 伙伴系统:性能取决于查找空闲分区的位置和分割、合并的时间。 时间上不及快速适应算法,但空闲分区的使用率高

  • 哈希算法:利用哈希快速查找的优点,以及空闲分区在可利用空闲区表中的分布规律,建立哈希函数,构造一张一空闲分区大小为关键字的哈希表,该表的每一个表项记录了一个对应的空闲分区链表。分配时,根据所需空闲分区大小,通过哈希函数计算,即得到在哈希表中的位置,从而得到相应的空闲分区链表。

可重定位分区分配方式

为了解决“外部碎片”的问题,将内存中的所有作业进行移动,从而将分散的多个空闲分区移到同一端拼接成一个大的空闲分区。这种技术称为“拼接”或“紧凑”。
可重定位分区分配方式就是在动态分区分配方式的基础上增加了紧凑功能。由于紧凑时,作业需要在内存中移动位置,需要动态重定位技术的支持,因此该方式又被称为动态重定位分区分配。

第四节 对换

多个程序并发执行,可以将暂时不能执行的程序送到外存中,从而获得空闲内存空间来装入新程序,或读入保存在外存中而目前到达就绪状态的进程。交换单位可以为整个进程的地址空间(进程对换),也可以为进程的部分地址空间(页面对换/分段对换)。

原理:暂停执行内存中的进程,将整个进程的地址空间保存到外存的交换区中(换出swap out),而将外存中由阻塞变为就绪的进程的地址空间读入到内存中,并将该进程送到就绪队列(换入swap in)。

优点:增加并发运行的程序数目,并且给用户提供适当的响应时间;编写程序时不影响程序结构
缺点:对换入和换出的控制增加处理机开销;程序整个地址空间都进行传送,没有考虑执行过程中地址访问的统计特性

第五节 分页存储管理方式

​ 由于连续的分配方式会产生碎片,使用”紧凑“方法拼接成大块空间需要很大的开销,所以将一个进程直接分散的装入多个不相邻的分区中,便可充分利用内存空间,离散的分配方式分为以下三种:

  • 分页存储管理方式
  • 分段存储管理方式
  • 段页式存储管理方式
  1. 基本分页式存储管理

​ 将程序的逻辑地址空间和物理内存划分为固定大小的页或页面(page or page frame),程序加载时,分配其所需的所有页,这些页不必连续。需要CPU的硬件支持。

页面:最后一块还是会有“页内碎片”,页面大小:大->页表短,管理开销小,交换时对外存I/O效率高
小->内碎片小,页表长,效率低。

优点
没有外碎片,每个内碎片不超过页大小
一个程序不必连续存放
缺点:程序全部装入内存

地址结构

有页号和偏移量组成,页面大小等于偏移量所占的位数为幂对应计算的大小,如12位,则为212 B等于4KB。地址空间大小同理。

对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-60tPG3hU-1610166167323)(操作系统复习.assets/image-20210104165232046.png)]

例子:P139

页表:描述进程中每个页面所对应的物理块,每个进程有一个页表。实现从页号到物理块号的地址映射。

物理页面表:整个系统有一个物理页面表,描述物理内存空间的分配使用状况

请求表:整个系统有一个请求表,描述系统内各个页表的位置和大小,用于地址转换,也可以结合到各进程的PCB里。

基本地址变换机构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XDsI2ljE-1610166167329)(操作系统复习.assets/image-20210104183130708.png)]

具有快表的地址变换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p637YAH1-1610166167331)(操作系统复习.assets/image-20210104183146018.png)]

多级页表

虚拟地址空间很大而每页比较小,则进程页表太长。多级页表结构中,指令所给出的地址除偏移地址之外的各部分全是各级页表的页表号或页号,而各级页表中记录的全是物理页面号,指向下级页表或真正的被访问页。

反置页表

一般页表的表项是按页号进行排序,页表项中的内容是物理块号。而反置页表是为每一个物理块设置一个页表项并将按物理块号排序,其中的内容则是页号及其隶属进程的标志符。减少了页表占用的内存空间。但是内存容量很大时还页表项还是很大,并且用Hash算法检索可能会出现地址冲突

第六节 基本分段存储管理方式

引入分段存储管理方式, 主要是为了满足用户和程序员的下述一系列需要:
方便编程:例如:LOAD 1,[A]|;
信息共享:可以按段为单位来进行共享;
信息保护:可以针对不同类型的段采取不同的保护;
动态增长:特别是数据段的不断增长;
动态链接:当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。动态链接要求以段作为管理的单位。

分段

在分段存储管理方式中,将程序的地址空间划分为若干个段(segment),每个段定义了一组逻辑信息。通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。这些段不必连续;物理内存的管理采用动态分区。

段表:描述逻辑段与物理内存分区的映射关系。每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(基址)和段长度。

利用段表实现地址映射

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wynfaX0O-1610166167334)(操作系统复习.assets/image-20210104190248835.png)]

地址变换机构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6GAVJDlu-1610166167335)(操作系统复习.assets/image-20210104190418681.png)]

页式管理和段式管理的比较

  • 页是信息的物理单位,分页是出于系统管理的需要;段则是信息的逻辑单位,它含有一组其意义相对完整的信息,分段是出于用户应用的需要。
  • 页大小是系统固定的;而段大小则通常不固定,由编译程序在对源程序进行编译时,根据信息的性质来划分。
  • 通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。
  • 逻辑地址表示:
    分页是一维的,各个模块在链接时必须组织成同一个地址空间;
    分段是二维的,各个模块在链接时可以每个段组织成一个地址空间。

信息共享

分段系统:易于实现段的共享
分页系统:可以实现程序和数据的共享,但不是很方便

段页式存储管理方式

段页式系统的基本原理是分段和分页原理的结合,先将用户程序分成若干个段,再把每个段分成若干个页。

第五章 虚拟存储器

第一节 虚拟存储器概述

虚拟存储器的引入

1.常规存储器管理方式的特征:

  • 一次性。作业在运行前必须一次性地全部装入内存后才能运行。
  • 驻留性。作业装入内存后,便一直驻留在内存中,直至作业运行结束。

2.局部性原理

  • 时间局部性:如果程序中的某条指令一旦执行, 则不久以后该指令可能再次执行;
  • 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问

3.虚拟存储技术的定义及原理

定义:所谓虚拟存储器,是指具有请求调入功能和置换功能, 能从逻辑上对内存容量加以扩充的一种存储器系统。

原理
在程序装入时,不必将其全部读入到内存,而只需将当前需要执行的部分页或段读入到内存,就可让程序开始执行;

4.虚拟存储技术的特征

  • 多次性:虚拟存储器将一个作业分成多次调入内存。
  • 对换性:虚拟存储器允许将那些暂不使用的程序或数据从内存调至对换区,待以后需要时再调入内存,从而能有效地提高内存利用率。
  • 虚拟性:虚拟存储器对内存的扩充是逻辑上的,用户所看到的大容量只是一种感觉,并不是实际存在,因此是虚的。

5.虚拟存储器的实现方法

  • 请求分页存储管理方式
  • 请求分段存储管理方式

需要硬件支持:页、段表机制、缺页、段中断机构和地址变换机构支持。

第二节 请求分页式存储管理

在简单页式存储管理的基础上,增加请求调页和页面置换功能。(基本单位是长度固定的页面,所以比请求分段简单,是最常使用的方式。

1.页表的扩充

页号物理块号状态位P访问字段A修改位M外存地址
是否调入内存最近访问次数是否修改过

2.缺页中断机构

在请求分页系统中,当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺页调入内存。

特殊性:

​ 缺页中断在指令执行期间产生和进行处理,而不是在一条指令执行完毕之后。所缺的页面调入之后,重新执行被中断的指令。

​ 一条指令的执行可能产生多次缺页中断。

3.地址变换机构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3b5JjqET-1610166167337)(操作系统复习.assets/image-20210104211528695.png)]

4.请求分页中的内存分配

  • 最小物理块数的确定
    最小物理块数与计算机的硬件结构有关,取决于指令的格式、 功能和寻址方式。

  • 物理块的分配策略:
    固定分配局部置换;
    可变分配全局置换;
    可变分配局部置换

  • 物理块分配算法
    平均分配算法;
    按比例分配算法;
    考虑优先权的分配算法

5.页面调入策略

必须事先将要执行的那部分程序和数据所在页面调入内存,所以有:何时调入,从何处调入,如何调入三个问题

l何时调入页面

预调页策略:指将那些预计在不久之后便会访问到的几个页面,预先调入内存。但预测哪些页面在不久之后便会被访问到是十分困难的,故预调页策略主要用于进程首次调入和整体换入时。成功率低

请求调页策略:指当前进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便立刻发出缺页中断,请求OS将所需页面调入内存。主要采用这种,但是系统和磁盘开销大

l从何处调入页面

系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。为此,在进程运行前, 便须将与该进程有关的文件,从文件区拷贝到对换区。

系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出,以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入。

l页面调入过程

保留CPU环境,分析中断原因,启动缺页中断处理程序:获得该页在外存的物理块后如果内存能容纳新页,则IO调入内存,否则采用某种置换算法进行换出。

6.缺页率

缺页次数 / 总的页面访问次数

缺页率的影响因素:

  • 页面大小:页面较大,缺页率较低;反之,则缺页率较高
  • 分配给进程的页面(物理块)数目:数目越多->缺页率越低
  • 页面的置换算法
  • 程序固有特性:程序编制的局部化程度越高,执行时的缺页中断次数越低

第三节 页面置换算法

缺页但是内存满了,需要将内存中调出一页程序或数据送到磁盘对换区中,不适当的算法可能会引起进程发生“抖动”。

1.最佳置换算法(理想情况,不可实现,作为标准)

所选择的被淘汰页面,将是以后永不使用的, 或许是在最长(未来)时间内不再被访问的页面。

2.先进先出(FIFO)页面置换算法:字面意思,最老的页面被替换,性能很差,一般不用

3.最近最久未使用(LRU)置换算法:用最近的过去作为最近的将来的代替,但是两者并没有必然联系

4.最少使用(LFU)置换算法:可能有些已经多次使用但未来不再使用的页面不会被淘汰,此时LFU算法很低效

5.Clock置换算法(最近未使用算法):该算法是一种LRU的近似算法。

6.改进型Clock置换算法:根据访问和修改(访问位A 和修改位M)设置优先级:

最近未被访问,且未被修改为最佳
未被访问,但被修改次之
被访问,但未被修改再次
被访问,且修改最次

7.页面缓冲算法:相当于利用空闲内存页面作为缓冲

第四节 请求分段存储管理方式

第六章 输入输出系统

第一节 I/O系统的功能、模型和接口

  1. I/O系统的基本功能
  • 隐藏物理设备的细节:仅向上层进程提供少量的、抽象的读写命令。
  • 与设备的无关性:这是在隐藏物理设备细节的基础上实现的,提高OS的可移植性和易适应性
  • 提高处理机和I/O设备的利用率:尽可能地让处理机和I/O设备并行操作
  • 对I/O设备进行控制:
    是驱动程序的功能。目前对I/O设备有四种控制方式:
    ① 采用轮询的I/O方式
    ② 采用中断的I/O方式
    ③ 直接存储器访问DMA方式
    ④ I/O通道方式
  • 能确保对设备的正确共享
  • 错误处理
  1. I/O软件的层次结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LvKDtVzg-1610166167339)(操作系统复习.assets/image-20210104223722284.png)]

I/O系统中各种模块之间的层次视图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yg1n8Gjm-1610166167340)(操作系统复习.assets/image-20210104224009426.png)]

  1. I/O系统接口

块设备接口

块设备,数据的存取和传输都是以数据块为单位。速率高、可寻址、DMA

隐藏磁盘的二维结构。

将抽象命令映射为低层操作。

流设备接口

字符设备。速率低、不可寻址、中断I/O方式

get和put操作。采用顺序存取方式

网络通信接口

第二节 I/O设备和设备控制器

执行I/O操作的机械部分就是一般的I/O设备,而执行控制I/O的电子部件则称为设备控制器或适配器。

  1. I/O设备

设备并不是直接与CPU进行通信,而是与设备控制器通信。在I/O设备有与设备控制器间的接口,在该接口中有三种类型的信号,各对应一条信号线。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PaBx2tjp-1610166167340)(操作系统复习.assets/image-20210104225055944.png)]

  1. 设备控制器

设备控制器主要负责控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。

设备控制器的组成

(1) 设备控制器与处理机的接口。

(2) 设备控制器与设备的接口。

(3)  I/O逻辑。

3.内存映像I/O:该方式统一了对内存和对控制器的访问的方法,简化了I/O编程。基本做法是:在编址上不再区分内存单元地址和设备控制器地址,都采用k,当0≤k≤n-1时,认为是内存地址,当k≥n时,认为是某个控制器的寄存器地址

  1. I/O通道

I/O通道(I/O Channel)设备的引入 :

在cpu和设备控制器之间增设通道,主要是为了建立独立的I/O操作,不仅使得数据的传送能独立于cpu,而且也希望有关对I/O操作的组织、管理及其结束处理也尽量独立,以保证cpu有更多的时间去进行数据处理。

I/O通道是一种特殊的处理机

与一般的处理机不同:指令类型单一,通道没有自己的内存,与CPU共享内存

通道类型:字节多路通道、数组选择通道、数组多路通道

一个设备连接到多个控制器上,一个控制器又连接到多个通道上,这种多通路方式可以提高吞吐量。

第三节 中断技术

进程之间的切换是通过中断来完成的。另一方面,中断也是设备管理的基础,中断处理程序是I/O系统中最低的一层,它是整个I/O系统的基础。

中断(Interrupt):是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

根据中断源产生的条件:外中断和内中断。

外中断:指来自处理机外部的中断。外中断在狭义上一般被称为中断。

内中断:指在处理机内部产生的中断。内中断一般称为陷入(trap)。它包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断以及从用户态到核心态的切换等都是陷入的例子。

外部中断分为可屏蔽中断和不可屏蔽中断

中断的优先级:如果中断源的优先级高于PSW的优先级,则CPU响应该中断源的中断请求,反之,CPU屏蔽该中断源的中断请求。优先级在系统设计时给定

中断向量表:每种设备配以相应的中断处理程序,而中断服务程序的入口地址称为中断向量。中断向量表,即中断服务程序入口地址表。

中断请求->中断号->中断处理程序的入口地址->转入中断

对多中断源的处理方式:) 屏蔽(禁止)中断、嵌套中断,CPU优先响应最高优先级的中断,) 高优先级中断请求可以抢占正在运行的低优先级中断的处理机

中断处理程序处理过程包括如下步骤:

​ (1) 测定是否有未响应的中断信号;
​ (2) 保护被中断进程的CPU现场;
​ (3) 转入相应的设备处理程序;
​ (4) 中断处理;
​ (5) 恢复CPU现场并退出中断。

第四节 设备驱动程序

它是I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行。通常应为每一类设备配置一种驱动程序。

1.设备驱动程序概述

  • 接收命令参数并把抽象要求转换为设备相关的低层操作序列
  • 检查用户I/O请求的合法性
  • 发出I/O命令
  • 及时响应由设备控制器发来的中断请求

设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送,常用数据传送控制方式有4种:
程序I/O方式
中断驱动I/O控制方式
直接存储器访问DMA I/O控制方式
I/O通道控制方式

中断驱动I/O控制方式成百倍地提高了cpu利用率

第五节 与设备无关的I/O软件

设备独立性也称设备无关性。其基本含义是:应用程序独立于具体使用的物理设备。驱动程序是一个与硬件(或设备)紧密相关的软件,为实现设备独立性,必须再在驱动程序之上设置一层设备独立性软件。

1.在与设备无关的软件中,包括了执行所有设备公有操作的软件:

(1) 设备驱动程序的统一接口,将逻辑设备名映射为物理设备名

(2) 缓冲管理;

(3) 差错控制;

(4) 独占设备的分配与回收;

(5) 提供独立于设备的逻辑数据块。

在多道程序环境下,设备必须由系统分配。

第六节 用户层的I/O软件

1.系统调用与库函数

系统调用:应用程序通过系统调用,间接调用OS中的I/O过程,对I/O设备进行操作。

库函数:用户程序通过调用对应的库函数来使用系统调用,这些库函数与系统调用连接在一起。

  1. SPOOLing技术(假脱机技术): 通过它可以将一台独占的物理设备虚拟为多台逻辑设备,从而允许多个用户(进程)共享。

SPOOLing系统的特点:

提高了I/O的速度,缓和了CPU与低速I/O设备速度不匹配的矛盾
利用高速共享设备,将独占设备改造为共享设备
实现了虚拟设备功能:用户都感到独占了一台设备

第七节 缓冲管理

缓冲的引入:
缓和CPU与I/O设备间速度不匹配的矛盾
减少对CPU的中断频率, 放宽对CPU中断响应时间的限制
解决数据粒度不匹配的问题
提高CPU和I/O设备之间的并行性

1.单缓冲:在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区。

2.双缓冲:双缓冲区又称为缓冲对换。输入时先往第一缓冲区中输入数据,满后再往第二缓冲区中输入数据,此时,OS可以从第一缓冲区中取走数据。

  1. 循环缓冲
  2. 缓冲池:对于既可用于输入又可用于输出的公用缓冲池, 其中至少应含有以下三种类型的缓冲区:① 空(闲)缓冲区; ② 装满输入数据的缓冲区; ③ 装满输出数据的缓冲区。

第八节 磁盘存储管理

1.磁盘性能简述

每个扇区包括两个字段:标识符字段、数据字段

磁盘访问时间 = 寻道时间Ts + 旋转延迟时间Tr + 传输时间Tt

2.磁盘调度

  • 先来先服务FCFS:根据进程请求访问磁盘的先后次序进行调度。优点:
    公平、简单,每个进程的请求依次得到处理.缺点:平均寻道时间可能较长,仅适用于磁盘请求较少的场合
  • 最短寻道时间优先(SSTF):选择要求访问的磁道与当前磁头所在的磁道距离最近的进程(磁盘请求),使每次的寻道时间最短。不能保证平均寻道时间最短。可能导致“饥饿”现象。
  • 扫描(Scan)算法:磁头每次只作单方向移动,直到到达边缘磁道为止,然后再作反向移动。消除了饥饿现象。
  • 循环扫描(CScan)算法:磁头只作由内向外的单方向扫描,到达外边缘后,则返回最内侧的磁道重新进行下一轮扫描。改进了对于边缘区磁道访问的不公平

第七章 文件管理

第一节 文件和文件系统

1.文件的定义与分类

文件是指由创建者所定义的、具有文件名的一组相关数据元素的集合。可分为:有结构(记录式)文件和无结构(流式)文件。

文件的组成(有结构文件)
数据项——基本数据项、组合数据项
记录——一组相关数据项的集合,用于描述一个对象的某些属性。

2.文件系统模型

三个层次:
文件对象及其属性层:
文件、目录、磁盘(磁带)存储空间
对文件对象操纵和管理的软件集合:
文件管理系统的核心部分;
功能:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理、对文件的共享与保护功能。
文件系统的接口:
命令接口、程序接口

3.文件操作

最基本的文件操作
创建、删除、读、写、截断、读写指针定位
文件的打开与关闭
其它操作

第二节 文件逻辑结构的类型

文件逻辑结构是指从用户角度观察,文件的数据组织形式。

  1. 从是否有结构来分:
    (1)有结构文件
    定长记录
    变长记录
    (2)无结构文件

  2. 从文件的组织方式来分:

(1)顺序文件
(2)索引文件
(3)索引顺序文件

第三节 文件目录

目录:用于标识系统中文件及其物理地址的一种数据结构,供检索使用

1.文件控制块和索引结点

2.目录结构

单级目录结构
在整个文件系统中建立一张目录表,每个文件占一个目录项。
目录项:文件名、扩展名、长度、类型、物理地址及其它文件属性。
缺点:查找速度慢;不允许重名。

两级目录结构
为每个用户建立一个单独的用户文件目录(UFD),系统中再建立一个主文件目录MFD。基本克服了单级目录的缺点。
优点:检索较快;不同的用户目录中文件可以同名;不同用户可以用不同的文件名访问同一个文件。

目录查询技术:

线性检索法(顺序检索法)

Hash方法

第四节 文件共享

基于索引结点的共享方式
利用符号链实现文件共享

第八章 磁盘存储器的管理

第一节 外存的组织方式

1.连续分配

连续分配方式(磁带,磁盘都可采用)
为每一个文件分配一组相邻接的盘块;
物理上形成了顺序文件结构;
外存上会出现“碎片”,用“紧凑”的方法解决。
文件对应目录项(属性)中包含:
始址、总块数、最后一块、字节数
连续分配的优缺点
顺序(批量)访问容易、速度快;
不能灵活地删除和插入记录;
要求有连续的存储空间(有时需要作紧凑处理),必须事先知道文件的长度,很难实现文件的动态增长。

2.链接分配

离散分配方式,消除了“碎片”,有利于文件的增/删,能适应文件的动态增长。

显式链接
把用于链接文件各物理块的指针,显式地存放在内存的一张“链接表”中,查找在内存中进行。
FCB->FAT

隐式链接
在文件的每个目录项中,都含有指向链接文件第一盘块和最后一个盘块的指针。
只适合于顺序访问。

索引分配

第二节 文件存储空间的管理

P261

以磁盘块(扇区)为单位。连续分配方式、离散分配方式
1.空闲表法和空闲链表法

空闲表法——连续分配方式
空闲表:表项序号、空闲区起始盘块号、盘块数等。按地址排序。
存储空间的分配与回收
分配:首次适应算法、循环首次适应算法
回收:考虑邻接的前后空闲区拼接合并
空闲链表法——离散分配方式
空闲盘块链:分配/回收一个盘块,简单
空闲盘区链:与内存的动态分区管理类似

2.位示图法

用二进制一位来表示磁盘中一个盘块的使用情况。mxn数组

盘块的分配(分三步进行)
顺序扫描位示图,找到一个或一组值为“0”的位;
将找到的位转换成与之相对应的盘块号:b=n(i-1)+j
修改位示图
盘块的回收(分两步进行)
将回收的盘块号转换成位示图中的行号和列号:
i=(b-1) DIV n +1 j=(b-1) MOD n +1
修改位示图
优点
从位示图中很容易找到一个或一组相邻接的空闲盘块;
位示图占用空间小,可常驻内存;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSR11i10-1610166167342)(操作系统复习.assets/image-20210105192726022.png)]

3.成组链接法

第九章 操作系统接口

1.联机命令接口

命令解释程序:在所有的OS中,都是把命令解释程序放在OS的最高层,以便能直接与用户交互。该程序的主要功能是先对用户输入的命令进行解释,然户转入相应命令的处理程序去执行。

2. 系统调用

系统调用提供了用户程序和操作系统之间的接口。系统调用不仅供所有的应用程序调用,而且也供OS自身的其他部分调用。

系统调用与一般过程调用的明显差别
运行在不同的系统状态
通过软中断进入
返回问题
嵌套调用

系统调用的类型

l进程控制类

l文件操纵类

l进程通信类

系统调用的处理步骤

将处理机状态由用户态转为系统态;
由硬件和内核程序进行系统调用的一般性处理,即保护CPU环境;
将用户定义的参数传送到指定的地方保存起来;
根据调用号,转入相应的系统调用处理子程序(完成系统调用功能的主体;与相应的系统调用功能有关,代码各不相同。);
恢复被中断的进程环境,继续执行。

3.图形用户接口

  • 7
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值