码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
操作系统 | 计算机系统概述
文章目录
大家熟悉的操作系统
操作系统的概念(定义)
操作系统的功能和目标
作为系统资源的管理者
向上层提供方便易用的服务
GUI
联机命令接口
脱机命令接口
程序接口
作为最接近硬件的层次
操作系统的特征
并发
共享
虚拟
异步
操作系统的特征:并发和共享的关系
操作系统的发展与分类
手工操作阶段
批处理阶段—单道批处理系统
批处理阶段—多道批处理系统
分时操作系统
实时操作系统
其他几种操作系统
操作系统的运行机制
预备知识:程序是如何运行的?
内核程序vs应用程序
特权指令vs非特权指令
内核态vs用户态
内核态和用户态的切换
两种指令、两种处理器状态、两种程序
中断和异常
中断的作用
中断的类型
内中断的例子
外中断的例子
中断的分类
中断机制的基本原理
系统调用
什么是系统调用?有何作用?
系统调用与库函数的区别
小例子:为什么系统调用是必须的?
什么功能要用到系统调用?
系统调用的过程
操作系统的体系结构
操作系统的内核
大内核和微内核
新增考点:操作系统的其他结构
分层结构
模块化
宏内核、微内核
宏内核(大内核)
微内核
外核
操作系统的引导
一个刚买回来的磁盘(硬盘)
安装完操作系统后
操作系统引导(开机过程)
Windows操作系统的初始化程序
虚拟机
传统计算机
虚拟机
第一类VMM
第二类VMM
两类虚拟机管理程序(VMM)的对比
支持虚拟化的CPU通常分更多指令等级
大家熟悉的操作系统
操作系统的概念(定义)
操作系统的功能和目标
作为系统资源的管理者
向上层提供方便易用的服务
GUI
联机命令接口
脱机命令接口
程序接口
狭义的用户接口其实不包括GUI
作为最接近硬件的层次
操作系统的特征
并发
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但是微观上是交替发生的。
并行:指两个或多个事件在同一时刻同时发生。
共享
虚拟
异步
操作系统的特征:并发和共享的关系
操作系统的发展与分类
手工操作阶段
批处理阶段—单道批处理系统
批处理阶段—多道批处理系统
分时操作系统
实时操作系统
其他几种操作系统
操作系统的运行机制
预备知识:程序是如何运行的?
内核程序vs应用程序
特权指令vs非特权指令
内核态vs用户态
内核态和用户态的切换
两种指令、两种处理器状态、两种程序
中断和异常
中断的作用
没有中断技术肯定就没法实现多道程序并发,甚至可以说没有中断技术就没有操作系统
中断的类型
内中断的例子
陷入指令很明显是运行在用户态的,而非特权指令
外中断的例子
中断的分类
中断机制的基本原理
系统调用
什么是系统调用?有何作用?
系统调用与库函数的区别
小例子:为什么系统调用是必须的?
什么功能要用到系统调用?
系统调用的过程
操作系统的体系结构
操作系统的内核
大内核和微内核
新增考点:操作系统的其他结构
分层结构
内核分多层,每层可单向调用更低一层提供的接口
每一层只能调用相邻的更第一层提供的功能,而不能跨层调用
优点:
便于调试和验证,只需自底向上逐层调试验证即可
易扩充和易维护,各层之间调用接口清晰固定(在操作系统设计之初就规定好的,要扩充新的一层只需要保证原来两层之间的接口不变即可)
缺点:
仅可调用相邻低层,难以合理定义各层的边界(比如进程管理有时候需要使用到内存管理相应的功能,而内存管理相应的功能有时候又需要使用到进程管理提供的一些东西)
效率低,不可跨层调用,系统调用执行时间长(有时候用户想使用最底层提供的功能,但是用户无法直接调用最底层提供的功能接口,只能一层一层往下传递)
模块化
将内核划分为多个模块,各模块之间相互协作
内核 = 主模块 + 可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核(锦上添花)
优点
模块之间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
缺点:
模块之间的接口定义未必合理且实用
模块间相互依赖,更难调试和验证
宏内核、微内核
宏内核(大内核)
所有的系统功能模块都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)
优点:
性能高(不用频繁地进行内核态和用户态的转变),内核内部各种功能都可以直接相互调用
缺点:
内核庞大功能会很复杂,难以维护
大内核中某个功能模块出错,就可能导致整个系统崩溃
微内核
只把中断、原语、进程通信等最核心的功能放入内核,进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态
优点:
内核功能小,易于维护,内核可靠性高
内核外的某个功能模块出错不会导致整个系统崩溃
缺点:
性能低,需要频繁地在用户态和核心态进行切换
用户态下的各功能模块不可以直接相互调用,只能通过内核的”消息传递“来间接通信
外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源(磁盘、内存),且由外核负责保证资源使用安全
优点:
外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源
减少了虚拟硬件资源的“映射层”,提升效率
缺点:
降低了系统的一致性
使系统变得更复杂
操作系统的引导
操作系统引导(boot):开机的时候,怎么让操作系统运行起来?
一个刚买回来的磁盘(硬盘)
安装完操作系统后
分区表:其实就是一个数据结构,说明了在这个磁盘里面每一个盘/每一个分区分别占多大的空间以及每个分区的地址范围
操作系统引导(开机过程)
计算机系统的主存包含我们常说的RAM还有ROM(存储 BIOS:Basic Input/Output System)
ROM芯片里面的数据是不会因为断电而丢失,而RAM里面的数据一断电就无了
开机,CPU一旦通上电,CPU会去主存固定的位置去找到ROM引导程序(自举程序),一条一条执行这个程序的指令,ROM引导程序会指示CPU把磁盘的主引导记录MBR读入内存,然后CPU就会执行主存里RAM中的磁盘引导程序,磁盘引导程序会根据分区表判断C盘所处的位置,从而读入C盘第一部分的数据-引导记录PBR,从而找到启动管理器并执行,从根目录下面找到完整的操作系统初始化程序(启动管理器),从而完成操作系统初始化等工作
Windows操作系统的初始化程序
虚拟机
传统计算机
传统的计算机在一个物理机器上只能运行一个操作系统,操作系统之上可以运行各种各样的用户进程
但是在商业化环境下会导致硬件资源利用不充分的问题,如果多个用户要使用这个物理机器,只能运行在同一个操作系统之上,但两个进程可能会互相影响且争夺资源,可能会造成隐患
一个解决方法是再弄一个物理机器来跑进程,但这会导致物理资源的极大浪费
虚拟机
第一类VMM
直接运行在硬件之上(运行在内核态)
虚拟机管理程序把一个物理机器虚拟化为多台虚拟机器,把一个总的硬件资源划分为多个部分,分别给各个虚拟机使用
每台虚拟机上可以安装各自的操作系统(运行在虚拟内核空间,即用户态,当想要使用特权指令的时候这个行为会被虚拟机管理程序所截获,由VMM负责把上层操作系统所要执行的特权指令进行等价的转换,从而让上层感觉特权指令执行成功了)
每个虚拟机的操作系统之上又可以运行各自的用户进程
第二类VMM
运行在宿主操作系统上(即本机原先安装好的操作系统)
常用的第二类VMM
两类虚拟机管理程序(VMM)的对比
第二类VMM中部分运行在内核态的VMM部分是以虚拟机驱动程序的方式加载到操作系统内核当中的
支持虚拟化的CPU通常分更多指令等级
相当于把原本的特权指令进行细分
把原本的敏感指令放在Ring 0,把不敏感的指令放在其他Ring 上面
这样虚拟机特权指令不用检查每一条特权指令的执行,只需要检查某些敏感指令的执行就可以了
相关阅读:
pycharm如何配置 .gitignore 文件
CAD(计算机辅助设计)软件的开发框架
[MT8766][Android12] 增加应用安装白名单或者黑名单
五:Dubbo中Provider参数配置及源码讲解
MATLAB冒号符号
Class类
国庆要闻回顾 | OpenAI 拟研发 AI 手机;9月以太坊上NFT销售量创2021年2月以来最低记录...
Compose原理-视图和数据双向绑定的原理
TCP协议
LabVIEW利用以太网开发智能液位检测仪
原文地址:https://blog.csdn.net/weixin_44043952/article/details/125604465
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号