【文件属性】:
文件名称:与设备I/O操作有关的程序-UNIX(V6)内核阅读
文件大小:325KB
文件格式:PPT
更新时间:2021-04-22 18:41:29
UNIX(V6)内核阅读
与设备I/O操作有关的程序
rkstrategy(bp)
rkintr( )
bp指向rk I/O请求队
列中的第一项
rktab.d-active==0
I/O出错?
清出错次数计数器
(rktab.d-errcnt==0)
在RK I/O请求队列中去
除已执行完毕的第一个
I/O请求块
进行I/O结束处理
(iodone(bp))
启动执行下一个I/O请求
给控制台打印出错信息,
包括设备名,块号等;
设置RKCS字的0位为1,
进行控制复位操作;
等待RKCS第七位变为1
出错次数加1
(++rktab.d-errcnt)
出错次数<=10?
Y
N
设置出错标志
重新执行该I/O请求
(rkstart( ))
返回
返回
将bp指向的buf送
入RK I/O请求队
列的末尾
RK盘空闲?
Y
启动RK
(rkstart( ))
返回
rkstart( )
在RK I/O请求队列中
取出第一个I/O请求块
队列空?
设置RK控制器忙的
标志
(rktab d-active++)
N
调用devstart,按I/O
请求块启动rk I/O操
作
(devstart(bp,RKDA,
rkaddr(bp),0))
返回
Y
N
RKDA==devblk;
RKBA==bp->b-addr;
RKWC==bp->b-wcnt;
按规定格式构成RKCS
字,启动I/O操作
返回
devstart(bp.devloc.devblk,hbcom)
Y
N
RKDA:磁盘地址寄存器;
RKBA:内存地址寄存器;
RKWC:字计数寄存器;
RKCS:控制状态寄存器;