虚拟存储器培训课件.ppt
文本预览下载声明
2、 磁盘调度算法 磁盘调度算法 早期的磁盘调度算法 先来先服务FCFS 最短寻道时间优先SSTF 扫描算法 扫描(SCAN)算法 循环扫描(CSCAN)算法 **N-STEP-SCAN调度算法 **FSCAN调度算法 例:假设一个请求序列: 98, 183, 37, 122, 14, 124, 65, 67 磁头当前的位置在53。 R G G G G R 1 2 3 4 5 6 Nexti Nextg R G G G G R 1 2 3 4 5 6 Nexti current Nextg 循环缓冲的组成 循 环 缓 冲 缓冲区的使用 Getbuf过程 Releasebuf过程 进程同步 Nexti指针追赶上Nextg指针—输入进程阻塞 Nextg指针追赶上Nexti指针—计算进程阻塞 1、缓冲池:将系统内所有的缓冲区统一管理起来,就形成了能用于输入/输出的缓冲池。缓冲池通常由若干大小相同的缓冲区组成,是系统的公用资源,任何进程都可以申请使用缓冲池 中的各个缓冲区。 2、缓冲池的组成(数据结构) 三个队列:空缓冲队列、装满输入数据队列、装满输出数据队列 四个工作缓冲区: 收容输入缓冲区、提取输入 收容输出、提取输出缓冲区 缓 冲 池 3、getbuf过程和putbuf过程 Procedure Getbuf(type) begin wait(rs(type)); wait(ms(type)); B(number):=Takebuf(type); signal(ms(type); end 缓 冲 池 Procedure putbuf(type) begin wait(ms(type)); Addbuf(type,number); signal(ms(type); signal(rs(type); end 4、操作系统对缓冲池的管理--工作方式 hin sin sout hout 用 户 程 序 缓冲池 提取输入 收容输出 提取输出 收容输入 缓冲区的工作方式 输入进程需要输入数据时:输入设备 收容输入缓冲区-Getbuf(emq) 1)从空缓冲队列的队首取一空缓冲区用作收容输入缓冲区 2)输入设备将数据输入收容输入缓冲区并装满 3)将此缓冲区挂到装满输入数据队列队尾。 计算进程需要输入数据时:提取输入缓冲区 CPU -Getbuf(inq) 1)从装满输入数据队列队首取一满缓冲区用作提取输入缓冲区 2)CPU从提取输入缓冲区中取出数据至用完 3)将空缓冲区挂到空缓冲队列队尾。 4、操作系统对缓冲池的管理--工作方式 计算进程需要输出数据时:CPU 收容输出缓冲区-getbuf(emq) 1)从空缓冲队列队首取一空缓冲区用作收容输出缓冲区 2)CPU将数据输入其中并装满 3)将收容输出缓冲区挂到装满输出数据队列队尾。 输出进程需要输出数据时:提取输出缓冲区- 输出设备-getbuf(outq) 1)从装满输出数据队列队首取一满缓冲区用作提取输出缓冲区 2)输出设备从中取出数据至用完 3)将空缓冲区挂到空缓冲队列队尾 4、操作系统对缓冲池的管理--工作方式 5.4 设备分配 ●设备分配中的数据结构 ●设备分配的策略/应考虑的因素 ● 设备独立性 ●设备分配程序 ●SPOOLING技术 7.4 .1 设备分配中的数据结构 设备控制表DCT(device control table) 控制器控制表COCT(controller control table) 通道控制表CHCT(channel control table) 系统设备表SDT(system device table) DCT 表目1 …… 表目i …… 设备类型 设备标识符 DCT指针 获得设备的进程 …… 控制器标识符 控制器状态:忙/闲 CHCT指针 控制器等待队列指针 …… 通道标识符 通道状态:忙/闲 通道等待队列指针 …… SDT COCT CHDT 设备类型 设备标识符 设备状态:忙/闲 COCT指针 设备等待队列指针 ……
显示全部