操作系统学习笔记---计算机系统概述
目录
概念
功能和目标
特征
并发
共享(资源共享)
虚拟
异步
发展与分类
手工操作阶段(无OS)
批处理阶段
单道批处理系统
多道批处理系统
分时操作系统
实时操作系统
网络操作系统
分布式计算机系统
个人计算机操作系统
操作系统运行环境
内核态和用户态
特权和非特权指令
状态切换
中断
中断机制的基本原理
系统调用
按功能分类
过程
操作系统体系结构
分层法
模块化
宏内核(单内核/大内核)
微内核
外核
操作系统的引导
虚拟机
编辑
概念
操作系统(OS)是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源分配,进而为用户与其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件
功能和目标
1.操作系统是资源的管理者
处理机管理、存储器管理、文件管理、设备管理、用户接口管理
2.操作系统作为用户与计算机硬件系统之间的接口
- 命名接口:联机命令接口(交互式命令接口)、脱机命令接口(批处理命令接口)
- 程序接口(广义指令)
3.操作系统实现了对计算机资源的扩充
特征
并发
若干事件在同一时间间隔内发生。操作系统的并行性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力
ps:单核cpu同一时刻只能执行一个程序,各个程序只能并发执行
共享(资源共享)
系统中的资源可供内存中多个并发执行的进程共同使用。分为以下两种方式;
- 互斥共享方式:系统中的某些资源,在一段时间内只允许一个进程访问改资源
- 同时访问方式:系统中的某些资源,在一段时间内允许多个进程“同时”访问
虚拟
把一个物理上的实体变为若干逻辑上的对应物。物理实体是实际存在的,后者则是用户感觉上的事物
异步
多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。
ps:并发和共享是操作系统两个最基本的条件
发展与分类
手工操作阶段(无OS)
主要缺点:
- 用户独占,资源利用率低
- CPU等待手工操作,CPU的利用不充分
批处理阶段
单道批处理系统
- 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
- 主要缺点:每次主机内存仅存放一道作业,每当它在运行期间发出输入/输出请求后,高速CPU便处于等待低速I/O完成的状态,资源利用率依然低
多道批处理系统
- 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,系统吞吐量大。
- 主要缺点:用户响应时间较长;不提供人机交互功能,用户既不能了解自己的程序的运行情况,又不能控制计算机
分时操作系统
- 分时技术:把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用
- 主要优点:用户请求可以被及时响应,解决了人机交互问题。允许多个用户访问同一台计算机,并且用户对计算机操作独立
- 主要缺点:不能优先处理紧急的任务,需时间片排队
实时操作系统
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统
- 硬实时操作系统:必须在规定的时刻发生
- 软实时操作系统:能接受偶尔违反时间规定
网络操作系统
网络中各种资源的共享及各台计算机之间的通信
分布式计算机系统
主要特点是分布性和并行性。系统中的任意台计算机都可以构成一个子系统,并且还能重构;任何工作都可以分布在几台计算机上,由它们并行工作、协同完成。
个人计算机操作系统
是目前使用最广泛的操作系统。如:Windows、Linux、MacOS
ps:操作系统的基本类型主要有:批处理操作系统、分时操作系统、实时操作系统
操作系统运行环境
内核态和用户态
- CPU有两种状态:内核态、用户态
- 处于内核态时,执行操作系统的内核程序,此时可以执行特权指令
- 处于用户态时,执行操作系统的用户自编程序(应用程序),此时只能执行非特权指令
ps:内核包含四大内容:时钟管理、中断机制、原语、系统控制的数据结构及处理
特权和非特权指令
- 特权指令:不允许用户直接使用的指令,如I/O指令、置中断指令等
- 非特权指令:允许用户直接使用的指令,不能直接访问系统中的软硬件资源
程序状态字寄存器(PSW):当PSW置0时CPU处于核心态,当PSW置1时CPU处于用户态
状态切换
内核态切换到用户态:执行一条特权指令--修改PSW的标志位为用户态,操作系统主动让出CPU使用权
用户态切换到内核态:由“中断”引发,硬件自动完成变态过程,触发信号中断意味着操作系统强行夺回CPU的使用权
中断
内中断(异常、例外):和当前执行指令有关,中断信号来源于CPU内部
外中断:和当前执行指令无关,中断信号来源于CPU外部
中断机制的基本原理
不同的中断信号,需要不同的中断处理程序处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来查找相应的中断处理程序在内存中的位置
系统调用
概念:是操作系统提供给应用程序(程序员/编程人员)来使用的接口,可以理解为一种可供应用程序调用的特殊函数。
ps:应用程序可通过系统调用来请求获得操作系统内核的服务
按功能分类
- 设备管理:完成设备的请求和释放,以及设备启动等功能。
- 文件管理:完成文件的读、写、创建及删除等功能
- 进程控制:完成进程的创建、撤销、阻塞及唤醒等功能
- 进程通信:完成进程之间的消息传递或信号传递等功能
- 内存管理:完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
过程
传递系统调用参数- >执行陷入指令(用户态)- >执行相应的内请求核程序处理系统调用(核心态)- >返回应用程序
操作系统体系结构
分层法
概念:分层法是将操作系统分成若干层,最底层(层0)为硬件,最高层为用户接口,每层只能调用紧邻它的低层的功能和服务。
优点:
- 便于调试和验证,自底向上逐层调试验证
- 易扩充和易维护,各层之间调用接口清晰固定
缺点:
- 仅可调用相邻低层,难以合理定义各层的边界
- 效率低,不可跨层调用,系统调用执行时间长
模块化
概念:模块化是将操作系统按功能划分为若干具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。
- 内核=主模块+可加载内核模块
- 主模块:只负费核心功能,如进程调度、内存管理
- 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核
优点:
- 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
- 支持动态加载新的内核模块(如:设备驱动程序),增强OS适应性
- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
缺点:
- 模块间的接口定义末必合理、实用
- 模块间相互依赖,更难调试和验证
宏内核(单内核/大内核)
概念:将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务
优点:性能高,内核内部各种功能都可以直接相互调用
缺点:
- 内核庞大功能复杂,难以维护
- 大内核中某个功能模块出错,就可能导致整个系统崩溃
微内核
概念:将内核中最基本的功能保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性
优点:
- 内核小功能少、易于维护,内核可靠性高
- 內核外的某个功能模块出错不会导致整个系統崩溃
缺点:
- 性能低,需要频繁的切换用户态/核心态。
- 用户态下的各功能模块不可以直接相互调用,只能通过内核的"消息传道"来间接通信
外核
概念:内核负费进程调度、 进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全
优点:
- 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源
- 减少了虚拟硬件资源的“映射层",提升效率
缺点:
- 降低了系統的一致性
- 使系统变得更复杂
操作系统的引导
概念:操作系统引导是指计算机利用CPU运行特定程序,通过程序识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统。
过程:
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
- 将磁盘的第一块一一主引导记录 读入内存,执行磁盘引导程序,扫描分区表
- 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
- 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成 “开机”的一系列动作
虚拟机
概念:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,每台虚拟机器都可以独立运行一个操作系统
ps:图片取自b站视频王道考研 -操作系统
相关文章:

操作系统学习笔记---计算机系统概述
目录 概念 功能和目标 特征 并发 共享(资源共享) 虚拟 异步 发展与分类 手工操作阶段(无OS) 批处理阶段 单道批处理系统 多道批处理系统 分时操作系统 实时操作系统 网络操作系统 分布式计算机系统 个人计算机操…...
uniapp H5 navigateBack无法返回上一层级
项目场景: 提交表单后需要返回上一级 原因分析: H5在PC端打开,当前页面重新加载的情况下,出现navigateBack不能返回,由于H5端页面刷新后返回页面栈会消失 //提交 const handleSubmit async () > {form.value?.a…...

Android性能优化之应用瘦身(APK瘦身)
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览2.1 apk组成 三、优化方向3.1 源代码3.1.1 代码混…...

C语言数组和指针笔试题(二)(一定要看)
目录 字符数组二例题1例题2例题3例题4例题5例题6例题7总结 字符数组三例题1例题2例题3例题4例题5例题6例题7 字符数组二 char arr[] {a,b,c,d,e,f} 1:printf("%d\n", strlen(arr)); 2:printf("%d\n", strlen(arr0)); 3:printf("%d\n", strlen(…...

uniapp——实现在线选座功能——技能提升
首先声明一点:下面的内容是从一个uniapp的程序中摘录的,并非本人所写,先做记录,以免后续遇到相似需求抓耳挠腮。 这里写目录标题 效果图代码——html部分cu-custom组件anil-seat组件 代码——jscss部分 效果图 代码——html部分 …...

领域驱动设计:微服务的各种边界
文章目录 演进式架构微服务还是小单体?微服务边界的作用 在用 DDD 进行微服务设计时,我们可以通过事件风暴来确定领域模型边界,划定微服务边界,定义业务和系统运行边界,从而保证微服务的单一职责和随需而变的架构演进能…...

MySQL之数据类型
目录 一、MySQL数据类型分类 二、数值类型 1、整数类型 2、bit类型 3、小数类型 三、字符串类型 1、char 2、varchar 3、char和varchar比较 四、日期和时间类型 五、enum和set 一、MySQL数据类型分类 MySQL 数据类型可以大致分为以下三类: 数值类型:用于…...
词法作用域改变词法作用域
一、词法作用域 1.定义: 为什么叫词法作用域?因为大部分标准语言编译器的第一个工作阶段叫作词法化,词法化的过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词语义。 简单来说࿰…...
关于C++的隐藏 (hidden),重载(overload),重写(override)小结。
关于隐藏 (hidden) 假如继承以后,子类出现父类同名函数, 即使参数的形式不同, 也会导致父类的函数隐藏, 不参与函数匹配,不能使用。 这个链接讲的不错。https://zhuanlan.zhihu.com/p/575423511 #include <iostrea…...

算法通关村18关 | 透析回溯的模板
回溯有清晰的解题模板, void backtracking(参数){if (终止条件){存放结果;return;}for (选择本层中的集合元素(画成树,就是树节点孩子的大小) {处理节点;backtracking();回溯,撤销处理结果;}} 1. 从N叉树说起 在回溯之前&#x…...
【论文阅读】Untargeted Backdoor Attack Against Object Detection(针对目标检测的无目标后门攻击)
文章目录 一.论文信息二.论文内容0.摘要1.论文概述2.背景介绍3.作者贡献4.重点图表 一.论文信息 论文题目: Untargeted Backdoor Attack Against Object Detection(针对目标检测的无目标后门攻击) 发表年份: 2023-ICASSP&#x…...

分库分表---理论
目录 一、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 二、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 三、数据分片规则 1、Hash取模分表 2、数值Range分表 3、一致性Hash算法 四、分库分表带来的问题 1、分布式事务问题 2、跨节点关联查询…...
[golang 流媒体在线直播系统] 2.搭建基于golang的流媒体服务器实现拉流推流,以及Html客户端拉取hls类型的流
一.使用 Go 语言的开源框架Livego搭建流媒体服务器 1.Livego 框架的介绍 Go 语言拥有强大的 服务器性能 ,golang 在语言级别解决了 多进程并发 的问题,支持 多核 CPU均衡使用 ,支持 海量轻量级线程 ,所以非常适合做 流媒体服务器 .而 livego 是基于golang 开发的简单高效的…...

9月12日作业
作业代码 #include <iostream>using namespace std;class Shape { protected:double cir;double area; public://无参构造Shape() {cout<<"无参构造"<<endl;}//有参构造Shape(double c, double a):cir(c), area(a){cout<<"有参构造&quo…...

React框架下如何集成H.265网页流媒体视频播放器EasyPlayer.js?
H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…...

《向量数据库》——向量数据库的使用场景有哪些?
向量数据库在许多应用领域都有广泛的用途,特别是那些需要存储、检索和分析向量数据的场景。以下是一些常见的向量数据库使用场景: 1、相似性搜索: 推荐系统:用于根据用户的历史行为或兴趣,搜索相似用户或物品,以提供个性化推荐。图像检索:允许用户通过图像查询相似的图像…...
Java 中 List 集合取补集
交集 Intersection 英 [ˌɪntəˈsekʃn] 并集 Union 英 [ˈjuːniən] 差集 difference of set 补集 complement set 英 [ˈkɒmplɪment] Java 中 List 集合取交集 Java 中 List 集合取并集 Java 中 List 集合取差集 Java 中 List 集合取补集 # 求两个集合交集的补集 List&l…...

我的个人网站——宏夏Coding上线啦
网站地址:宏夏Coding Github地址:🔥🔥宏夏coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推…...

【机器视觉】喇叭的外圆以及金属内圆的同心度视觉检测--康耐德智能
客户的需求 检测内容 喇叭的外圆以及金属内圆的同心度测量 检测要求 精度0.02mm,速度没要求,抽检产品。 评估 视觉可行性分析 对贵司的样品进行了光学实验,并进行图像处理,原则上可以使用机器视觉进行测试测量。 结果 对所有样…...

STM32WB55开发(2)----修改蓝牙地址
STM32WB55开发----2.修改蓝牙地址 概述硬件准备视频教学样品申请完整代码下载选择芯片型号配置时钟源配置时钟树RTC时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙设置工程信息工程文件设置修改置BLE设备公共地址Ble_Hci_Gap_Gatt_Init结果演示 概述 在…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
从零手写Java版本的LSM Tree (一):LSM Tree 概述
🔥 推荐一个高质量的Java LSM Tree开源项目! https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree,专为高并发写入场景设计。 核心亮点: ⚡ 极致性能:写入速度超…...