Linux-1-冯诺伊曼体系
前言:
Vue框架:
Vue驾校-从项目学Vue-1
算法系列博客友链:
神机百炼
冯诺伊曼体系:
组成:
-
输入设备 + 输出设备
-
中央处理器:
- 运算器:算数运算 + 逻辑运算
- 控制器:么时候读入数据 & 什么时候输出数据
-
存储器:
- 具有一定数据存储能力
- 通过预存数据来充当高低速设备之间的缓冲设备,如printf()时的无缓冲 / 行缓冲 / 全缓冲
- 特指内存,外存属于输入输出设备
-
CPU在数据传输上不直接和外设进行交互,而是通过内存中介
但是在信号传输上直接和外设交互,如中断信号
概念:
input:
- 输入input:数据从硬盘/键盘/网卡/话筒/摄像头传递到内存中
output:
- 输出output:数据从内存传递到硬盘/显示器/音响传递
预存数据:
-
预存数据:执行当前代码时,大概率执行的是下一行代码,操作系统提前将下一行代码所用的数据装载到内存中
-
为什么程序运行之前要先加载到内存中?因为CPU只能直接和内存打交道 & 再深层是为了快
所以就算是.exe文件,也需要先从硬盘加载到内存中,再运行
也就是说平时打开的应用 占用的是 内存
总线:
- 所有硬件之间依靠总线连接,IO总线&系统总线(数据 / 地址 / 控制)
实例说明:
发送消息中的硬件过程:
- 实例1:从QQ聊天窗口给同学发送一条消息的过程:
程序运行中的硬件过程:
-
实例2:分析一段简单的程序:
int a = 0; scanf("%d", &a); a += 10; printf("%d\n", a);
- 运行时,exe程序作为一个进程占据部分内存空间
- 在内存中开辟一块空间供给变量a
- 从键盘输入到a对应内存一个值
- a的值从内存放到CPU的运算器中,为其+10,结束后放回内存a
- 遇到行刷新,a的值从内存传递到显示器上
发送文件中的硬件过程:
- 实例3:发送文件:文件先从硬盘拷贝到内存
信息传输中的硬件过程:
-
实例4:键盘打字完成/网卡接收数据完成
实例1 2 3都主要运用CPU的运算器部分实现数据传输
计算机内部不只有数据传输,还有信号传输
当键盘输入完成/网卡接收数据完成后,会向CPU的控制器发送中断信号
计算机层次:
硬件层:
-
输入设备 + 输出设备(硬盘/网卡/键盘/鼠标/显示器/话筒/摄像头)
-
缓冲内存
-
中央处理器:运算器+控制器
驱动层:
-
为操作系统提供使用硬件的接口
不同硬件的驱动不同,同一硬件不同产品的驱动也不同
-
驱动存在的意义就是为操作系统和硬件解耦合
操作系统层/OS层:
- 文件管理:linux下一切皆文件,包含硬件的驱动
- 内存管理:为进程分配内存
- 硬件管理:如显示器缓冲区的无/行/全
- 驱动管理:和驱动层之间的接口
- 进程管理:运行中的程序都存放在内存中,独占一个进程
用户层:
-
图形化管理界面gui + 命令行管理command line
-
库:很多系统调用接口(函数)的集成,和OS层间的接口
由语言开发者提供,防止用户直接接触操作系统
常见的库:c语言的libc & c++的libc++