Linux 当我们从磁盘发出读取命令时会发生什么?
假设有一个进程向内核发出特定扇区的读取命令Linux 当我们从磁盘发出读取命令时会发生什么?,linux,io,linux-kernel,kernel,dma,Linux,Io,Linux Kernel,Kernel,Dma,假设有一个进程向内核发出特定扇区的读取命令 现在内核向磁盘和请求这些特定扇区休眠(被阻塞)的进程发出这个读取命令,并将其置于等待队列中 现在内核向磁盘发出这个命令(这是我的理解)读取这些扇区,在将这些扇区读入缓冲区后,将这些字节/数据复制到这个位置(并向DMA控制器发出这个命令) 现在,磁盘控制器在将这些字节/数据读入缓冲区后,在DMA(它请求DMA控制器)的帮助下,将这些数据传输到内核指定的内存区域 此时(总线正忙),CPU正忙着做一些不需要总线的计算(毫无疑问)。 现在,在从磁盘传输数据完成
- 处理器/ISR如何确定要唤醒哪个进程
- DMA控制器何时开始工作(是处理器要求DMA控制器采取行动将字节从磁盘传输到内存,还是磁盘控制器负责要求DMA控制器提供服务)
- DMA字段(如源地址寄存器和目标地址寄存器)是如何填充的