【考研】操作系统复习冲刺(2023年408)

news2024/11/17 13:25:46

前言

本文内容主要源自于王道讲解的学习笔记总结。梳理《操作系统》考点(以理论为重点),并对重点内容划下横线和加粗标注,方便考研复习。

可搭配以下链接一起学习:

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第四章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第二章

(第一章至第七章的博文已完成,点上面链接进去即可跳转)

一、第一章   操作系统概述

(一)操作系统的概念、特征和功能

1、并行性与并发性

(1)并行性:指两个或多个事件在同一时刻发生;

(2)并发性:指两个或多个事件在同一时间间隔内发生。

2、操作系统的特征:并发、共享、虚拟、异步。

并发与共享是最基本的特征,互为存在条件)

3、操作系统提供的接口:

(1)命令接口:联机命令接口、脱机命令接口

(2)程序接口:即系统调用,用户通过程序间接使用

(3)GUI(图形用户界面)

(二)用户态与核心态(即目态和管态)

4、特权指令(核心态):输入/输出指令、开中断指令、关中断指令、修改PSW指令、置时钟指令、广义指令、进程切换、进程调度程序

5、非特权指令(用户态):访管指令(trap指令)

(三)中断、异常

中断信号来自CPU与当前指令
内中断(异常、例外、陷入)内部有关
外中断(中断)外部无关

6、子程序调用是程序设计者事先在主程序中安排一条调用指令 CALL,子程序的调用时间是固定的。主程序调用子程序的过程完全属于软件处理过程,不需要专门的硬件电路。。

7、中断处理和子程序调用的区别:

调用类型中断子程序调用
入口地址由中断隐指令根据中断向量得到由调用程序根据寻址方式得到
保存环境保存PC、PSW、通用寄存器保存PC、通用寄存器
进程状态从用户态转换为核心态没有状态变化

8、有中断请求时,先由中断隐指令完成中断前程序的状态保存,主要工作有:

① 关中断;

② 保存 PC、PSW;

③ 根据中断向量引出对应的中断服务程序( 即中断处理程序,属于操作系统内核),通用寄存器的保护由中断服务程序完成。当中断服务程序运行结束后再开中断。

(四)系统调用(运行在系统的核心态,请求是发生在用户态)

9、什么时候需要系统调用?

答:系统中的各种共享资源都由操作系统统一掌管, 因此在用户程序中,凡是与资源有关的操作(如存储分配、进行 I/O 传输以及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。

10、系统调用按功能大致可分为如下几类:
(1)设备管理:完成设备的请求或释放,以及设备启动等功能。
(2)文件管理:完成文件的读、写、创建及删除等功能。。
(3)进程控制:完成进程的创建、撤销、阻塞及唤醒等功能。
(4)进程通信:完成进程之间的消息传递或信号传递等功能。
(5)内存管理:完成内存的分配、回收以及获取作业占用内存区大小及始址等功能。

11、系统调用的过程是什么?

(1)传递系统调用参数;

(2)执行陷入(trap)指令;

(3)执行相应的服务程序;

(4)返回用户态。

二、第二章   进程管理

 (一)进程与线程

 1、用户级线程:由应用程序通过线程库实现,其线程切换可以在用户态下即可完成,无需操作系统干预。

2、内核级线程:处理机分配的单位

(二)进程状态与进程控制 

3、进程的状态转换:

(三)处理机调度

4、调度的三个层次:高级调度(作业调度)、中级调度、低级调度(进程调度),调度频率由小到大。

5、 特别注意带权周转时间。

 6、进程优先级分别:静态优先级和动态优先级,通常:

(1)系统进程优先级高于用户进程;

(2)前台进程优先级高于后台进程;

(3)I/O型进程(或称|/O繁忙型进程)优先级高于计算型进程( CPU 繁忙型进程) ;

7、不能进行处理机高度的情况:(即不能进行进程的调度与切换的情况)

(1)在处理中断的过程中:中断处理过程复杂,在实现上很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源

(2)进程在操作系统内核程序临界区中:进入临界区后,需要独占式地访问共享数据,理论上必须加锁,以防止其他并行程序进入,在解锁前不应切换到其他进程运行。

(3)其他需要完全屏蔽中断的原子操作过程中:如加锁、解锁、中断现场保护、恢复等原子操作。在原子过程中,连中断都要屏蔽,更不应该进行进程调度与切换。

        如果在上述过程中发生了引起调度的条件,并不能马上进行调度和切换,应置系统的请求调
度标志
,直到上述过程结束后才进行相应的调度与切换。

8、典型的调度算法(重点)

(四)进程同步与互斥

9、为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:

1)空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;

2)忙则等待。当己有进程进入临界区时,其他试图进入临界区的进程必须等待;

3)有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿) ;

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

10、互斥的四种软件实现方式:

(1)单标志法;

(2)双标志先检查法;

(3)双标志后检查法;

(4)Peterson算法。

 11、信号量机制

(1)整型信号量:被定义为一个用于表示资源个数的整型量S。当进程发现S≤0时,就会不断测试。因此进程处于忙等状态,未遵循“让权等待”原则

(2)记录型信号量遵循了“让权等待”原则。其数据结构类型如下:

typedef struct{
    int value;  //代表资源数目
    struct process *L;  // 链接等待该资源的进程。
}semaphore;

信号量的 P、V 操作的实质是“加减”操作,P、V操作又是原语操作,所以:

        P操作是对信号量(只能对信号量,不可以对普通变量)进行减“1”操作,然后判断是否小于零,“是”则阻塞等待,“否”则什么都不做;

        V操作是对信号量加“1”操作,再判断是否小于等于零,“是”则唤醒进程,“否”则什么也不做。

记录型信号量 S 中 value 值的意义:

  • S.value 的初值表示系统中某类资源的总数。
  • S.value < 0 表示当前系统中已经没有可用的该类资源
  • S.value < 0  时,其绝对值表示 S.L 中因等待该资源而阻塞的进程个数
     

(五)经典同步问题

关于 P、V 操作的系列习题可见下方链接(此处只放两个,更多请见博主专栏——操作系统):

【考研】操作系统——同步互斥问题(P、V操作)1

【考研】操作系统:2019年真题43(同步互斥问题)

12、生产者-消费者问题(注意:实现互斥的 P 操作一定要在实现同步的 P 操作之后

 13、读者-写者问题

 14、哲学家进餐问题

 

 (六)死锁

15、死锁条件

        产生死锁必须同时满足以下四个条件,只要其中任一一个条件不成立,死锁就不会发生。

        ● 互斥条件:在一段时间内某资源仅为-一个进程所占有。此时若有其他进程请求该资源,则
请求进程只能等待。

        ● 不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放。

        ● 请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。

        ● 循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。

16、有什么办法可以解决死锁问题?

答:死锁的处理策略可分为三种:

(1)死锁的预防:指通过设立一些限制条件,破坏死锁的一些必要条件,让死锁无法发生。

(2)死锁的避免:指在动态分配资源的过程中,用一些算法防止系统进入不安全状态,从而避免死锁。(如银行家算法)

(3)死锁的检测和预防:指在死锁产生前不采取任何措施,只检测当前系统有没有发生死锁(如死锁定理),若有则采取一些措施解除死锁(如资源剥夺法、撤销进程法、进程回退法)。

【补充】

死锁定理:S 为死锁的条件是当且仅当 S 状态的资源分配图是不可完全简化

资源分配图

(1)圆圈:代表一个进程;

(2):代表一类资源;

(3)请求边:从进程到资源的有向边;

(4)分配边:从资源到进程的边,表示该类资源已有一个资源分配给了该进程。

【可搭配以下链接一起学习】

【考研】操作系统之考点——死锁(含真题讲解)_住在阳光的心里的博客

17、系统安全状态

18、银行家算法(避免死锁) 

 【补充】应掌握如何求系统安全序列

可参考该章的课后习题及答案:

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第二章_住在阳光的心里的博客

三、第三章   内存管理

(一)内存管理的概念

1、程序运行的基本原理       

        将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤:

        ● 编译,由编译程序将用户源代码编译成若干个目标模块,每个模块具有各自的逻辑地址空间。

        ● 链接,由链接程序将上述目标模块,以及所需库函数链接,形成具有完整的逻辑地址空间的装入模块。

        ● 装入,由装入程序将装入模块装入内存。

        而程序执行的过程中,在指令寻址与数据寻址时,CPU 不断地进行从逻辑地址到物理地址的转换。图 3 - 1 展示了从源程序(C程序为例)变为在内存中执行的程序的过程。

(二)连续分配管理方式

 (三)非连续分配管理方式

1、分页存储管理方式

 2、分段存储管理方式

(四)虚拟页式存储管理(重点) 

1、虚拟存储器的定义和特征

(1)定义:基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而将其余部分留在外存就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存。另一方面,操作系统将内存中暂时不使用的内容换出到外存上。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。

(2)虚拟存储器有以下三种实现方式:请求分页;请求分段;请求段页式

(3)虚拟存储器有以下三个主要特征多次性、对换性、虚拟性

(4)虚拟存储器的容量取决于地址空间的大小,而不是由实际的内存容量决定。

2、缺页中断机构

        在页式虚拟存储管理系统中,程序是部分装入的,还有部分是处于外存上的,因此,当需要访问那部分位于外存上的代码或数据时,系统就会产生缺页中断。

        产生缺页中断的目的是要将位于外存上的代码或数据装入内存,此时应将缺页的进程阻塞(调页完成唤醒),如果内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中相应页表项,若此时内存中没有空闲块,则需要淘汰某页。

        缺页中断作为中断同样要经历,诸如保护 CPU 环境、分析中断原因、转入缺页中断处理程序恢复 CPU 环境等几个步骤。但与一般的中断相比,它有以下两个明显的区别

        (1)在指令执行期间产生和处理中断信号,而非一条指令执行完后。

        (2)一条指令在执行期间,可能产生多次缺页中断

3、快表TLB

 4、请求分页存储管理 

5、虚拟页式存储管理的硬件机制说明

 6、置换算法 

 

 ​​​​​​​

 6、页面分配策略

(1)固定分配局部置换。它为每个进程分配一定数量的物理块,在整个运行期间都不改变。若进程在运行中发现缺页,则只能从该进程在内存的页面中选出一个换出,然后再调入需要的页面。实现这种策略难以确定为每个进程应分配的物理块数量,太少会频繁出现缺页中断,太多又会使CPU和其他资源利用率下降。

(2)可变分配全局置换。这是最易于实现的物理块分配和置换策略,为系统中的每个进程分配一定数量的物理块,操作系统自身也保持一个空闲物理块队列。当某进程发现缺页时,系统从空闲物理块队列中取出物理块分配给该进程,并将欲调入的页装入其中。

(3)可变分配局部置换。它为每个进程分配一定数目的物理块,当某进程发现缺页时,只允许从该进程在内存的页面中选出一页换出,这样就不会影响其他进程的运行。如果进程在运行中频繁地缺页,系统需再为该进程分配若干附加物理块,直至该进程缺页率趋于适当程度为止;反之,若一个进程在运行过程中缺页率特别低,则此时可适当减少分配给该进程的物理块。“

7、工作集(驻留集)

例如:页面:1、2、3、4、5、6、7、8,此时访问到了6号页面

假设工作集窗口大小为4,则工作集为{3,4,5,6}

一般驻留集(此时驻留在内存里的页面的集合)要比工作集(在某段时间内,进程要访问的页面集合)大,但有些时候,认为工作集 = 驻留集。

假设系统给进程分配了6个页框,则访问到了6号页面时,驻留集应为{1,2,3,4,5,6}。

 8、抖动

        频繁的页面调度行为称为抖动或颠簸

        如果一个进程在换页上用在进程的页面置换过程中的时间多于执行时间,那么这个进程就在颠簸。

        使用虚拟内存技术,操作系统中进程通常只有一部分块位于主存中,从而可以在内存中保留更多的进程以提高系统效率。产生抖动后,使得系统吞吐量下降,缺页中断率迅速增长,由于外理机差不多花费所有时间在进行内外存页面置换,因此几乎不能做任何工作。

        引起系统抖动的原因:是对换的信息量过大、内存容量不足、置换算法选择不当

        解决的办法降低交换页面的数量、加大内存容量、改变置换选择算法

        但是降低交换页面数量和改变置换选择算法对于一个应用系统来讲是不可能的,只能增加内存容量,或者降低进程数量(相对地增加内存)。而增加交换区容量并不能解决物理内存不足的问题。“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字IC手撕代码-同步FIFO

前言&#xff1a; 本专栏旨在记录高频笔面试手撕代码题&#xff0c;以备数字前端秋招&#xff0c;本专栏所有文章提供原理分析、代码及波形&#xff0c;所有代码均经过本人验证。 目录如下&#xff1a; 1.数字IC手撕代码-分频器&#xff08;任意偶数分频&#xff09; 2.数字…

磁环选型攻略及EMC整改技巧

磁环选型攻略及EMC整改技巧 今天跟大家分享一下磁环选型及应用相关的知识&#xff0c;希望对你有帮助。 本文将从以下四个方面对磁环进行阐述。 一、磁环的应用场景 首先我们来看几张图片 图1 显示屏VGA线 图2 适配器连接线 图3 USB通信线 这三根线都是我们生活中常见的供电…

简单个人网页设计作业 静态HTML个人博客主页——HTML+CSS+JavaScript 明星鹿晗(7页)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

ping回显间隔长或第一个包很久才显示是怎么回事?

问题现象 在ping某些域名的时候&#xff0c;第一个回显十几秒才出现&#xff0c;但时延time正常&#xff0c;第二个包开始回显频率正常且最终统计结果为不丢包&#xff1b;或是每一个回显均间隔数秒才显示&#xff0c;但时延time又都是正常的&#xff0c;且统计结果为不丢包。…

U-Net 模型改进和应用场景研究性综述

U-Net综述1 文章介绍2 U-Net介绍3 结构改进4 非结构改进4.1 预处理——数据增强4.2 训练——数据归一化4.3 训练——激活函数4.4 训练——损失函数4.5 结构改进总结5 U-Net应用场景5.1 视网膜血管分割5.2 肺结节分割5.3 肝脏和肝脏肿瘤分割5.4 脑肿瘤分割5.5 不同应用场景总结6…

[附源码]计算机毕业设计基于Springboot校刊投稿系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vue学习:模板语法

容器里面的模板&#xff1a;对应的模板语法 {{xxx}}:插值语法 指令语法&#xff1a; v-bind&#xff1a;vue指令 绑定 后面的数据会变成属性或者方法 <h1>指令语法</h1><!-- v-bind会将"xxx"里面的内容当成表达式执行 --><a v-bind:href&quo…

这些 MySQL 最朴素的监控方式!用完爱不释手!

对于当前数据库的监控方式有很多&#xff0c;分为数据库自带、商用、开源三大类&#xff0c;每一种都有各自的特色&#xff1b;而对于 mysql 数据库由于其有很高的社区活跃度&#xff0c;监控方式更是多种多样&#xff0c;不管哪种监控方式最核心的就是监控数据&#xff0c;获取…

嵌入式之总线协议:1、UART

嵌入式之总线协议&#xff1a;1、UART 目录 第一章 UART 帧格式讲解 第二章 UART 寄存器讲解 第三章 UART 编程 第四章 输出重定向 第五章 RS232、RS485协议原理与应用 第一章 UART嵌入式之总线协议&#xff1a;1、UART前言一、UART简介1、串行/并行1.1 并行1.2 串行2、异步3、…

C语言第十八课:初阶结构体

目录 前言&#xff1a; 一、结构体类型的声明&#xff1a; 1.结构的基础知识&#xff1a; 2.结构的声明&#xff1a; 3.结构成员允许的类型&#xff1a; 4.结构体变量的定义&#xff1a; 5.结构体变量的初始化&#xff1a; 二、结构体成员的访问&#xff1a; 1.结构体变量访…

[附源码]计算机毕业设计实验室管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

4 第一个程序

第一个程序 1 源程序 源程序中包括两种指令&#xff1a;伪指令和汇编指令 汇编指令是有对应机器码的指令&#xff0c;可以用CPU直接执行 伪指令没有对应的机器码&#xff0c;只有编译器执行不用CPU执行 1.1 segment ends segment和ends的功能是定义一个段。使用格式如下 …

[附源码]计算机毕业设计三星小区车辆登记系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

多线程中的公平锁、非公平锁、可重入锁、死锁【详细总结】

目录公平锁非公平锁公平锁和非公平锁的用法可重入锁synchronized可重入锁示例ReentrantLock的示例代码死锁死锁产生的原因常用解决死锁的方法判断程序是否发生死锁死锁的案例&#xff08;面试会问&#xff09;公平锁 多个线程按照申请锁的顺序去获得锁&#xff0c;线程会直接进…

第十六章 Dijkstra算法的讲解以及证明(与众不同的通俗证明)

第十六章 Dijsktra算法的讲解以及粗略证明一、Dijkstra的用途二、Dijkstra的思想及证明&#xff08;1&#xff09;相关结论及证明&#xff1a;结论1&#xff1a;必须借助中间点时某个点到终点的最短路程&#xff1d;该点到中间点的最短距离&#xff0b;中间点到终点的最短距离结…

数据分析思维(一)|信度与效度思维

信度与效度思维 1、概念 信度与效度思维通常用于在数据分析中进行更有价值的指标选择。 信度&#xff1a;指标的可靠程度。包括一致性及稳定性。&#xff08;口径是否一致&#xff0c;是否具有波动性&#xff09; 效度&#xff1a;指标的有效性。一个数据或指标的生成&…

JavaFX项目打包成可安装exe文件

开发环境&#xff1a;Windows 10 2H JDK&#xff1a;jdk1.8.0_112 IDEA&#xff1a;2020.3 1. 项目中导入插件依赖 <plugin><groupId>io.github.fvarrui</groupId><artifactId>javapackager</artifactId><version>1.6.6</version>&…

[附源码]计算机毕业设计JAVA婴幼儿玩具共享租售平台

[附源码]计算机毕业设计JAVA婴幼儿玩具共享租售平台 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …

Java学习之多态一

目录 一、入门案例 Food类 Animal类 Master类 运行测试 分析 运行结果 问题总结 二、方法的多态 三、对象的多态&#xff08;重难点/核心&#xff09; 四个非常重要的知识点&#xff08;背诵&#xff09; 举例说明 父类-Animal类 子类-Dog类 子类-Cat类 运行-Po…

如何将数据库从 CloudKit 迁移到 Firebase

为什么要迁移 如果该服务仅支持 Apple 设备,则使用 CloudKit 和 CoreData 可能是最佳选择。但是,如果您还需要支持 Web 和 Android,情况就不同了。 当同时支持Web和Android时,可以使用CloudKit JS访问iCloud DB。但是实施起来比较困难,需要有苹果账号。 如果未来有同时支…