操作系统期末总复习结构

目录

前言

操作系统引论

操作系统的目标

操作系统的基本特征

操作系统的主要功能

系统调用的基本概念

进程的描述与控制

进程和程序的区别

程序为什么不能并发执行(引入进程的原因)

进程的基本状态与转换

进程通信的类型

线程的概念以及与进程的区别及引入线程的原因

处理及调度与死锁

处理机调度的层次

死锁的定义、必要条件与处理方法

进程同步

存储器管理

高速缓存和磁盘缓存

程序的接入与链接

程序的链接

连续分配存储管理方式

分页与分段的区别

虚拟存储器

虚拟存储实现原理

多道程序与”抖动“

”抖动“的预防方法

输入/输出系统

中断的简介

与设备无关软件的基本概念

缓冲引入的原因

文件管理

文件操作

文件目录

文件共享

磁盘存储器管理

外存的组织方式及其他点

提高磁盘I/O速度的途径有哪些、特点


前言

        该篇文章是操作系统课程总复习的结构,希望能够为进行期末复习或者对操作系统感兴趣的同学或专业人员提供一定的帮助。

  • 操作系统引论

    • 操作系统的目标

      • 方便性:提供各种命令操纵计算机,极大地方便了用户

      • 有效性:提高OS的资源利用率,提高系统的吞吐量

      • 可扩充性:操作系统必须具有很好的可扩充性,方便添加新的功能和模块

      • 开放性:遵循国际标注而开发的硬件和软件能够彼此兼容,方便实现互联

    • 操作系统的基本特征

      • 并发

      • 共享

      • 虚拟

      • 异步

    • 操作系统的主要功能

      • 处理机管理功能

      • 存储器管理功能

      • 设备管理功能

      • 文件管理功能

      • 接口管理功能

      • 现代操作系统的新功能

        • 保障系统安全

        • 支持用户通过联网获取服务

        • 可处理多媒体信息

    • 系统调用的基本概念

      • 系统调用是操作系统给程序员的唯一接口。程序员利用系统调用,在源程序动态请求和释放资源,并调用系统中已有的系统功能来完成那些与硬件相关的工作以及控制程序的执行速度等。因此,系统调用像是一个“黑箱子”,对用户屏蔽了操作系统的具体操作而只提供有关的功能

  • 进程的描述与控制

    • 进程和程序的区别

      • 状态:程序是静态的,只有在执行时才会变为动态的进程;而进程是动态的,表示程序的执行过程

      • 存储位置: 程序通常存储在非易失性的存储介质;而进程则存储在易失性的存储介质中

      • 独立性:进程具有独立性,即每个进程有独立的地址空间,有自己的资源;而程序则没有这种独立性

      • 并发性: 程序无法并发执行,只能顺序执行;而进程可以并发执行

      • 生命周期:程序的生命周期是永久的,除非它被明确删除;而进程的生命周期是临时的,只是程序运行时存在

      • 系统资源:进程是操作系统分配资源的基本单位,包括CPU时间、内存空间等;程序则不需要这些资源

    • 程序为什么不能并发执行(引入进程的原因)

      • 程序本身只是一组静态的指令集合,只能被顺序执行。每个程序的指令都是固定的,顺序不能改变,因此它们不能并发执行。而且,程序没有自己的状态和上下文信息,无法记住上次执行到哪个指令,无法在中断后恢复执行。 而进程则是为了实现对多个程序的并发执行,实现多任务并发执行,提高系统的效率和响应性。

    • 进程的基本状态与转换

      • 就绪状态:指进程已经处于准备好执行的状态,即进程已经分配到除CPU以外的所有必要资源后,只要再获得CPU,即可立即执行

      • 执行状态:指进程获得CPU后其程序”正在执行“这一状态

      • 阻塞状态:正在执行的进程由于发生某时间而导致无法继续执行,即进程的执行收到了阻塞

    • 进程通信的类型

      • 共享存储器系统

      • 管道通信系统

      • 消息传递系统

      • 客户机-服务器系统

    • 线程的概念以及与进程的区别及引入线程的原因

      • 资源开销

      • 内存空间

      • 通信

      • 影响范围

      • 引入线程的原因是为了降低上下文切换的开销,提高多处理器系统的并发性能,并简化多任务之间的数据共享和通信

  • 处理及调度与死锁

    • 处理机调度的层次

      • 高级调度(长程调度、作业调度)

        • 对象:作业 功能:根据某种算法,决定将外存上处于后背队列中的几个作业调入内存,为他们创建进程、分配必要的资源,并将它们放入就绪队列

      • 低级调度(短程调度、进程调度)

        • 对象:进程 功能:根据某种算法,决定就绪队列中的哪个进程获得处理机,并由分配程序将处理机分配给被选中的进程

      • 中级调度(内存调度)

        • 主要目的是提高内存利用率环和系统吞吐量

    • 死锁的定义、必要条件与处理方法

      • 定义

        • 如果一组进程中的每个进程都在等待仅由该组进程中的其他进程才能引发的事件发生,那么该组进程是死锁的

      • 必要条件

        • 互斥条件

          • 进程对分配到的资源进程排他性使用,即在一段时间内,某资源仅能被一个进程占用

        • 请求和保持条件

          • 进程已经占有了至少一个资源,但又提出了新的资源请求,而被该请求的资源已经被其他进程占有,此时请求进程被阻塞,同时对自己占有的资源保持不放

        • 不可抢占条件

          • 进程已获得的资源在未使用完之间不能被抢占,只能在进程使用完成时释放

        • 循环等待条件

          • 指在死锁发生时,必然存在一个”进程-资源“循环链

      • 处理方法

        • 预防

          • 采用某种协议来预防或避免死锁,确保系统永远不会进入死锁状态

        • 检测

          • 允许系统进入死锁状态,但是会检测它,然后恢复

        • 忽略

          • 完全忽略这个问题,并假设系统永远不会发生死锁

  • 进程同步

  • 该部分主要包括PV操作等编程内容,限于本篇格式不会上传代码,请自行查阅。
  • 存储器管理

    • 高速缓存和磁盘缓存

      • 高速缓存:是现代计算机结构中的一个重要部件,它是介于寄存器和内存之间的存储器,主要用于备份内存中较常用的数据,以减少处理机堆内存的访问次数,可大幅提高程序执行速度

      • 磁盘缓存:由于目前磁盘的I/O速度远低于对内存的访问速度,为了缓和两者在速度上的不匹配,特设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据,以减少访问磁盘的次数

    • 程序的接入与链接

      • 程序的装入

        • 绝对装入方式:当计算机系统很小,仅能运行单道程序时,完全有可能知道程序将驻留在内存的什么位置,此时采用绝对装入方式

        • 可重定位装入方式:只能将目标模块装入内存中事先指定的位置,这只适用于单道程序环境

        • 动态运行转入方式:把装入模块装入内存后,并不会立即把模块中的相对地址变换为绝对地址,而是会把这种地址推迟到真正要执行时才进行

      • 程序的链接

        • 静态链接

          • 在程序运行之前,先将各目标模块及他们所需的库函数链接成一个完整的装配模块,以后不再拆开

        • 装入时动态链接

          • 将用户源程序编译后所得的一组目标模块,在装入内存时,采用这种方式

        • 运行时动态链接

          • 在执行过程中,当发现一个”被调用模块“尚未被装入内存时,立即由OS去找到该模块,将其装入内存,并链接到装入模块上

    • 连续分配存储管理方式

      • 单一连读分配

      • 固定分区分配

      • 动态分区分配

      • 动态重定位分区分配

    • 分页与分段的区别

      • 页是信息的物理单位

      • 页的大小固定且由系统决定

      • 分页的用户程序地址空间是一维的

  • 虚拟存储器

    • 虚拟存储实现原理

      • 分页

        • 分页是将物理内存划分为固定大小的页,同样的,虚拟内存也被划分为固定大小的页,每个页对应一个内存地址

      • 换页

        • 当一个程序需要访问的页面不在物理内存中时,就会发生所谓的页面错误。此时,操作系统会选择一个物理内存中的页面,将其内容写回到磁盘,然后从磁盘读取需要的页面到物理内存,最后更新页表以反应新的虚拟页到物理页的映射

    • 多道程序与”抖动“

      • 多道程序与处理机的利用率

        • 由于虚拟存储器系统能从逻辑上扩大内存,这时只需要装入一个进程的部分程序和数据,进程便可开始运行,希望在系统中能运行更多的进程,即增加多道程序度以提高处理机的利用率

      • 产生抖动的原因

        • 同时在系统中运行的程序太多,导致分配给每个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时会频繁地出现缺页,必须请求系统将所缺页调入内存

    • ”抖动“的预防方法

      • 采取局部置换策略

      • 把工作集算法融入处理机调度中

      • 利用”L=S“准则调节缺页率

      • 选择暂停的进程

  • 输入/输出系统

    • 中断的简介

      • 中断是指CPU对I/O设备发来的中断信号的一种响应,CPU暂停正在执行的程序,保持CPU现场环境后,自动转去执行该I/O设备的中断处理程序。执行完后再回到断点,继续执行原来的程序。

    • 与设备无关软件的基本概念

      • 通过物理设备名使用设备

      • 引入逻辑设备名

      • 实现从逻辑设备到物理设备名的转换

    • 缓冲引入的原因

      • 缓冲CPU和I/O设备速度不匹配的矛盾

      • 减少CPU中断的频率,放宽对CPU中断相应时间的限制

      • 解决数据粒度不匹配的问题

      • 提高CPU和I/O设备之间的并行性

  • 文件管理

    • 文件操作

      • 打开:在用户和指定文件之间建立一个连接

      • 关闭:断开此连接

    • 文件目录

      • 文件控制块和索引节点

      • 简单的文件目录

      • 树形目录

      • 无环图目录

      • 目录查询技术

    • 文件共享

      • 利用有向无环图实现文件共享

      • 利用符号链接实现文件共享

  • 磁盘存储器管理

    • 外存的组织方式及其他点

      • 连续存储方式:顺序访问容易、顺序访问速度块

      • 链接组织方式:消除了外部碎片,提高了外存的利用率;非常容易插入、删除和修改记录;能适应文件的动态增长

      • 索引组织方式:支持直接访问;不会产生外部碎片

    • 提高磁盘I/O速度的途径有哪些、特点

      • 途径

        • 数据交付方式

          • 数据交付

          • 指针交付

        • 置换算法

        • 周期性地回写磁盘

      • 特点

        • 提高磁盘I/O速度的途径有以下几种,并且它们各自具有不同的特点: 1. 使用高性能磁盘驱动器:选择速度更快、响应时间更短的磁盘驱动器,比如固态硬盘(SSD),相比传统机械硬盘(HDD),SSD具有更快的读写速度和更低的访问延迟。 2. 实施磁盘级别的RAID:RAID(冗余磁盘阵列)是一种将多个磁盘驱动器组合在一起的技术,通过数据条带化、容错等技术,提高磁盘读写性能和数据冗余性。不同的RAID级别提供了不同的特点,如RAID 0提供了更高的性能,而RAID 1提供了更好的数据冗余。 3. 增加磁盘缓存:使用高性能磁盘缓存可以减少对物理磁盘的直接访问次数,从而提高磁盘I/O速度。常见的磁盘缓存技术包括硬件缓存(如磁盘阵列控制器中的缓存)和操作系统级别的缓存(如操作系统内核的文件系统缓存)。 4. 优化文件系统:选择合适的文件系统,并进行适当的优化配置,可以提高磁盘I/O性能。例如,在某些情况下,使用较小的簇大小可以提高小文件的读写性能,或者使用日志文件系统可以减少文件系统的写入延迟。 5. 分布式存储系统:通过在多个物理和逻辑节点之间分配和复制数据,分布式存储系统可以提供更高的磁盘I/O性能和容错性。这种系统可以通过并行处理和负载均衡来提高整体性能,并且可以通过添加更多节点来扩展存储容量和性能。 需要根据具体的应用场景和需求选择适合的方法,有时候可能需要结合多种优化措施来提高磁盘I/O性能。

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

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

相关文章

解决Django报错 : No module named ‘MySQLdb‘

Django的版本是2.0,Python的版本号是3.6.4 在models.py创建好了模型类之后使用命令:python manage.py makemigrations 进行迁移,但是突然报错:ImportError:No module named MySQLdb 查询了相关资料发现python2.x版本是支持mysql…

Linux - PostgreSQL 适用于9.x 以上的 tar.gz 源码安装与理解 - 报错集锦

这里写目录标题 序言主要内容bash 配置文件个人理解关于初始化 PostgreSQL 数据库的理解 启动方法检查服务器是否在PostgreSQL中运行关闭 postgresql 数据库方法参考链接 序言 PostgreSQL 9.x 以下版本笔者没用过,具体操作看参考链接,笔者就不记录重复操…

类与对象(上-2)

类与对象(上-2) 6、类的实例化7、计算类空间的大小8、this指针 6、类的实例化 Test.cpp //用类类型创建对象的过程,称为类的实例化。 //类是对对象进行描述的,是一个 模型 一样的东西,来限定了类有哪些成员&#xff…

回答网友 修改一个exe

网友说:他有个很多年前的没有源码的exe,在win10上没法用,让俺看一下。 俺看了一下,发现是窗体设计的背景色的问题。这个程序的背景色用的是clInactiveCaptionText。clInactiveCaptionText 在win10之前的系统上是灰色,但…

幅度调制与角度调制

文章目录 前言一、调制简介1、调制定义2、调制目的3、调制的分类 二、幅度调制(线性调制)1、幅度调制的一般模型2、常规双边带调幅 AM①、AM 信号的产生②、AM 调制器的模型③、AM 波形和频谱④、AM 信号的特点⑤、AM 包络检波⑥、调幅系数 3、抑制载波双…

Java中对Redis的常用操作

目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类,创建RedisTempla…

推荐带500创作模型的付费创作V2.1.0独立版系统源码

ChatGPT 付费创作系统 V2.1.0 提供最新的对应版本小程序端,上一版本增加了 PC 端绘画功能, 绘画功能采用其他绘画接口 – 意间 AI,本版新增了百度文心一言接口。 后台一些小细节的优化及一些小 BUG 的处理,前端进行了些小细节优…

Spring依赖注入和ioc在spring中的实现方式

目录 一、依赖注入 1.IOC思想 2.什么是依赖注入? 3.实例化对象中有pojo类型属性 二、IOC在Spring中的实现方式 1.获取bean的三种方式 1.1根据bean的id获取 1.2根据bean的类型获取(最常用,因为在IOC容器中,一个类型的bean只…

<MySQL> Centos 7环境安装MySQL

Centos 7环境安装MySQL 1.卸载不要的环境 停止MySQL服务 systemctl stop mariadb.service systemctl stop mysqld禁止MySQL服务开机自启 systemctl disable mysqld卸载MySQL软件包 yum remove mysql-server mysql-client删除MySQL数据目录 rm -rf /var/lib/mysql清理MySQ…

[golang gin框架] 42.Gin商城项目-微服务实战之后台Rbac微服务角色增删改查微服务

一.重构后台Rbac用户登录微服务功能 上一节讲解了后台Rbac微服务用户登录功能以及Gorm数据库配置单独抽离,Consul配置单独抽离,这一节讲解后台Rbac微服务角色增删改查微服务功能,Rbac微服务角色增删改查微服务和后台Rbac用户登录微服务是属于…

SpringBoot入门

目录 一、创建项目 二、项目结构 三、起步依赖 四、简单请求接口 控制类 1、无参数 2、简单参数 3、实体参数 4、数组集合参数 5、json参数 五、统一响应结果 result.java HelloResponse.java 测试结果 一、创建项目 Spring官方骨架,可以理解为Sprin…

解决 “Module build failed (from ./node_modules/babel-loader/lib/index.js)“ 错误的方法

系列文章目录 文章目录 系列文章目录前言一、错误原因:二、解决方法:三、注意事项:总结 前言 在前端项目开发中,如果使用了 Babel 来转译 ES6 语法,有时会遇到错误信息 “Module build failed (from ./node_modules/b…

提升开发效率,Lombok的链式编程和构建模式

目录 链式编程 定义 代码示例 ​编辑 Accessors(chaintrue) 开启链式编程 ​编辑 Accessors(chain true,fluent true) 去除set和get 构建模式 定义 代码示例 ​编辑 踩坑 Singular 定义 代码示例 踩坑默认值情况 ​编辑 With 定义 代码示例 链式编程 定义 链…

ChatGPT的应用与发展趋势:解析人工智能的新风口

目录 优势 应用领域 发展趋势 总结 在人工智能技术迅猛发展的时代,自然语言处理系统的提升一直是研究者们追求的目标。作为人工智能领域的重要突破之一,ChatGPT以其出色的语言模型和交互能力,在智能对话领域取得了重要的进展。 ChatGPT是…

一文教会你单向链表

目录 一、什么是链表? 1.链表的定义 2.链表的实现 2.1链表的定义 2.2创建一个链表 二、链表的各个接口 1.创建节点 2.头插(将新创建的节点作为头插入到链表中) 3.打印链表 4.尾插(将新创建的节点插入到链表的末端) 5.头删 6.尾删 7.查找 8.删除指定节点位…

【计算机网络】10、ethtool

文章目录 一、ethtool1.1 常见操作1.1.1 展示设备属性1.1.2 改变网卡属性1.1.2.1 Auto-negotiation1.1.2.2 Speed 1.1.3 展示网卡驱动设置1.1.4 只展示 Auto-negotiation, RX and TX1.1.5 展示统计1.1.7 排除网络故障1.1.8 通过网口的 LED 区分网卡1.1.9 持久化配置&#xff08…

QT--day5(网络聊天室、学生信息管理系统)

服务器: #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间servernew QTcpServer(this); }Widget::~Widget() {delete ui; …

Codeforces Round 889 (Div. 2)题解

目录 A. Dalton the Teacher题目大意题解思路代码 B. Longest Divisors Interval题目大意题解思路代码 C1. Dual (Easy Version)题目大意题解思路代码 A. Dalton the Teacher 题目链接 题目大意 Dalton是一个班级的老师,这个班级有 n n n个学生,分别…

GDAL C++ API 学习之路 OGRGeometry 抽象曲线基类 OGRCurve

OGRCurve class "ogrsf_frmts.h" OGRCurve 是 OGR(OpenGIS Simple Features Reference Implementation)几何库中的一个基类,表示曲线几何对象。它是 OGRLineString 和 OGRCircularString 的抽象基类,用于表示曲…

Kotlin知识点

Kotlin 是 Google 推荐的用于创建新 Android 应用的语言。使用 Kotlin,可以花更短的时间编写出更好的 Android 应用。 基础 Kotlin 程序必须具有主函数,这是 Kotlin 编译器在代码中开始编译的特定位置。主函数是程序的入口点,或者说是起点。…