1、,操作系统内核的I/O子系统,内核I/O子系统,内核与I/O有关服务: I/O调度、缓冲、高速缓冲、spooling、设备预订、错误处理.内核I/O子系统负责:文件和设备命名空间的管理文件和设备访问控制操作控制(for example,a moderm cannot seek())文件系统空间的分配设备分配缓冲、高速缓存、假脱机I/O调度设备状态监控、错误处理、失败恢复设备驱动程序的配置和初始化,I/O调度,I/O调度:调度一组I/O请求就是确定一个好的顺序来执行这些请求。某些I/O需要按设备队列的顺序-先来先服务 某些操作系统尝试着公平-优先级高者优先 磁盘I/O调度实现OS通过为每个设备维
2、护一个请求队列来实现调度。可以试图公平,也可以根据不同的优先级进行I/O调度。其他方法:缓冲、高速缓冲、假脱机,缓冲buffer,缓冲 Buffering用来保存在两设备之间或在设备和应用程序之间所传输数据的内存区域。缓冲区管理:为了解决CPU与I/O之间速度不匹配的矛盾,在它们之间配置了缓冲区。这样设备管理程序又要负责管理缓冲区的建立、分配和释放。缓冲作用:解决设备速度不匹配解决设备传输块的大小不匹配为了维持拷贝语义“copy semantics”要求单缓冲、双缓冲、多缓冲、缓冲池,高速缓存,高速缓存 Caching高速缓存(cache):是可以保留数据拷贝的高速内存。缓冲与高速缓存的差别是
3、缓冲只是保留数据仅有的一个现存拷贝,而根据定义高速缓存只是提供了一个驻留在其他地方的数据的一个高速拷贝。高速缓存和缓冲是两个不同的功能,但有时一块内存区域也可以同时用于两个目的。当内核接收到I/O请求时,内核首先检查高速缓存以确定相应文件的内容是否在内存中。如果是,物理磁盘I/O就可以避免或延迟。,假脱机技术,SPOOLing(Simultaneous Peripheral Operation On Line),称为假脱机技术。:用来保存设备输出的缓冲,这些设备如打印机不能接收交叉的数据流。操作系统通过截取对打印机的输出来解决这一问题。应用程序的输出先是假脱机到一个独立的磁盘文件上。当应用程序
4、完成打印时,假脱机系统将相应的待送打印机的假脱机文件进行排队Printing:打印机虽然是独享设备,通过SPOOLing技术,可以将它改造为一台可供多个用户共享的设备。,设备预订和错误处理,设备预订提供对设备的独占访问分配和再分配的系统调用有可能产生死锁错误处理 Error Handling 操作系统可以恢复磁盘读,设备无效,暂时的失败当I/O失败时,大多数返回一个错误码 系统日志记录了出错报告,内核数据结构,内核需要保存留I/O组件使用的状态信息,包括打开文件表,网络连接,字符设备状态等许多复杂的数据结构用来跟踪缓冲,内存分配,及“脏”块某些OS用面向对象的方法和消息传递的方法来实现I/O,
5、UNIX I/O内核结构,转换I/O请求为硬件操作,I/O请求到硬件操作考虑一个进程从磁盘中读取一个文件过程确定保存文件的设备转换名字到设备的表示法把数据从磁盘读到缓冲区中通知请求进程数据现在是有效的把控制权返回给进程,I/O请求的周期,数据已在缓冲区,启动I/O设备,习题分析,1在操作系统中,用户在使用I/O设备时,通常采用 A设备的绝对号 B设备的相对号C虚拟设备号 D设备名2在现代操作系统中采用缓冲技术的主要目的是 A.改善用户编程环境 B.提高CPU的处理速度C.提高CPU和设备之间的并行程度 D.实现与设备无关性 3. 设备的打开、关闭、读、写等操作是由 完成的。A用户程序 B编译程序 C设备分配程序 D设备驱动程序,习题分析,4I/O系统有三种常用方式来与主机交换数据,它们是程序轮询方式、中断方式和方式,其中方式主要由硬件来实现,此时高速外设和内存之间进行数据交换 。A不通过的控制,不利用系统总线B. 不通过的控制,利用系统总线C. 通过的控制,不利用系统总线D. 通过的控制,利用系统总线,End,