- input/output(I/O) 设备连接了计算机操作系统和外部世界。最基本的I/O设备包括:键盘,鼠标,显示器,磁盘。每一个I/O设备通过控制器或者适配器与I/O总线连接。控制器指的是设置在IO设备中的芯片,或者设置在主板上。而适配器是插在主板上的卡。二者的作用都是在I/O总线和I/O设备之间传递信息。如下图。
IO设备与CPU以及内存之间是通过IO总线连接,比如PCI总线。
- 以磁盘的读写为例,看看cpu与IO设备之间的数据是如何交互的;
当CPU从disk读数据时,CPU通过将 读指令,数据所在的逻辑块(数据开始扇区和从出事扇区往后读取的连续扇区个数),以及目标内存地址,写入与磁盘相关联的内存映射地址,从而启动磁盘读取,这种指令+数据 就是一次IO。而磁盘控制器读取相应的块,然后在DMA模式下传递数据到内存(送CPU开始发送的那个目标内存地址中)。当数据传送完成,磁盘控制器还会产生一个中断发送给CPU。
因此I/O就是一个将数据在内存和外部设备之间相互传递过程。
读操作就是将I/O设备的数据拷贝到内存,写操作就是将内存中数据拷贝到设备。 - 而进一步,我们看看数据库的I/O。数据库的数据也是存储在磁盘中,因此数据库的存取就是对磁盘数据的读写。
数据库读取中的连续IO表示本次IO给出的初始扇区地址和上一次IO的结束扇区地址是连续的,这样磁头几乎不用进行换道,或者换道的时间极短。反之,随机IO,会导致读取效率低下,因为磁头不停的换道。