当前位置: 首页 > news >正文

【把Linux“聊”明白】从冯诺依曼架构到操作系统

在这里插入图片描述

从冯诺依曼架构到操作系统

友情专栏:【把Linux“聊”明白】


文章目录

  • 从冯诺依曼架构到操作系统
  • 前言
  • 一、冯诺依曼体系结构
  • 二、操作系统的概念
  • 三、设计操作系统的目的
  • 四、操作系统的核心功能
    • 4-1 如何理解"管理"
  • 五、系统调用与库函数
  • 总结


前言

理解Linux,始于理解计算机本身。本文将追溯至计算机的源头——冯·诺依曼体系结构,为您解答计算机如何协调工作、操作系统如何管理软硬件资源这两个核心问题,为您的Linux进阶之路打下最坚实的地基。


一、冯诺依曼体系结构

在我们常见的计算机,如笔记本。不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。冯·诺依曼结构的五大组成部分:

在这里插入图片描述
截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

输入设备:包括键盘,鼠标,扫描仪等;
中央处理器(CPU):含有运算器和控制器等;
输出单元:显示器,打印机等。

我们要知道,这里的存储器指的是内存,输入输出设备是站在内存的角度来看的。

为什么cpu不直接在磁盘上获取数据呢?
因为CPU的速度和磁盘的速度之间存在巨大的、难以逾越的鸿沟,如果CPU直接去磁盘取数据,整个计算机将会慢到无法忍受。
内存作为一道必不可少的“缓存”或“缓冲区”,填补了CPU和磁盘之间巨大的速度鸿沟,是保证现代计算机高效运行的基石。

在不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备),外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
所有设备都只能直接和内存打交道。

所以,在我们学习C语言时,printf函数就是把数据写到硬件,也就是显示器上。

二、操作系统的概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)

在这里插入图片描述

三、设计操作系统的目的

对上,为用户程序(应用程序)提供一个良好的执行环境(目的)

对下,与硬件交互,管理所有的软硬件资源(手段)

我们来看一下计算机系统的层次结构:

  1. 软硬件体系结构为层状结构
  2. 访问操作系统,必须使用系统调用 — 其实就是函数,只不过是系统提供的;
  3. 我们的程序,只要你判断它访问了硬件,那么它必须贯穿整个软硬件体系结构;
  4. 库函数可能在底层封装了系统调用。

在这里插入图片描述

四、操作系统的核心功能

在上面我们也可以看出,操作系统是管理者和服务提供者。它管理所有硬件资源(CPU、内存、设备、文件),同时为用户和应用程序提供简单、统一、安全的服务接口。所以操作系统的定位是:⼀款纯正的“搞管理”的软件

4-1 如何理解"管理"

简单来说,就是 — 先描述,再组织
举例:
校长管理学生,先对学生进行描述

struct student
{int id; 		 // 学号char* name; // 名字char* age;  // 年龄//...

此时,每个学生信息对应一个结构体,然后,再以某种数据结构(比如链表)将学生对象的信息组织起来:

在这里插入图片描述

即:先描述被管理对象,再组织被管理对象

此时,校长想管理学生,需要和学生见面吗?不需要。
所以,要管理,管理者和被管理者,可以不需要见面
那么,管理者和被管理者,怎么管理呢?
根据“数据”进行管理!
但是不需要见面,如何得到数据?
由中间层获取!(比如辅导员)

有了上述的先描述,再组织,可以看到,校长对学生的管理工作,变成了对链表的增删查改。

我们现在可以来类比操作系统管理硬件:

在这里插入图片描述

总结

计算机管理硬件

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构

五、系统调用与库函数

系统调用
在开发角度,操作系统对外会表现为一个整体,但同时会暴露自己的部分接口,供上层开发使用。这部分由操作系统提供的接口,叫做系统调用
库函数
系统调用在使用上,功能比较基础,对用户的要求相对较高。因此,有心的开发者可以对部分系统调用进行适度封装,从而形成。有了库,就非常有利于更上层的用户或开发者进行二次开发


总结

从冯诺依曼体系结构的基础框架,到操作系统的“先描述,再组织”管理哲学,我们看到了计算机系统设计的精妙之处。操作系统作为硬件与应用程序之间的桥梁,通过系统调用和库函数为开发者提供了统一的接口。理解这些底层原理,不仅有助于我们更好的深入学习,更能让我们真正明白计算机工作的本质。


如果本文对您有启发:
点赞 - 让更多人看到这篇硬核技术解析 !
收藏 - 实战代码随时复现
关注 - 获取Linux系列深度更新
您的每一个[三连]都是我们持续创作的动力!

请添加图片描述

http://www.dtcms.com/a/593920.html

相关文章:

  • SEO 搜索优化测试环节深度解析:决定流量转化的隐性关键
  • NumPy性能密码:Python循环优化方法
  • 九洋建设官方网站wordpress 文章标题查询
  • 线性代数 - 齐次线性方程组的样子
  • TikTok矩阵运营的提速方法
  • 酒店如何做团购网站贵州省民贸民品企业信息管理系统
  • 海口网站开发抚州市临川区建设局网站
  • 如何做网站的二级页面马鞍山建设机械网站
  • 国外有什么网站做游戏吗深圳全网营销
  • Python 数据类(dataclass)深度解析与 Pydantic 对比
  • 从C内存管理进阶到C++内存管理(中)-new与delete详解
  • 免费注册域名网站餐饮营销型网站建设
  • 深入理解 Java 8:从语法到思想的革命
  • 温州网站建设公司有哪些开发客户的70个渠道
  • 报错处理(2)终止多线程父进程后子进程还存在
  • 重庆论坛网站建设新版的百度网址大全
  • 【AI学习-comfyUI学习-面部修复工作流-各个部分学习-第六节】
  • 建设网站有何要求网络营销与直播电商是干什么的
  • 无人机网络资源分配算法开发
  • 开发软件网站深圳网站建设 设计首选
  • Ubuntu 安装与 NVIDIA 显卡驱动配置 2篇
  • 盐城网站建设找宇联a级生活片免费
  • 搭建网站用什么框架wordpress注册弹窗代码
  • 用Streamlit构建的四方演化博弈分析
  • 【Prompt】提示词工程
  • 地图可视化实践录:GeoJSON学习
  • 聊聊c++的反射
  • 长安做网站公司微信开发时间
  • 做电影网站的软件潍坊网络推广个人合作
  • 零基础学AI大模型之Milvus向量数据库全解析