【Linux】冯诺依曼体系与操作系统
Linux冯诺依曼体系与操作系统
1、冯诺依曼体系结构
我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系

1.1 五大硬件部件
五大组成:输入设备、存储器、运算器、控制器、输出设备
输入设备:键盘,鼠标,扫描仪,摄像头,话筒,网卡,磁盘等
输出设备:显示器,打印机,内置播放器,网卡,磁盘等
注意:磁盘属于外部存储设备,计算机可以从磁盘中读取数据,也可以把数据写入磁盘中,输入、输出设备都是外部设备
存储器:这里的存储器指的是内存,它是一种硬件级别的缓存空间
中央处理器CPU:由运算器和控制器共同构成,CPU只能对存储器进行读写,不能直接访问外设,运算器负责算术运算,控制器进行发送控制信号
整体流程:
输入 → 计算 → 输出
数据先输入到内存,CPU 从内存拿数据做运算,结果放回内存,再交给输出设备展示
1.2 内存
CPU不能从输入设备读取数据并写入输出设备,数据必须从输入设备写入存储器,CPU再从存储器读取数据进行计算,再把计算结果写入存储器,再从存储器中刷新,刷新出结果
存储分级金字塔:

计算机中内存的读取速度是微秒级别,外部设备的读取速度是毫秒级别CPU和外设之间的速度差较大,如果将CPU和外设直接连接,那么CPU 会疯狂等待外设,CPU 大部分时间空闲,由木桶效应,整机效率极低
核心思想:局部性原理
程序访问数据有局部性:刚用过的数据,很大概率马上还要用;访问一块数据,旁边的数据也很可能马上访问
把即将要用的数据提前预加载到高速内存,CPU 直接跟高速内存交互,减少访问慢速外设
所有程序想要运行,必须先加载到内存,C 语言编译得到二进制可执行文件放在磁盘,磁盘是外设,CPU 不能直接读磁盘上的程序,必须拷贝进内存,CPU 才能执行它
程序就是数据,指令和数据同等看待,全都存放在存储器
IO原理:
数据流动的本质是拷贝,输入时键盘(输入设备)把数据拷贝到内存,CPU从内存读取数据做处理,如果要打印,CPU处理完会把数据写回到内存,内存的数据再拷贝到显示器(输出设备)显示出来
计算机中I为Input输入、O为Output输出,IO效率问题由设备的拷贝效率决定
聊天时的数据流动:
发送方:
- 键盘中输入字符串,数据拷贝进入内存
- CPU 处理,内存的数据拷贝给网卡(输出设备)
- 网卡把数据通过网络传输到对方电脑
接收方:
- 网卡作为输入设备,网络数据拷贝到本机内存
- CPU 读取内存处理
- 内存的数据拷贝给显示器输出
2、操作系统
2.1 概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
狭义上的操作系统是内核Kernel,内核是操作系统最核心的部分,包含四大功能:
- 内存管理
- 文件管理
- 驱动管理
- 进程管理
广义上的操作系统是内核+外壳shell+系统库+图形界面+预装软件
2.2 操作系统存在的目的
手段:管理全部软硬件资源;目的:给用户提供稳定、高效、安全的使用环境
计算机的层状结构:

操作系统的管理:
学校模型:
- 校长 = 操作系统内核(决策者)
- 辅导员 = 驱动程序(中间执行者)
- 学生 = 底层硬件(网卡、硬盘等外设)
管理者和被管理者不需要见面,校长不会直接管理每一个学生,做出的决策交给辅导员执行;同样操作系统不会直接操作硬件,而是交给驱动程序,由驱动程序执行
管理的本质是对被管理者身上的数据做管理,数据是管理者做决策的依据,比如学校管理学生,学生有姓名、院系、成绩、特长等属性。那么如果想统计学生的信息,应利用结构体,如果找出成绩最差的学生劝退,此时想快速找到该学生应利用链表将结构体组织起来
操作系统管理进程、管理硬件一模一样:管理进程不是直接操控 CPU 硬件,内存里维护进程链表,修改链表,就是管理进程
所以管理的本质就是对信息的维护,首先要定义一个结构体,结构体中是硬件设备的各种属性,一个结构体对象表示一个硬件,然后把结构体对象采用链表或其他数据结构等形式组织起来,这时操作系统对硬件设备的管理变成了对一个硬件的管理
计算机管理的本质:
- 先描述:结构体(类),把现实事物属性抽象成数据
- 再组织:数据结构(链表等),把大量实例组织起来
注意:操作系统对硬件的管理最终都会装换成数据结构,所以操作系统中含有大量的数据结构
2.3 系统调用接口
作为用户无法直接和操作系统进行交互,做执行时真正让硬件完成这件工作,这件事只有操作系统内核有权限,操作系统为了保证数据安全,不允许用户随意改动,但又要给用户提供服务,所以操作系统用接口的形式给用户提供调用的入口
例如银行,不能让任何人触碰金库,但又必须给合法普通人提供服务
- 大堂经理 = 库函数,接待用户
- 柜台窗口 = 系统调用接口,唯一合法入口
- 员工 = 操作系统内核代码
- 金库 = 计算机硬件资源
- 保安 = CPU 硬件权限保护(内核态 / 用户态)
安全核心思想:不信任任何人,但是要给合法用户提供服务。
类比操作系统:
用户程序(普通应用)运行在用户态,没有权限直接操作硬件,不安全,禁止直接访问底层硬件
如果想要操作硬件资源,**必须走唯一入口:系统调用接口,**很多C/C++库函数,本质上都是对系统调用做封装
举例:你写程序想往硬盘写文件。你的程序不能直接操作硬盘硬件,调用库函数,库函数调用系统调用,操作系统校验权限,然后调用硬盘驱动,最后硬件完成写操作
总结:
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,
这部分由操作系统提供的接口,叫做系统调用 - 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部
分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开
发
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)