【Linux】操作系统入门:冯诺依曼体系结构
引言:从一次QQ聊天说起
你是否好奇,当你在键盘上敲下一行文字发送给好友时,计算机内部发生了什么?为什么鼠标点击后程序就能瞬间响应?这一切的答案,都藏在计算机的“心脏”——冯诺依曼体系结构中。
一、硬件方面
1.1、冯诺依曼体系结构是什么?
1945年,冯·诺依曼提出了一种革命性的计算机设计模型,是所有计算机的底层逻辑。其核心由五个部分组成:
其中存储器指的是内存。所有设备都只能直接和内存打交道
外设:
- 输入设备:将人类信息(文字、图像、声音)转换为二进制数据。包括鼠标,键盘,摄像头,话筒,磁盘,网卡...
- 输出设备:将二进制数据转换成人能看懂的。包括显示器,播放器硬件,磁盘,网卡...
CPU:
- 运算器:对我们的数据进行计算任务(算数运算,逻辑运算)
- 控制器:对我们的计算硬件流程进行控制
这些硬件都是独立的个体,必须用“线”连接起来,包括系统总线,IO总线
根据这些硬件的理解,简述一下引言中QQ聊天中数据是怎么流动的:
输入:键盘输入文字 → 存入内存。
CPU处理:CPU从内存中打包数据 → 再写回内存。
输出设备(网卡):从内存读取加密数据包,转换为网络信号发送至对方QQ。
然后对方的网卡再接收数据,再把数据加载到内存,输出设备显示器再在内存中读取数据,显示消息
1.2、为什么还要设计内存?
1.2.1. “木桶原理”:内存性能取决于最薄弱环节
如果没有内存,CPU直接跟外设进行交互,由于硬件的速度代差,CPU将长期处于等待状态,效率大大降低。实时性也会受到影响。
- CPU:每秒处理数十亿次运算(纳秒级)
- 磁盘:机械寻道耗时(毫秒级,相差百万倍)
内存:相当于“和事佬”,缓解速度鸿沟。
预加载机制:有了内存,CPU计算时,内存可以提前加载下一批数据,两全其美
经济方面:寄存器虽然效率高,但价格贵。虽然技术上能实现全用寄存器,但不利于计算机的普及。
二、软件方面理解
2.1、操作系统的结构
操作系统是什么?
操作系统是一款进行软硬件管理的软件!
为什么需要操作系统来管理?
- 硬件资源是有限的,需要操作系统来管理协调各个程序对硬件资源的使用
- 同样也为了给用户提供一个良好(稳定,安全,高效)的运行环境
类比:操作系统如同交通警察,指挥车辆(程序)有序使用道路(硬件资源),避免拥堵和事故。
驱动程序:
驱动程序是操作系统与硬件设备之间的“翻译软件”,负责将操作系统的指令转换为硬件能理解的信号,同时将硬件状态反馈给系统。
系统调用接口理解:
- 对于硬件里的各种数据,都被操作系统所管理,这也意味着访问硬件的数据必然要经过操作系统。但是操作系统不相信任何用户。
- 所以,操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供了调用的入口。来获取操作系统内部的数据。
- 系统调用:是操作系统提供的用C语言实现的,自己内部的函数调用
- 所有访问操作系统的行为,都只能通过系统调用完成
就像我们(程序)去银行取钱,银行并不是直接让我们去金库(硬件资源)拿。而是提供一个柜台(系统调用)进行业务的办理
2..2、操作系统如何管理?
谈操作系统管理之前,先谈谈大学里是如何管理学生的。
简单来说,大学有校长,辅导员,当然还有我们学生等等。很明显,校长就是典型的管理者,辅导员是执行者,而我们就是被管理者。但是,我们平常经常能见到校长吗?可能也就入学和毕业的时候才能见两眼吧。可是,我们与学校的校长不这么见面,校长却能很好的管理我们。也就是说,管理者和被管理者是不需要见面的。那么,他又是如何做到管理的呢?虽然校长没有和学生见面,但是校长有学生的各种基本信息,通过对这些信息的管理,从而做到对学生的管理。
所以管理的本质:通过对数据的管理,达到对人的管理。
管理者和被管理者又不见面,怎么获取到的信息呢?通过执行者。
对标操作系统:
对操作系统来说,管理软硬件资源肯定要对软硬件资源的属性,数据管理起来。那必然要用结构(结构体)给它描述起来,每实例出一个对象就映射一份资源。那么,我们只需要对这些结构体用链表或者其他数据结构组织起来,当我们要查询或修改某个软硬件资源的数据时,只要遍历这个链表就行了。从而达到对其的管理。我们所有的管理动作就转化成了对特定数据结构的增删查改。
总的来说:操作系统对资源的管理就是先描述,在组织的过程