访问磁盘过程
对磁盘的访问总是由缺页引起的:
CPU给出地址,需要访问某存储单元;
并行进行TLB查找和cache查找;
TLB查找后申明没有找到;
停止并行查找,并通知操作系统处理;
操作系统检查页表,发现该页不在内存中,需要从硬盘调入。应该如何进行呢?
操作系统从主存中选择一页准备换出,为调入的页安排存放空间;若被换出的页是“脏”页,需要将其写回磁盘存储;操作系统申请I/O总线;获得批准后,发送写命令给I/O 设备(磁盘)。 紧跟着传送需要写回的页的全部数据。I/O控制器发现发给自己的写命令 ,加入到握手协议,并接受数据。根据数据要写入的地址,读/写头移动到正确的柱面,同时,将数据接收到缓冲区。寻道结束后,等待相应的扇区旋转到磁头下面,将数据写入扇区中。 在写入数据间隙,计算校验码并写入扇区中。下一步,操作系统继续申请总线(如果还保持总线控制权,则不必申请)。得到授权后,向磁盘发出读命令。 然后,磁盘识别地址,并转换为相应的地址段。 寻道,将读/写头移动到指定位置。从指定扇区中读去数据,并进行校验。磁盘申请I/O总线。得到授权后,将数据通过总线送到内存。