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

【Linux】操作系统入门:冯诺依曼体系结构

引言:从一次QQ聊天说起

你是否好奇,当你在键盘上敲下一行文字发送给好友时,计算机内部发生了什么?为什么鼠标点击后程序就能瞬间响应?这一切的答案,都藏在计算机的“心脏”——冯诺依曼体系结构中。


一、硬件方面

1.1、冯诺依曼体系结构是什么?

1945年,冯·诺依曼提出了一种革命性的计算机设计模型,是所有计算机的底层逻辑。其核心由五个部分组成:

其中存储器指的是内存。所有设备都只能直接和内存打交道

外设:

  • 输入设备:将人类信息(文字、图像、声音)转换为二进制数据。包括鼠标,键盘,摄像头,话筒,磁盘网卡...
  • 输出设备:将二进制数据转换成人能看懂的。包括显示器,播放器硬件,磁盘网卡...

CPU:

  • 运算器:对我们的数据进行计算任务(算数运算,逻辑运算)
  • 控制器:对我们的计算硬件流程进行控制

这些硬件都是独立的个体,必须用“线”连接起来,包括系统总线,IO总线

根据这些硬件的理解,简述一下引言中QQ聊天中数据是怎么流动的:

  • 输入:键盘输入文字 → 存入内存。

  • CPU处理:CPU从内存中打包数据 → 再写回内存。

  • 输出设备(网卡):从内存读取加密数据包,转换为网络信号发送至对方QQ。

然后对方的网卡再接收数据,再把数据加载到内存,输出设备显示器再在内存中读取数据,显示消息


1.2、为什么还要设计内存?

1.2.1. “木桶原理”:内存性能取决于最薄弱环节

如果没有内存,CPU直接跟外设进行交互,由于硬件的速度代差,CPU将长期处于等待状态,效率大大降低。实时性也会受到影响。

  • CPU:每秒处理数十亿次运算(纳秒级
  • 磁盘:机械寻道耗时(毫秒级,相差百万倍)


 

内存:相当于“和事佬”,缓解速度鸿沟。

预加载机制:有了内存,CPU计算时,内存可以提前加载下一批数据,两全其美

经济方面:寄存器虽然效率高,但价格贵。虽然技术上能实现全用寄存器,但不利于计算机的普及。


二、软件方面理解

2.1、操作系统的结构

操作系统是什么?

操作系统是一款进行软硬件管理的软件!

为什么需要操作系统来管理?

  1. 硬件资源是有限的,需要操作系统来管理协调各个程序对硬件资源的使用
  2. 同样也为了给用户提供一个良好(稳定,安全,高效)的运行环境

类比:操作系统如同交通警察,指挥车辆(程序)有序使用道路(硬件资源),避免拥堵和事故。

驱动程序:

驱动程序是操作系统与硬件设备之间的“翻译软件”,负责将操作系统的指令转换为硬件能理解的信号,同时将硬件状态反馈给系统。

系统调用接口理解:

  1. 对于硬件里的各种数据,都被操作系统所管理,这也意味着访问硬件的数据必然要经过操作系统。但是操作系统不相信任何用户。
  2. 所以,操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供了调用的入口。来获取操作系统内部的数据。
  3. 系统调用:是操作系统提供的用C语言实现的,自己内部的函数调用
  4. 所有访问操作系统的行为,都只能通过系统调用完成

就像我们(程序)去银行取钱,银行并不是直接让我们去金库(硬件资源)拿。而是提供一个柜台(系统调用)进行业务的办理


2..2、操作系统如何管理?

谈操作系统管理之前,先谈谈大学里是如何管理学生的。

简单来说,大学有校长,辅导员,当然还有我们学生等等。很明显,校长就是典型的管理者,辅导员是执行者,而我们就是被管理者。但是,我们平常经常能见到校长吗?可能也就入学和毕业的时候才能见两眼吧。可是,我们与学校的校长不这么见面,校长却能很好的管理我们。也就是说,管理者和被管理者是不需要见面的。那么,他又是如何做到管理的呢?虽然校长没有和学生见面,但是校长有学生的各种基本信息,通过对这些信息的管理,从而做到对学生的管理。

所以管理的本质:通过对数据的管理,达到对人的管理

管理者和被管理者又不见面,怎么获取到的信息呢?通过执行者。

对标操作系统:

对操作系统来说,管理软硬件资源肯定要对软硬件资源的属性,数据管理起来。那必然要用结构(结构体)给它描述起来,每实例出一个对象就映射一份资源。那么,我们只需要对这些结构体用链表或者其他数据结构组织起来,当我们要查询或修改某个软硬件资源的数据时,只要遍历这个链表就行了。从而达到对其的管理。我们所有的管理动作就转化成了对特定数据结构的增删查改。

总的来说:操作系统对资源的管理就是先描述,在组织的过程

http://www.xdnf.cn/news/5870.html

相关文章:

  • python中的单例与实例
  • Python基础学习-Day23
  • SQL server数据库实现远程跨服务器定时同步传输数据
  • containerd 之使用 ctr 和 runc 进行底层容器操作与管理
  • mysql5.7安装
  • 视频监控汇聚平台EasyCVR安防监控系统:在应用中,机房及监控系统施工如何有效实现防雷?
  • huggingface transformers中Dataset是一种什么数据类型
  • spaCy基础入门
  • transforms.Compose()
  • ARFoundation 图片识别,切换图片克隆不同的追踪模型
  • Rodrigues旋转公式-绕任意轴旋转
  • Excel宏和VBA的详细分步指南
  • Linux系统:文件系统前言,详解CHSLBA地址
  • 如何创建maven项目
  • java之网络编程
  • uniapp(vue3)动态计算swiper高度封装自定义hook
  • SD-HOST Controller design-----SD CLK 设计
  • 深度学习之优化器【从梯度下降到自适应学习率算法】(pytorch版)
  • 华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
  • 微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
  • 销售具备的能力有哪些
  • JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?
  • Python中元组(Tuple)使用详解和注意事项
  • Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
  • 拓扑排序+dp
  • STM32-DMA数据转运(8)
  • 直接在Excel中用Python Matplotlib/Seaborn/Plotly......
  • Linux 内核网络协议栈:从 Socket 类型到协议注册的深度解析
  • 思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆
  • 适应性神经树:当深度学习遇上决策树的“生长法则”