操作系统复习总结1
操作系统复习总结,仅供笔者复习使用,参考教材:
- 《操作系统原理》 - 何静媛编著. 西安电子科技大学出版社
- 《操作系统考研复习指导》2024年 - 王道论坛组编. 电子工业出版社
本文主要内容为:计算机系统概述;
计算机系统概述 部分见 操作系统复习总结1;
进程与线程 部分见 操作系统复习总结2;
内存管理 部分见 操作系统复习总结3;
文件管理 部分见 操作系统复习总结4;
输入输出管理 部分见 操作系统复习总结5;
目录
- 1. 操作系统基本概念
- 2. 操作系统发展历程
- 3. 操作系统运行环境
- 4. 操作系统结构
- 5. 操作系统引导
- 6. 虚拟机
1. 操作系统基本概念
- 计算机系统:硬件、操作系统、应用程序、用户;
- 操作系统 OS:控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合;
- 操作系统的特征:
-
并发:操作系统能够处理和调度计算机系统中多个运行的程序同时执行;
并发 ≠ 并行
并发:一段时间内,宏观上有多道程序同时执行,但在每一时刻,单处理机只会执行一道程序,因为微观上这些程序是分时交替执行的。
并行:同一时刻执行多道程序,需要相关硬件的支持,如多级流水线或多处理机。 -
共享:系统中的资源可供内存中多个并发执行的进程共同使用。根据是否能同时使用,共享分为 互斥共享 和 同时访问 两种方式;
-
虚拟:把物理上实际存在的实体变为若干逻辑上的对应物,这些对应物是虚的,是用户感觉上的事物。操作系统的虚拟技术分为 时分复用技术 和 空分复用技术;
- 虚拟处理器:通过分时使用同一个处理器让多道程序并发执行,使每个终端用户都感觉有一个 CPU 在专为其服务。因此,多道程序设计技术把一个物理上的 CPU 虚拟为多个逻辑上的 CPU,即虚拟处理器;
- 虚拟存储器:通过将计算机的物理内存和磁盘空间相结合,提供比实际物理内存更大的地址空间供程序使用。虚拟存储器的核心思想是将程序所需的数据和指令从磁盘加载到物理内存中,并根据需要在物理内存和磁盘之间进行数据交换,使得程序能够运行并处理比物理内存更大的数据集;
- 虚拟设备:通过创建虚拟层,将一个硬件设备虚拟化为多个逻辑设备,使多个操作系统或应用程序可以共享同一物理设备;
-
异步:多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行无法一贯到底,而是以不可预知的速度间断向前推进。与同步性(任务的执行按照确定的顺序和时间进行,一个任务执行完后才能执行下一个任务)相对,异步操作系统中任务的执行不是严格按照线性的顺序进行,而是根据任务的状态和优先级来确定执行顺序;
-
- 操作系统的功能:
- 管理系统资源:
- 处理机管理:以进程为基本单位分配和运行处理机,还包括进程控制、进程同步、进程通信、死锁处理、处理机调度等;
- 存储器管理:主要包括内存分配与回收、地址映射、内存保护与共享、内存扩充等功能;
- 文件管理:主要包括文件存储空间管理、目录管理及文件读写管理等功能;
- 设备管理:主要包括完成用户的 I/O 请求、缓冲管理、设备分配、虚拟设备等功能;
- 提供用户接口:
- 命令接口:用户利用命令接口提供的操作命令来组织和控制作业的执行;
- 程序接口:开发者使用程序接口(系统调用)请求操作系统服务;
- 扩充计算机资源:操作系统丰富了裸机的功能,使用户可以更方便的使用计算机;
- 管理系统资源:
2. 操作系统发展历程
- 手工操作阶段:人工完成计算机上的所有工作,无操作系统;
- 批处理阶段:
- 单道批处理系统:系统按顺序逐个处理一批作业,同一时刻内存中只保持一道作业;
- 多道批处理系统:多个程序同时进入内存并在 CPU 中交替进行,即宏观上并行,微观上串行;
- 分时操作系统:通过分时技术将时间片轮流把处理器分配给各联机作业使用,一般用于服务器,能够保证多个用户通过终端同时共享一台主机;
- 实时操作系统:在某个时间限制内必须完成某些紧急任务而不需要时间片排队,分为硬实时系统和软实时系统;
- 网络操作系统:把网络中多台计算机有机结合,实现资源共享与通信;
- 分布式计算机系统:多台地位同等的计算机并行、协同工作;
- 个人计算机操作系统:如今广泛使用的 Windows、Linux、MacOS等;
上述操作系统都可以统称为通用操作系统,可以在各种计算设备上运行,包括个人计算机、服务器、移动设备和嵌入式系统等。它使用时间片轮转调度算法,提供了多任务支持、文件系统、设备管理、内存管理、网络支持等核心功能,旨在为用户提供统一的计算环境。
3. 操作系统运行环境
-
CPU 程序:
- 应用程序:执行 非特权指令 只能访问用户的地址空间;
- 内核程序:执行 特权指令 访问系统中的软硬件资源,包括一些与硬件关联密切的模块(时钟管理、中断处理、设备驱动)和运行频率较高的程序(进程管理、存储器管理、设备管理);
-
CPU 运行模式:
- 用户态:应用程序运行在用户态,当想要执行特权指令时向操作系统请求服务,通过 系统调用接口 使用 访管指令 产生中断将操作系统切换为核心态;
访管指令
访管指令是一条可以在用户态下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件,将操作系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行。- 核心态:操作系统内核程序运行在核心态,主要内核功能如下:
- 时钟管理:为分时操作系统中的时间片、实时系统中的截止时间、批处理系统中的作业时间等提供时钟中断;
- 中断机制:键盘或鼠标的输入、进程的管理和调度、系统调用、设备驱动、文件访问等;
- 原语:操作系统底层最接近硬件部分可被调用的公用小程序,运行具有原子性,操作一气呵成,不可分割;
- 系统控制的数据结构:进程管理、存储器管理和设备管理等;
-
中断和异常:处于用户态的 CPU 可以通过中断或异常进入核心态:
- 中断:也叫外中断,通常用于设备输入/输出处理或时间片走完;
- 异常:也叫内中断,通常是来自 CPU 内部的事件,分为 故障、自陷、终止;
- 故障:指令执行异常,如非法操作码、缺页故障、除 0、运算溢出等;
- 自陷:用户态执行系统调用时执行自陷指令;
- 终止:CPU 无法继续执行,如控制器出错、存储器校验错等;
-
系统调用:用户程序想要调用操作系统提供的一些子功能时执行自陷指令,把 CPU 的使用权交给操作系统内核程序,CPU 进入内核态,操作系统内核程序再对系统调用请求作相应处理;
4. 操作系统结构
-
分层法:每层只调用紧邻它的低层的功能和服务;
-
模块 - 接口法:将操作系统功能划分为若干具有一定独立性的模块,通过 内聚性 和 耦合度 衡量模块的独立性;
-
宏内核:将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务;
-
微内核:将内核最基本的功能保留在内核,其余不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。微内核结构的操作系统使用 足够小的内核,基于 客户 / 服务器方式,应用 “机制与策略分离” 原理,采用 面向对象 技术进行设计。
5. 操作系统引导
操作系统是一种程序,以数据的形式存放在硬盘中。操作系统引导就是计算机利用 CPU 运行特定程序,通过程序识别硬盘及其分区上的操作系统,最后通过程序启动操作系统。该过程如下:
- 激活 CPU 读取 ROM 中的 boot 程序,将指令寄存器置为 BIOS 的第一条指令并开始执行;
- 硬件自检,如有故障,主板会发出蜂鸣,启动停止;若无故障,屏幕会显示 CPU、内存、硬盘等信息;
- 加载带有操作系统的硬盘和主引导记录 MBR;
- 扫描硬盘分区表并加载硬盘活动分区;
- 加载分区引导记录 PBR;
- 在 PBR 中扫描并启动活动分区中的启动管理器;
- 加载操作系统;
6. 虚拟机
虚拟机是指利用虚拟化技术,通过隐藏计算机的实际物理特性,为用户提供抽象、统一的模拟计算环境的逻辑计算机。
- 第一类虚拟机管理程序:运行在 裸机 上并具备多道程序功能,向上层提供若干裸机环境,每个裸机可以运行各自的操作系统;
- 第二类虚拟机管理程序:依赖宿主操作系统,就像一个普通的进程,运行客户操作系统;
相关文章:

操作系统复习总结1
操作系统复习总结,仅供笔者复习使用,参考教材: 《操作系统原理》 - 何静媛编著. 西安电子科技大学出版社《操作系统考研复习指导》2024年 - 王道论坛组编. 电子工业出版社 本文主要内容为:计算机系统概述; 计算机系…...

Matlab中图的最短路径
前言: 图的基本概念: 若想简单绘制图可以利用此网站: 左上角Undirected/Directed是无向图/有向图 左边 0-index ,1-index为0下标,1下标。 Node Count为节点个数 Graph Data:最初尾节点的名称ÿ…...
没有jodatime,rust里怎么将字符串转为日期呢?
关注我,学习Rust不迷路!! 在 Rust 中,有多种方法可以在时间和字符串之间进行转换。以下是五种常见的方式: 1. 使用 chrono 库进行转换: use chrono::{NaiveDateTime, DateTime, Utc, TimeZone};fn main(…...
【Markdown入门及使用】
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
大数据面试题:HBase的读写缓存
面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 参考答案: HBase上RegionServer的cache主要分为两个部分:MemStore & BlockCache。 MemStore是写缓存,Block…...

springboot基于vue的高校迎新系统的设计与实现8jf9e
随着时代的发展,人们的生活方式得到巨大的改变,从而慢慢地产生了大量高校迎新信息,高校迎新信息需要一个现代化的管理系统,进行高校迎新信息的管理。 高校迎新系统的开发就是为了解决高校迎新管理的问题,系统开发是基于…...

JVM入门到精通
一、JVM概念 1.1、什么是JVM Java Virtual Machine:Java虚拟机,用来保证Java语言跨平台 Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域 Java虚拟机与Java语言并没有必然…...
Hive执行引擎的区别
执行引擎 Tez、Spark 和 MapReduce 都是用于在大数据处理中执行任务的框架或引擎,它们在性能、优化、适用场景等方面有一些区别。 MapReduce: MapReduce 是 Hadoop 最早引入的批处理计算模型,它将任务分成 Map 和 Reduce 两个阶段,…...
分布式 - 服务器Nginx:常见问题总结(二)
文章目录 01. Nginx 虚拟主机怎么配置?02. Nginx location 指令的作用?03. Nginx location 指令如何与其他指令一起使用?04. Nginx root 命令的作用?05. Nginx if 模块的作用?06. Nginx include 指令的作用?07. Nginx…...

【Paper Reading】CenterNet:Keypoint Triplets for Object Detection
背景 首先是借鉴Corner Net 表述了一下基于Anchor方法的不足: anchor的大小/比例需要人工来确认anchor并没有完全和gt的bbox对齐,不利于分类任务。 但是CornerNet也有自己的缺点 CornerNet 只预测了top-left和bottom-right 两个点,并没有…...
【BASH】回顾与知识点梳理(三)
【BASH】回顾与知识点梳理 三 三. 命令别名与历史命令3.1 命令别名设定: alias, unalias3.2 历史命令:history同一账号同时多次登入的 history 写入问题无法记录时间 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 三. 命令…...
C#设计模式之---单例模式
单例模式(Singleton) 单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例。 1)普通单例模式 using System; namespace SingletonPattern {/// /// 单例模式(非线程安全)/// …...

Git工具安装
Git 工具安装 1. 下载Git安装包2. 安装Git工具3. 简单的使用配置用户名 1. 下载Git安装包 打开官网 https://git-scm.com/downloads点击下载 2. 安装Git工具 右击以管理员身份运行 
深度学习——注意力机制、自注意力机制
什么是注意力机制? 1.注意力机制的概念: 我们在听到一句话的时候,会不自觉的捕获关键信息,这种能力叫做注意力。 比如:“我吃了100个包子” 有的人会注意“我”,有的人会注意“100个”。 那么对于机器来说…...

STM32入门学习之定时器中断
1.STM32的通用定时器是可编程预分频驱动的16位自动装载计数器。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波 形 ( 输出比较和 PWM) 等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形 周…...
基本数据类型与包装数据类型的使用标准
Reference:《阿里巴巴Java开发手册》 【强制】所有的 POJO 类属性必须使用包装数据类型。【强制】RPC 方法的返回值和参数必须使用包装数据类型。【推荐】所有的局部变量使用基本数据类型。 比如我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer而不用…...
小研究 - 基于 SpringBoot 微服务架构下前后端分离的 MVVM 模型(二)
本文主要以SpringBoot微服务架构为基础,提出了前后端分离的MVVM模型,并对其进行了详细的分析以及研究,以此为相关领域的工作人员提供一定的技术性参考。 目录 4 SpringBoot 4.1 技术发展 4.2 技术特征 4.3 SpringBoot项目构建 4.4 目录结…...

ArmSoM-W3之RK3588安装Qt+opencv+采集摄像头画面
1. 简介 场景:在RK3588上做qt开发工作 RK3588安装Qtopencv采集摄像头画面 2. 环境介绍 这里使用了OpenCV所带的库函数捕获摄像头的视频图像。 硬件环境: ArmSoM-RK3588开发板、(MIPI-DSI)摄像头 软件版本: OS&…...
基于长短期神经网络的风速预测,基于LSTM的风速预测
目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的风速预测 完整代码: https://download.csdn.net/download/abc991835105/88171311 效果图 结果分析 展望 参考论文 背影 风速预测是一种比较难的预测,随机性比较大,长短期神经网络是一种改进党的RNN…...

Mybatis引出的一系列问题-spring多数据源配置
在日常开发中我们都是以单个数据库进行开发,在小型项目中是完全能够满足需求的。但是,当我们牵扯到像淘宝、京东这样的大型项目的时候,单个数据库就难以承受用户的CRUD操作。那么此时,我们就需要使用多个数据源进行读写分离的操作…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...

旋量理论:刚体运动的几何描述与机器人应用
旋量理论为描述刚体在三维空间中的运动提供了强大而优雅的数学框架。与传统的欧拉角或方向余弦矩阵相比,旋量理论通过螺旋运动的概念统一了旋转和平移,在机器人学、计算机图形学和多体动力学领域具有显著优势。这种描述不仅几何直观,而且计算…...
Flask和Django,你怎么选?
Flask 和 Django 是 Python 两大最流行的 Web 框架,但它们的设计哲学、目标和适用场景有显著区别。以下是详细的对比: 核心区别:哲学与定位 Django: 定位: "全栈式" Web 框架。奉行"开箱即用"的理念。 哲学: "包含…...

[electron]预脚本不显示内联script
script-src self 是 Content Security Policy (CSP) 中的一个指令,它的作用是限制加载和执行 JavaScript 脚本的来源。 具体来说: self 表示 当前源。也就是说,只有来自当前网站或者当前页面所在域名的 JavaScript 脚本才被允许执行。"…...