操作系统复习

news2025/3/1 9:03:23
  1. 熟练掌握操作系统的定义,操作系统的特征,操作系统的功能
  2. 熟练掌握多道程序设计的概念,单道程序设计和多道程序设计的区别,多道程序设计的优点
  3. 熟悉操作系统接口的主要功能,系统调用的基本概念、类型、实现。

   操作系统接口的主要功能:为应用程序或者用户提供访问操作系统内核的接口,使应用程序或者用户可以访问操作系统提供的各种服务和资源。比如进程管理、文件管理、进程通信等

系统调用的基本概念:计算机的各种硬件资源是有限的,为了更好的管理这些资源,用户进程是不允许直接操作的,所有对这些资源的访问都必须由操作系统控制。为此操作系统为用户态运行的进程与硬件设备之间进行交互提供了一组接口,这组接口就是所谓的系统调用。

系统调用实质上就是函数调用,只不过调用的是系统函数,处于内核态而已。 用户在调用系统调用时会向内核传递一个系统调用号,然后系统调用处理程序通过此号从系统调用表中找到相应的内核函数执行,最后返回。

系统调用的类型:

  1. 、进程管理:包括进程的创建、撤销以及状态转换等
  2. 、存储管理:内存分配与回收、地址映射、存储保护、存储保护、存储共享以及存储扩充
  3. 、文件管理:包括创建文件、删除文件等操作
  4. 、设备管理:完成用户的I/O请求操作;提高传输数据的速度,提高设备的使用率;操作系统提供的设备驱动程序以及中断处理程序,为用户隐蔽细节操作,提供简单的设备使用方法
  5. 、进程通信:包括建立和断开通信连接、接受和发送消息等
  6. 、信息维护:获取、设置日期和时间等

      系统调用的实现:

  1. 、一是编写系统调用服务例程
  2. 、二是设计系统调用入口地址,每一个入口地址都指向一个系统调用的服务例程,有些还包含系统调用自带参数的个数
  3. 三是陷阱处理机制,需要开辟现场保护区,以保存发生系统调用时应用程序的处理器现场
  1. 了解操作系统的性能指标,操作系统的类型,操作系统接口的概念及实现。系统调用只是一种 API ,所以系统调用就是接口

  操作系统接口:为应用程序或者用户提供了一组函数或者命令,用于访问操作系统提供的各种服务和资源

  操作系统接口的实现:操作系统接口的实现是通过系统调用来实现的,操作系统提供了一系列系统调用,应用程序可以通过系统调用来访问操作系统提供的各种服务和资源,例如文件管理、进程管理等

  1. 熟练掌握中央处理器,中断技术。
  2. 熟练掌握进程的概念,进程的状态和转换,以及进程和程序的区别。
  3. 熟练掌握处理器调度算法及处理器调度层次。
  4. 熟练掌握存储体系结构,主存储器的物理组织,主存储器的管理功能以及分区管理。

储存体系结构是指计算机系统中用于存储数据的硬件和软件组成的系统。其主要功能是提供数据的长期存储和快速访问,以及保护数据的安全性和完整性。储存体系结构通常包括主存储器、辅助存储器、输入输出设备等组成部分。

主存储器的物理组织通常是由一组芯片组成的,每个芯片包含一定数量的存储单元,每个存储单元可以存储一个二进制数值。主存储器的管理功能包括内存分配、内存回收、内存保护等。分区管理是指将主存储器划分为若干个区域,每个区域可以独立地进行内存管理。

  1. 了解可变分区管理内存的分配与回收。

可变分区存储管理又叫做动态分区模式,按照作业的大小来划分分区,但是划分的时间、大小、位置都是动态的。系统把作业装入内存的时,根据其所需要的内存容量查看是否有足够的空间,若有,则按需分割一个分区分配给此作业;若没有则令此作业等待资源。由于分区大小是按照作业的实际要求进行划分的,且分区数目也是可变的,所以可变分区能够克服固定分区资源浪费的问题,有利于多道程序上设计,提高内存资源利用率

  1. 熟练掌握页式管理以及段页式管理方式。

 2.1页式管理

  高级语言中使用逻辑地址,运行状态内存中使用物理地址

物理地址=块号+页内地址内存中存放的是块号,所以可以通过内存的大小求块号的位数

逻辑地址=页号+页内地址由每页的大小,也即页面大小求页内地址的位数,由用户编程空间总共的页面数量可以求页号位数

实际上是块号替换了页号,通过操作系统提供的页表将逻辑地址中的页号转换为块号,块号和页内地址相加就是物理地址

求解过程:先确定逻辑地址中的页内地址位数,然后逻辑地址位数的总长度减去页内地址位数即页号位数,将页号位数组成的二进制转换为十进制与页表进行对比,查找相应的块号,将十进制的块号,块号加页内地址即为物理地址

优点:利用率高,内部碎片小,分配及其简单

缺点:增加了系统开销,可能会发生抖动现象

 

段页式管理:

  1. 熟练掌握虚拟存储管理系统的基本概念及实现。

    前面所介绍到的存储管理都是实存管理,必须为进程分配足够大的内存空间,装入其全部的信息,否则就无法运行一遍。但是把进程的全部信息装入到内存中实际上是并非同时使用,有些部分运行一遍,有些部分暂时不用或者某种条件下才会使用,让进程的全部信息放入到内存是对宝贵内存资源的极大浪费,会降低内存利用率。

       所以可以把物理内存扩大到大容量的磁盘上,把磁盘空间当做内存的一部分,进程的程序和数据通常放在内存中,部分放在磁盘上。当程序在执行的时候,它执行的指令或者访问的数据再哪儿则存储管理器负责判断,并针对情况采取相应步骤

       当程序执行的指令或者访问的数据再内存中可以访问的时候顺利执行;如果在磁盘上,为了继续执行,则由系统自动将这部分信息从磁盘装入——部分装入;如果没有足够多的空闲内存空间,便把内存中暂时不用的信息移动到磁盘——部分替换;当部分装入、部分替换能够实现时,那么当内存空间小于进程的需要量时,进程也能运行;更进一步,当多个进程的总长度超出内存容量的时候,也可以全部装入内存空间中,实现多道程序运行

        虚拟存储器定义:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理内存容量大很多、可寻址的“内存储器”

        实际上虚存对于用户隐蔽可用物理内存和的容量和操作细节,虚存的容量与物理内存的大小没有关系,而是受限于计算机地址结构和磁盘容量

虚拟存储管理系统的三种实现方式:

·        请求分页虚拟存储管理。

·        请求分段虚拟存储管理。

·        请求段页式虚拟存储管理。

  1. 熟练掌握页面置换算法。

首先看一下什么是页面置换算法:地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。

  1. 最佳置换算法(OPT)(理想置换算法 不可实现):从主存中移出永远不再需要的页面;如无这样的页面存在,则选择将来最长时间不需要访问的页面。
    于是所选择的被淘汰页面是将来永不在使用的,或者是在将来的最长时间内不被访问的,这样可以保证获得最低的缺页率。但是将来的会不会访问操作系统并不知道,因此该算法不能被实现,只是理想的。
  2. 先进先出置换算法(FIFO): 是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。
    其理由是:最早调入主存的页面被认为不再被使用的可能性最大。
  3. 最近最久未使用(LRU)算法: 这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。
    所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。即淘汰最近最长时间未访问过的页面。(往前看)
  1. 掌握I/O系统的层次模型与I/O控制方式;I/O软件原理。

    设计的目标是 高效性和通用性

设备中断处理程序:设备驱动程序的组成部分之一,位于操作系统底层,是与硬件设备密切相关的软件。

设备驱动程序:设备驱动程序是从独立于设备的软件中接受并执行I/O请求

独立于设备的I/O软件:实现适用于所有设备的常用I/O操作并且向上层软件提供一致性接口

用户空间的I/O软件:在用户空间运行的I/O库函数和SPOOLing程序

  1. 掌握缓冲技术;驱动调度技术。

驱动调度技术:

作为操作系统的外存,存放文件的磁盘是一类大容量高速旋转型存储设备。在繁重的I/O操作下,同时会有若干请求来到并等待处理,系统必须采取一种调度策略,能够按照最佳次序执行诸多请求,这叫做调度驱动。所使用的算法叫做调度驱动算法

驱动调度能够减少若干I/O请求服务所需消耗的总时间,从而提高系统效率。除了I/O请求的优化排序外,磁盘上信息的排列方式、存储空间的分配方法都能影响存取访问速度

  1. 掌握文件的命名、文件的类型、文件的属性、文件的操作等概念。
  2. 了解文件空间的分配和管理,文件目录和目录文件等概念,以及文件的多种共享方式。

把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合

为了实现对文件目录的管理,通常将文件目录以文件的形式保持在外存,这个文件就叫目录文件。

文件共享的多种方式:文件静态共享、文件动态共享、文件符号链接共享

  1. 熟练掌握进程间的关系,互斥和同步问题。
  2. 掌握临界区的定义,使用临界资源的原则。

答:当且仅当一个进程访问的资源叫做临界资源

每个进程中访问临界资源的那段代码叫做临界区

使用临界资源的三个原则:

  1. 一次至多只有一个进程进入临界区内执行
  2. 如果已有进程在临界区中,则其它所有试图进入临界区的进程必须等待

3、进入临界区的进程要在有限时间内退出,以便让等待队列中的一个进程进入

  1. 掌握使用信号量与PV操作如何解决进程间同步互斥问题。

PV操作是实现进程同步与互斥地常用方法。其中,P操作表示阻塞、等待、申请一个资源,V操作表示发出、释放一个资源

 信号量用符号S进行表示:S>=0表示某资源的可用数,若 S < 0,则其绝对值表示阻塞队列中等待该资源的进程数

具体定义如下:

P(S):    //某一个进程需要使用资源的时候

①将信号量S的值减1,即S=S-1;//可以理解为p操作消耗了一个资源

②如果S>=0,则该进程继续执行; //若是资源大于0,则说明还有资源,p操作可以继续消耗资源

否则该进程置为等待状态,排入等待队列。//S<0表示已经没有可以使用的资源了,必须等待

V(S):   //进程使用完资源之后

①将信号量S的值加1,即S=S+1;   //可以理解为 v生产、释放了一个资源

②如果S>0,则该进程继续执行; 

否则释放队列中第一个等待信号量的进程使其转换为就绪态自己则继续执行

  1. 掌握死锁的概念和产生的必要条件,死锁的解决和恢复方法。

     答:一组进程因为争夺资源而陷入永远等待的状态,叫做死锁

     死锁产生的必要条件:

  1. 、互斥条件:临界资源是独占资源,进程应该互斥且独占地使用这些资源
  2. 、占有和等待条件:进程在请求资源得不到满足而等待时,不释放已占有资源
  3. 、又称不可抢占,已获资源只能由进程资源释放而不允许被其他进程剥夺
  4. 、循环等待条件:存在循环等待链,其中每一个进程都在等待链中等待下一个进程所持有的资源,造成这组进程永远处于等待状态

     死锁的恢复方法:

         死锁防止:破坏死锁产生的四个必要条件中的一条即可防止死锁

         死锁避免

         死锁检测和恢复

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

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

相关文章

【Mysql】库的操作

一、sql分类 1.DDL&#xff08;Data Defination Language&#xff09;数据定义语言 定义数据时候使用的sql语言 creat:建表、drop:删表、alter:改变 2.DML&#xff08;Data Manipulation Language&#xff09;数据操纵语言 对数据进行操作的sql语言 insert:插入、delet…

【打造家庭服务器系列03】Frp 实现内网穿透

一、概述 为什么要搞frp&#xff0c;因为我们的服务器处于家里面的网络&#xff0c;是没有公网IP的&#xff0c;所以直接通过ssh连接服务器&#xff0c;此时就需要一个中转来实现转发。 二、服务端配置 - Frp Server 以腾讯云为例&#xff0c;阿里云也一样。Frp 官方文档 -…

chatPDF | 别再自己读文献了!让chatGPT来帮你读吧!~

1写在前面 自从chatGPT开放API以后&#xff0c;相关基于此的app也是层出不穷。&#x1f92a; ChatGPT API是基于OpenAI的自然语言处理模型的API。&#x1f9d0; 基于这个API&#xff0c;开发人员可以通过程序调用和使用ChatGPT模型来解决各种文本相关的任务。&#x1f609; 其实…

Ubuntu软件包管理之apt与apt-get的区别

目录apt和apt-get发展史apt和apt-get命令对比常用命令举例更新存储库索引升级已安装的包列出所有可用安装包关键字搜索安装包安装软件卸载软件查看安装包信息清理没用的依赖包清理下载的缓存包清理残余的配置文件查看安装包的依赖参考apt和apt-get发展史 Debian 使用一套名为 …

STM32—LCD1602

LCD1602&#xff08;Liquid Crystal Display&#xff09;是一种工业字符型液晶&#xff0c;能够同时显示 1602 即 32 字符(16列两行) 第 1 脚: VSS 为电源地 第 2 脚: VDD 接 5V 正电源 第 3 脚: VL 为液晶显示器对比度调整端,接正电源时对比度最弱&#xff0c;接地时对比度最…

C语言实现快速排序(hoare法、挖坑法、前后指针法与非递归实现)——不看后悔系列

目录 1. hoare法 方法与步骤 代码实现 2. 挖坑法 方法与步骤 代码实现 3. 前后指针法 方法与步骤 代码实现 4. 快速排序的缺点与优化 1.快速排序的缺点 2.快速排序的优化 ① 三数取中法选 key 代码实现 ② 小区间优化 代码实现 5. 快速排序的非递归实现 附录…

数据结构与算法基础(王卓)(16):KMP算法详解(代码实现)

实现代码的过程中 具体细节、问题&#xff1a; &#xff08;1&#xff09;&#xff1a;关于写Get_next函数的标题&#xff1a; 现象&#xff1a; PPT上写的是&#xff1a; void get_next(SString T, int &next[]) 然而并不能运行&#xff0c;而当我们去掉了引用符号&…

记录踩过的坑-Git

Git命令克隆很慢原命令&#xff1a;git clone -b r1.13.0 https://github.com/tensorflow/models.git现在替换为&#xff1a;git clone -b r1.13.0 https://github.com.cnpmjs.org/tensorflow/models.git也就是把原 URL 中的 github.com 替换为 github.com.cnpmjs.org&#xff…

设计模式第9式:迭代器模式

前言 我们有很多种方法可以把对象集中到一个集合中&#xff0c;比如列表、堆栈、散列表中。每种集合都有自己的特点和使用时机&#xff0c;但都有一个共同的需求&#xff1a;用户想要遍历这些对象。同时我们并不想用户看到集合的实现&#xff0c;本文将讲解如何让用户遍历对象…

JVM垃圾回收器详解

垃圾收集器没有在规范中进行过多的规定&#xff0c;可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中&#xff0c;因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器&#xff0c;可以将GC分为不同的类型。1、垃圾回收器分类1.1、按线…

国际安全领域顶会NDSS 2023录稿整理 (下)

隐私计算研习社 NDSS是网络和系统安全领域的四大顶级国际学术会议&#xff08;BIG4&#xff09;之一&#xff0c;第三十届会议于2023年2月27日到3月3日&#xff0c;在美国圣迭戈举办。本文将接着整理剩余论文&#xff0c;并对论文进行分类&#xff0c;感兴趣的小伙伴可以访问论…

【Linux】信号+再谈进程地址空间

目录 一、Linux中的信号 1、Linux中的信号 2、进程对信号的处理 3、信号的释义 二、信号的捕捉 1、信号的捕捉signal() 2、信号的捕捉sigaction() 三、信号如何产生&#xff1f; 1、kill()用户调用kill向操作系统发送信号 通过命令行参数模仿写一个kill命令 2、rais…

pinctrl和gpio子系统

一、pinctrl子系统简介Linux驱动讲究驱动分离与分层&#xff0c;pinctrl和gpio子系统就是驱动分离与分层思想下的产物&#xff0c;pinctrl子系统主要工作内容如下&#xff1a;获取设备树中的pin信息根据获取到的pin信息来设置pin的复用功能根据获取到的pin信息来设置pin的电气属…

Day914.安全认证架构演进:单块阶段 -SpringBoot与K8s云原生微服务实践

安全认证架构演进&#xff1a;单块阶段 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于安全认证架构演进&#xff1a;单块阶段的内容。 讲到安全认证的内容&#xff0c;就必然会提到两个点&#xff1a;认证 和 授权。 认证&#xff1a;我是谁授权&#xff1a;我能…

Spring中的事务@Transactional

Transactional可以添加在方法上 添加在方法上时&#xff0c;表示该方法出现了异常或者报错&#xff0c;而导致之前数据库没有进行回滚事件&#xff0c;也就是说如果在方法中&#xff0c;有报错&#xff0c;但是添加了Transactional 则会开始回滚。 Transactional 在异常被捕获…

剑指 Offer 29. 顺时针打印矩阵

剑指 Offer 29. 顺时针打印矩阵 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2…

【OpenCV技能树】——OpenCV基础

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; 目前正在进行 OpenCV技能树的学习&#xff0c;OpenCV是学习图像处理理论知识比较好的一个途径&#xff0c;至少比看书本来得实在。本专栏文章主要记录学习Op…

Apache apisix默认密钥漏洞(CVE-2020-13945)

目录漏洞描述影响版本漏洞复现声明&#xff1a;本文仅供学习参考&#xff0c;其中涉及的一切资源均来源于网络&#xff0c;请勿用于任何非法行为&#xff0c;否则您将自行承担相应后果&#xff0c;本人不承担任何法律及连带责任。漏洞描述 Apache APISIX 是一个动态、实时、高…

LearnOpenGL-模型加载-3.渲染模型

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject 文章目录模型加载重要代码读取3D模型递归处理结点的网格加载纹理优化程序代码Model类加载模型流程例子1&…

【运筹优化】拉格朗日松弛 次梯度算法求解整数规划问题 + Java调用Cplex实战

文章目录一、拉格朗日松弛二、次梯度算法三、案例实战一、拉格朗日松弛 当遇到一些很难求解的模型&#xff0c;但又不需要去求解它的精确解&#xff0c;只需要给出一个次优解或者解的上下界&#xff0c;这时便可以考虑采用松弛模型的方法加以求解。 对于一个整数规划问题&…