Linux 之 【冯诺依曼体系结构与操作系统的简介】
目录
1.简介冯诺依曼体系结构
2.简介操作系统
1.简介冯诺依曼体系结构

冯诺依曼体系由5部分组成:
a.存储器,通常指主存储器(内存),是程序和数据的主要存储空间
b.输入设备,将程序与数据输入到存储器中,常见的有:键盘、鼠标、网卡等
c.输出设备,从存储器中拿到计算器的处理结果并展示出来,常见的有:显示器、网卡
d.运算器,负责进行逻辑运算与算术运算
e.控制器,控制协调包含自身在内的硬件间的工作流程
(1)输入设备与输出设备统称为外设,CPU、存储器之外都叫外设
(2)某一硬件可能只能输入,可能只能输出,也可能既能输入又能输出
(3)运算器和控制器一起被称为中央处理器(CPU)
(3)上述5大硬件间是独立的,这些部件通过总线连接,总线按功能主要分为数据总线、地址总线和控制总线
(4)所以冯诺依曼体系中,数据流向是:
输入设备->存储器->CPU->存储器->输出设备但这只是经典的理论数据流向。在现代计算机中,为了提升性能,引入了如DMA等技术,允许数据在外设和存储器之间直接传输,而不必经过CPU

(1)计算机存储是分级的金字塔结构,遵循“容量越大、速度越慢、价格越低”的规律
(2)由于CPU与输入设备(如磁盘)的速度差异巨大,如果没有速度介于二者之间的内存,CPU在完成计算后需要长时间等待慢速设备提供新数据,导致效率极低。内存作为缓冲,可以预加载程序和数据,使CPU能持续高速工作,从而极大提升了整机效率。
(4)全用寄存器这类昂贵的存储器组成的计算机不利于计算机的传播,所以使用内存这类存储器协调整机效率就恰到好处,所以冯诺依曼体系中,数据流向是:
输入设备->存储器->CPU->存储器->输出设备
所以,
一个程序要运行(使用CPU),必须先加载到内存中,这是因为冯诺依曼体系规定
前面讲的进度条默认显示的数据是会在存储器中缓存起来的,这是因为冯诺依曼体系规定

我在键盘上(输入设备)输入“在吗”,数据进入存储器,经过CPU处理,数据回到存储器,继而通过网卡(输出设备)传送到我的朋友的输入设备网卡中,数据再从网卡加载到存储器中,CPU拿到数据并处理,数据然后返回到存储器中,再通过显示器,“在吗”就显示到了我的朋友眼前
2.简介操作系统
笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
本质上,操作系统是一款管理软硬件资源的软件

这是计算机层状结构图
- 设计操作系统的目的:
帮助用户管理好软硬件资源,为了给用户提供良好(稳定,高效,安全)的运行环境
被管理的对象 类型 操作系统使用的管理手段/抽象 最终管理的核心硬件资源 CPU时间 硬件 进程、线程、调度程序 处理器 (CPU) 内存条 硬件 虚拟地址空间、分页/分段 主存储器 (内存) 硬盘/SSD 硬件 文件、文件系统、缓冲区 外存储器 (磁盘) 键盘/显示器等 硬件 设备驱动、I/O子系统 I/O 设备 进程本身 软件实体 进程控制块 (PCB) (通过管理进程来管理CPU和内存) 文件描述符 软件实体 系统文件表 (通过管理文件来管理磁盘)
- 操作系统的中轴地位
用户不能跳过操作系统直接使用硬件,这既是因为硬件管理太难,用户不会,也是因为计算机设计者只让操作系统以接口的方式为用户提供调用的入口来控制操作系统进而为用户提供服务
所谓接口就是层状图中的 系统调用
操作系统以接口的方式提供服务是为了保证自身数据安全(防止恶意篡改或误改),所以所有访问操作系统的行为都只能通过系统调用
- 系统调用和库函数概念
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发
所以,库函数和系统调用是上下层的调用与被调用关系
学生是典型的被管理对象,校长是典型的管理对象,事情的属性可分为执行与决策两种
仔细分析得出:
1.管理者和被管理者可以不见面(学生与校长可以不见面)
2.管理者与被管理者不见面,但可以通过特定途径(辅导员等)拿到被管理者的信息
3.管理者在不见被管理者的情况下,只要能够得到管理信息,就可以在未来进行管理决策
所以,管理的本质:通过对数据的管理,达到对人的管理
- 操作系统如何管理软硬件资源呢?
首先毋庸置疑的是,操作系统管理的数据资源非常庞杂,而对于特定的数据资源,我们应该先对其进行描述,操作系统使用C写的,就可以用结构体来描述特定的数据资源,描述好了,对于特定的管理,如查找最大(小)值,操作系统就需要在庞杂的数据中去查找,此时,就可以用数据结构堆先把我们描述好的数据组织起来,堆底元素就是最大(小)值
照此思路,操作系统的管理思路就是:先描述,再组织。先用结构体描述数据资源的属性,再用数据结构将其组织起来,后续对数据结构的增删查改就是对所描述的数据资源的管理
