hardware_ogranization
1. 总线
各个组件之间来回传送字节信息的电子管道称为总线
衡量传输信息多少的单位: word (一个固定大小的bytes块)
一个word中有多少个byte由系统来决定, 一般为4字节/8字节
2. IO设备
上图中有4个IO设备,分别是鼠标,键盘,显示器和硬盘
从上可以看出这4个设备并不是直接连接到总线的,而是通过2类不同的方式连接到IO总线的
-
controller: 置于IO设备本身的芯片组或者主板上的芯片组 -
adapter: 一块插在主板上的卡槽上的卡
3. 主存
临时的存储设备,用于存储程序和程序用到的数据
-
物理上: 由一堆DRAM组成
-
逻辑上: 可以看做是一个数组
4. 处理器
用于执行存储于主存中的指令,它的核心在于一个叫做PC的寄存器,在任何时间PC总是指向主存中的一个机器指令
5. hello 代码是如何加载执行的
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
5.1 从键盘读入hello 这个命令
具体组件流: (将hello读入内存)
- usb controller
- I/O bridge
- bus interface
- register file
- I/O bridge
- main memory
hello_read_command.png
5.2 从硬盘加载可执行代码到主存
具体组件流: (使用到了DMA,数据的copy没有cpu参与)
- Disk
- Disk controller
- I/O bridge
- main memory
hello_load.png
5.3 将字符串从寄存器堆输出到显示器
- 将字符串
hello, world\n从内存copy到寄存器堆 - 将数据从寄存器堆输出到显示器
具体组件流:
- main memory
- bus interface
- register file
- bus interface
- I/O bridge
- graphics adapter
hello_display.png
ref:
- csapp chap1.4
- IO设备的控制器 适配器










网友评论