- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.3 缓冲管理 1.hin=getbuf(emq); putbuf(inq,hin) 2.sin=getbuf(inq); 计算; putbuf(emq,sin) 3.hout=getbuf(emq); putbuf(outq, hout) 4.sout=getbuf(outq);输出;putbuf(emq,sout) 第三十一页,共七十九页。 三、Getbuf和Putbuf过程 Getbuf(type) Begin wait(RS(type)); wait(MS(type)); B(number):=takebuf(type); signal(MS(type)); end Putbuf(type) Begin wait(MS(type)); addbuf(type,number); signal(MS(type)); signal(RS(type)); end 第三十二页,共七十九页。 5.4 设备分配 包括:对设备、设备控制器、通道的分配 5.4.1 数据结构 一、设备控制表DCT: 二、控制器控制表(COCT),通道表(CHCT),系统设备表(SDT),图5-17 SDT:记录了系统中全部设备及其驱动程序地址。 第三十三页,共七十九页。 设备控制表DCT DCT1 DCT2 DCTn 设备类型type 设备标识符:deviceid 设备状态:等/不等 忙/闲 指向控制器表的指针 重复执行次数或时间 设备队列的对首指针 第三十四页,共七十九页。 5.4.2 设备分配应考虑的若干因素 一、设备的固有属性: 共享+虚拟:注意调度的合理性; 独享:排它性分配,控制不好可能死锁。 二、分配算法: (1)FIFO; (2)优先权。 第三十五页,共七十九页。 5.4.2 设备分配应考虑的若干因素 三、安全性: 安全分配(同步):每进程获得一I/O后,即block,直到其I/O完成。 即打破了死锁条件。 缺点:CPU、I/O对该进程是串行,进程进展缓慢。 不安全分配(异步):需进行安全性检查,进程执行效率高。 第三十六页,共七十九页。 5.4.3 设备独立性 一、概念: 即设备无关性,指应用程序独立于具体使用的物理设备。 逻辑设备 物理设备 逻辑设备表(LUT): 逻辑设备 物理设备 Driver入口 第三十七页,共七十九页。 5.4.3 设备独立性 分配流程:进程给出逻辑名——通过LUT得到物理设备及其driver入口。 优点: 设备分配更灵活; 逻辑设备和物理设备间可以是多——多的映射关系。提高了物理设备的共享性,以及使用的灵活性。如: 某逻辑名可对应这一类设备,提高均衡性与容错性。 几个逻辑名可对应某一个设备,提高共享性。 第三十八页,共七十九页。 5.4.3 设备独立性 易于实现I/O重定向。 不变程序,只需改变LUT表的映射关系。 二、设备独立性软件 执行所有设备的公有操作 分配回收 名字映射 保护 缓冲 差错控制 向用户层软件提供统一接口 read、write 第三十九页,共七十九页。 Struct general_op{ int (*read)(…) int (*write)(…) }; driver1: Struct general_op dev_op={ dev1_read, dev1_write }; driver2: Struct general_op dev_op={ dev2_read, dev2_write }; Gen_read(fd,…) { dev_op=map(fd); dev_op-read(…); } 第四十页,共七十九页。 5.4.3 设备独立性 三.名字映射 LUT的生成 在用户进程第一次请求设备时完成映射并在LUT中生成相应项 LUT的配置 (1)整个系统一张LUT表: 要求:逻辑名不重复,(一般用于单用户系统) (2)每个用户一张LUT表。 可重名/可限制用户对某些设备的使用。 逻辑设备 物理设备 Driver入口 第四十一页,共七十九页。 5.4.4 独占设备分配程序 进程n请求设备: begin search (sdt, phdevice) if not busy (phdevice) then begin compute(safe)——对独占设备 if safe then alloc (n, phdevice); else begin insert (DL(phdevice), n);-----将n插入设备等待队列DL上 return end; end; 第四十二页,共七十九页
原创力文档


文档评论(0)