硬件结构
图灵机
- 纸带 -> 内存
- 读写头
- 控制单元
- 存储单元
- 运算单元
冯诺依曼模型
- 运算器
- 存储器
- 控制器
- 输入设备
- 输出设备
内存
中央处理器
CPU 内部还有一些组件,常见的有寄存器、控制单元和逻辑运算单元
常用的寄存器种类有:
1. 通用寄存器
1. 指令寄存器
1. 程序计数器
通用寄存器,用来存放需要进行运算的数据;
指令寄存器用来存放当前正在执行以及执行完的指令;
程序计数器用来存放下一条需要执行的指令的地址;
事件总线
总线是用于 CPU 和内存以及其他设备之间的通信,总线可分为 3 种:
- 地址总线
- 数据总线
- 控制总线
地址总线,用于指定 CPU 将要操作的内存地址;
数据总线,用于读写内存的数据;
控制总线,用于发送和接收信号,比如中断、设备复位等信号
中断
在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。
操作系统收到了中断请求,会打断其他进程的运行,所以 中断请求的响应程序 也就是中断处理程序,要尽可能快的执行完,这样可以减少对正常进程运行调度地影响
中断有可能会丢失,所以中断处理程序要短且快。
什么是软中断
那 Linux 系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是「上半部和下半部分」。
- 上半部用来快速处理中断,一般会暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。
- 下半部用来延迟处理上半部未完成的工作,一般以「内核线程」的方式运行。