* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5.4.4 出错处理 为增加磁盘的容量,厂商唯有不断地提高盘面数据的密度,这就不可避免地带来瑕疵,从而在磁盘上出现坏的扇区,即写入的数据无法正确地读出。 对于坏的扇区,有两种处理策略: 由设备控制器来处理:在磁盘出厂前,对整个磁盘进行测试,用一个列表来记录所有的坏扇区,并把它写入磁盘。对于每一个坏扇区,用一个备用的扇区来替代它; 由操作系统来处理:操作系统对整个磁盘进行测试,以获得一个坏扇区的列表,然后据此来构造一个重映射表,对扇区号进行调整。为避免这些坏扇区被使用,可构造一个特殊的内部“文件”,该文件“占用”了所有的坏扇区。 * 第五章 结束 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 驱动程序以什么形式存在?单独的一个进程吗?调用驱动时有无进程切换? 中断处理程序是谁写的?OS or 厂商? 设备驱动程序与中断处理程序(两个进程间)如何同步? 如果有多个进程同时都要访问该I/O设备,该怎么办? 问题 * 我们要为一个简单的字符输入设备实现相应的设备驱动程序。 当用户进程需要I/O操作时,启动相应系统调用,最终执行各种设备统一的对外接口函数read(devID, buf, size)。 设备驱动程序主要由两个函数组成: foo_read(),该设备对read接口函数的具体实现。 foo_interrupt(),中断处理函数。 一个例子 * size_t foo_read(struct file *filp, char *buf, size_t count, loff_t *ppos) { foo_dev_t *foo_dev = filp-private_data; if(down_interruptible(foo_dev-sem)//互斥 return -ERESTARTSYS; foo_dev-intr = 0; //同步 outb(DEV_FOO_READ, DEV_FOO_CONTROL_PORT); wait_event_interruptible(foo_dev-wait, (foo_dev-intr == 1)); // 被阻塞 if (put_user(foo_dev-data, buf)) return -EFAULT; up(foo_dev-sem); return 1; } * void foo_interrupt(int irq,void *dev_id, struct pt_regs *regs) { foo-data = inb(DEV_FOO_DATA_PORT); foo-intr = 1; wake_up_interruptible(foo-wait); } 用户进程A → 系统调用 → read → foo_read → 被阻塞 → 用户进程B → 被中断 → foo_interrupt → A被唤醒 * 方案1只适合需要互斥访问的设备。 块设备如何处理?例如:A进程访问磁盘的第i个数据块,B进程也要访问第i个数据块,如何优化,减少I/O操作? * 数据结构:请求队列(request queue); 块设备驱动程序:上层函数,负责管理请求队列;底层函数,负责与硬件打交道,完成真正的I/O; I/O请求的提交与真正实现是分离的。各个用户进程(通过内核)调用上层函数,提交I/O请求(mak_request),然后阻塞;底层函数则从队列中取出每个I/O请求,并完成之。 能够对各个I/O请求进行优化,如数据块的重组。 方案二 * Example: A scsi disk driver in UNIX ?sdstrategy: do error checking, if device is not busy, issue a start request for the specific unit (disk). ?sdustart: find the proper queue for this unit, put the request on the queue, issue start. ?sdstart: request the resources needed for the request
您可能关注的文档
- 机械成孔灌注桩施工方案教案.doc
- 办公以太网和工业以太网的区别资料.ppt
- 机械常识500问教案.doc
- 机箱结构设计技术规范教案.doc
- 机器人胃癌手术专家共识教案.doc
- 机器人焊接论文教案.doc
- 办公自动化的更高境界资料.ppt
- 第8章 局域网技术(第3版)试卷.ppt
- 常用医学美容技术资料.ppt
- 机票预订系统 需求教案.doc
- 2026年富宁县紧密型医共体新华分院招聘备考题库(乡村医生2名)及答案详解参考.docx
- xx县电子商务公共服务中心建设运营方案.docx
- 真菌性蝶窦炎多学科决策模式中国专家共识(2025版).docx
- 人工智能与大数据协同驱动组织数字化转型的内在机理.docx
- 真菌性筛窦炎多学科决策模式中国专家共识(2025版).docx
- 创新创业农业项目计划书【8】.docx
- 真菌性颌窦炎多学科决策模式中国专家共识(2025版).docx
- 中老年生活用品便利店计划书.docx
- 真菌性皮炎多学科决策模式中国专家共识(2025版).docx
- 2026年富宁县紧密型医共体新华分院招聘备考题库(乡村医生2名)及完整答案详解1套.docx
原创力文档

文档评论(0)