磁盘为什么是同时共享设备

同时共享设备的定义:同时访问方式中,一个进程对于某一资源的需求任务没有完成时,该资源可以转移给其他进程使用,等到合适的时机,该资源可以回到最初的进程中继续完成任务,且并不影响任务的正确完成

我的疑问:为啥磁盘是同时共享设备呢。比如一个进程通过DMA控制器读磁盘的连续5个块,如果是同时共享,表示在这个进程任务没完成时就可以将磁盘分配给其他进程,那第一个进程读完第2个块的时候将磁盘分配给第二个进程,等过了一会还能回到第一个进程上次读到的位置接着读吗?我感觉不可以,理由如下:DMA的工作流程是CPU先给DMA发送读写指令,且要指明此次要读写的数据有多少以及数据位置。如果上面例子中连续的5个块被分开了,那么从第三块到第五块就没有相应的指令驱动了

解答:“磁盘是同时共享设备”这句话是针对大规模读写磁盘的。像我上面举的例子中,一个一个的指令是并不会被中断的。而对于大规模读写,例如nvme协议的磁盘,驱动程序会把读写函数拆分成一个一个nvme指令,然后磁盘内部会有一个控制器从内存里获取指令,一个一个地调用DMA执行,这些指令其实并不会被中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值