初识操作系统

🎬 个人主页Vect个人主页

🎬 GitHubVect的代码仓库
🔥 个人专栏 : 《数据结构与算法》《C++学习之旅》《Linux

⛺️Per aspera ad astra.



文章目录

  • [1. 冯诺依曼体系结构](#1. 冯诺依曼体系结构)
  • [2. 操作系统相关概念](#2. 操作系统相关概念)

1. 冯诺依曼体系结构

我们常见的计算机,都遵循冯诺依曼体系结构

  • 输入设备: 键盘、鼠标、网卡、磁盘、话筒...
  • 输出设备: 显示器、磁盘、网卡、打印机...
  • 存储器: 内存,和磁盘外存相对应

所有的数据流转都遵循以下原则:

CPU在数据层面,不和外设直接交互,只能和存储器(即内存)交互!!!

举个例子:一个二进制文件运行在显示器上显示的过程:

二进制可执行文件-->磁盘-->存储器-->CPU-->存储器-->显示器

任何程序要运行,必须从磁盘加载到内存之后,经过CPU处理才能运行!!!------这是冯诺依曼体系结构决定的!!!

为什么要设计存储器?

外设IO处理效率极低,CPU处理效率极高,二者运行效率不是一个量级的,内存作为链接二者的巨大缓存

如果跳过内存:

根据木桶效应,整个系统效率取决于效率低的模块,而这样设计,不合理

再来看一下存储金字塔:

为什么不投入设计CPU呢?对于上层寄存器和三级缓存,制造成本极高,造假昂贵,而对于内存、硬盘价格就会越来越便宜,所以,冯诺依曼体系结构是个伟大的发明,让普通人也能用上计算机。

我们再举个例子理解一下冯诺依曼体系结构的数据流向:

从登录上qq开始和某位朋友聊天开始,数据的流动过程:假设发送"hehe",此时不考虑网络层

  1. 键盘键入消息"hehe",经过输入设备输入到存储器
  2. 存储器将消息"hehe"传输到CPU
  3. CPU经过处理,解密翻译,重新输出到存储器内
  4. 存储器将处理过的数据输出到网卡

此时,发送消息完成,经过网络层到达某位朋友的网卡

  1. 网卡接收到"hehe"数据,输入到存储器中
  2. 存储器将消息"hehe"传输到CPU
  3. CPU经过处理,解密翻译,重新输出到存储器内
  4. 存储器将处理过的数据输出到显示器上

2. 操作系统相关概念

广义上来讲,OS包括外壳程序和内核两部分

狭义上来讲,OS一般只谈内核

这样设计的目的是:

  • 对上层,给用户程序提供稳定、高效、安全的运行环境
  • 对下层,能稳定、高效、安全地管理硬件设备

所以,操作系统的核心是管理 ,管理好上层和下层,围绕先描述,再组织的核心思想:

  • 对上层:
    • 用户/应用不会直接操作OS的内部模块,二通过OS提供的简化接口来提需求:比如开发者在代码里调用lib的"文件读取函数",这些操作会通过"系统调用接口"传给OS
    • 简单来说:OS把进程、内存分配 等复杂逻辑藏起来,给上层用户/应用提供简单易懂的操作入口
  • 对下层:
    • 不同硬件的工作逻辑差异很大,OS不直接操作硬件,而是通过调用对应的驱动程序来控制硬件:比如要保存文档到硬盘,OS的文件管理模块不会直接和硬盘交互,而是调用"硬盘驱动",让驱动按照硬盘的设计完成数据写入
    • 简单来说:OS把"不同硬件的复杂操作"抽象成统一的管理逻辑,向下统一管理各种硬件

根据上述:OS是中间连接层

  • 向上:通过 "接口封装",把复杂的系统功能简化成用户 / 应用能轻松用的操作
  • 向下:通过 "硬件抽象",把多样的硬件操作统一成系统能管控的资源

最终实现的效果是:用户不用懂 OS 内部逻辑,硬件不用管上层需求,OS 靠 "上下管理" 让整个系统有序运行

相关推荐
FoldWinCard2 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计3 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1233 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质3 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX3 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.3 小时前
Linux系统管理
linux·运维
阿龙的工作记录4 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手4 小时前
Linux的基本指令
linux·运维·服务器
hkj88085 小时前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动6 小时前
Linux编程笔记3【个人用】
linux·笔记