theme: orange
引言
对于程序员来说,IO操作是非常熟悉的。本文就将带大家更深入地了解进行IO操作时,计算机底层到底发生了什么。看过本文之后保证能让你对IO操作有一个基本的了解,从此告别这个知识点盲区。
IO操作的基本概念
- IO的定义:IO就是简单的数据拷贝,从外部设备到内存或从内存到外部设备。
- Input与Output:数据从外部设备拷贝到内存是输入(Input),反之为输出(Output)。
CPU与IO设备的速度差异
- 速度不匹配:CPU的速度远快于IO设备,这导致效率问题。
- 阻塞的概念:为解决此问题,引入了阻塞,即CPU等待IO操作完成时会暂停当前程序,执行其他任务。
IO操作的详细过程
1. 发起IO请求
- 假设程序A正在运行,并尝试通过read函数读取文件,CPU向磁盘发送读取请求。
2. 程序阻塞与切换
- 程序A阻塞:由于磁盘IO速度慢,程序A被暂停并放入阻塞队列。
- CPU切换:CPU切换到其他程序(如程序B)继续执行。
3. 数据的DMA传输
- 磁盘操作:磁盘开始将数据发送到程序A的缓冲区,此过程称为DMA(直接内存访问),不依赖CPU。
4. 就绪队列与程序调度
- 就绪队列:包含准备就绪但尚未被CPU执行的程序,如程序B。
- 程序调度:CPU在程序A阻塞时,从就绪队列中选择程序B执行。
5. IO完成与中断
- 数据拷贝完成:磁盘完成数据拷贝后,通过中断通知操作系统。
- 程序A恢复:操作系统将程序A从阻塞队列移至就绪队列,等待再次被CPU执行。
6. 程序继续执行与数据输出
- 程序A继续执行:当程序A再次获得CPU时间片时,处理已读取的数据。
- 数据输出:程序A将数据从内存输出到屏幕等设备。
结语
现在你应该对IO操作在计算机底层的过程有了更清晰的了解。想了解更多关于计算机系统原理的知识,欢迎参考相关资料和书籍。
相关内容