首页 > 知识点讲解
       I/O软件原理
知识路径: > 计算机系统知识 > 计算机软件知识 > 操作系统知识 > 设备管理(I/O控制、假脱机) > 设备管理 > 
相关知识点:12个      
        I/O软件的总体设计目标是:高效率和通用性。高效率是不言而喻的,在改善I/O设备的效率中,最应关注的是磁盘I/O的效率。通用性意味着用统一标准的方法来管理所有设备,为了达到这一目标,通常,把软件组织成一种层次结构,低层软件用来屏蔽硬件的具体细节,高层软件则主要向用户提供一个简洁、规范的界面。
        为了合理、高效地解决以上问题,操作系统通常把I/O软件组织成以下四个层次。
        (1) I/O中断处理程序(底层)。
        (2)设备驱动程序。
        (3)与设备无关的操作系统I/O软件。
        (4)用户层I/O软件。
               输入/输出中断处理程序
               中断是应该尽量加以屏蔽的概念,应该放在操作系统的底层进行处理,以便其余部分尽可能少地与之发生联系。
               当一个进程请求I/O操作时,该进程将被挂起,直到I/O操作结束并发生中断。当中断发生时,中断处理程序执行相应的处理,并解除相应进程的阻塞状态。
               输入输出中断的类型和功能如下:
               (1)通知用户程序输入输出操作沿链推进的程度。此类中断有程序进程中断。
               (2)通知用户程序输入输出操作正常结束。当输入输出控制器或设备发现通道结束、控制结束、设备结束等信号时,就向通道发出一个报告输入输出操作正常结束的中断。
               (3)通知用户程序发现的输入输出操作异常,包括设备出错、接口出错、I/O程序出错、设备特殊、设备忙等,以及提前中止操作的原因。
               (4)通知程序外围设备上重要的异步信号。此类中断有注意、设备报到、设备结束等。当输入输出中断被响应后,中断装置交换程序状态字引出输入输出中断处理程序。
               设备驱动程序
               设备驱动程序中包括了所有与设备相关的代码。每个设备驱动程序只处理一种设备,或者一类紧密相关的设备。
               笼统地说,设备驱动程序的功能是从与设备无关的软件中接收抽象的请求并执行。一条典型的请求是读第n块。如果请求到来时驱动程序空闲,则它立即执行该请求。但如果它正在处理另一条请求,则它将该请求挂在一个等待队列中。
               执行一条I/O请求的第一步,是将它转换为更具体的形式。例如对磁盘驱动程序,它包含:计算出所请求块的物理地址、检查驱动器电机是否在运转、检测磁头臂是否定位在正确的柱面等。简而言之,它必须确定需要哪些控制器命令以及命令的执行次序。
               一旦决定应向控制器发送什么命令,驱动程序将向控制器的设备寄存器中写入这些命令。某些控制器一次只能处理一条命令,另一些则可以接收一串命令并自动进行处理。
               与硬件无关的操作系统I/O软件
               尽管某些I/O软件是设备相关的,但大部分独立于设备。设备无关软件和设备驱动程序之间的精确界限在各个系统都不尽相同。对于一些以设备无关方式完成的功能,在实际中由于考虑到执行效率等因素,也可以考虑由驱动程序完成。
               下面罗列了一般由设备无关软件完成的功能:
               (1)对设备驱动程序的统一接口。
               (2)设备命名。
               (3)设备保护。
               (4)提供独立于设备的块大小。
               (5)缓冲区管理。
               (6)块设备的存储分配。
               (7)独占性外围设备的分配和释放。
               (8)错误报告。
               设备无关软件的基本功能就是执行适用于所有设备的常用I/O功能,并向用户层软件提供一个一致的接口。
               用户空间的I/O软件
               尽管大部分I/O软件属于操作系统,但是有一小部分是与用户程序链接在一起的库例程,甚至是在核心外运行的完整的程序。系统调用,包括I/O系统调用通常先是库例程调用。如下C语言程序语句:
               
               中,所调用的库函数write将与程序链接在一起,并包含在运行时的二进制程序代码中。这一类库例程显然也是I/O系统的一部分。
               此类库例程的主要工作是提供参数给相应的系统调用并调用之。但也有一些库例程,它们确实做非常实际的工作,例如格式化输入输出就是用库例程实现的。C语言中的一个例子是printf函数,它的输入为一个格式字符串,其中可能带有一些变量,它随后调用write,输出格式化后的一个ASCII码串。与此类似的scanf,它采用与printf相同的语法规则来读取输入。标准I/O库包含相当多的涉及I/O的库例程,它们作为用户程序的一部分运行。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有