1 / 43

操作系统整体结构

操作系统整体结构. 第5章 设备管理. 首先回顾操作系统的总体构架,从而定位设备管理所处地位 然后学习设备管理的基本原理 最后了结 LINUX 设备管理实例. 操作系统的基本组织结构. 操作系统. 进程与资源管理. 文件管理. 存储管理. 设备管理. 处理机. 主存. 设备. 计算机硬件. Linux 文件系统. 设备管理. 引言 输入/输出硬件 输入/输出软件 LINUX 输入/输出系统概述 小结. 引言. 硬件设备与控制软件之间的联系: 设备 — 控制器 — 内存映射地址 — 处理机

lacy
Download Presentation

操作系统整体结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 操作系统整体结构

  2. 第5章 设备管理 首先回顾操作系统的总体构架,从而定位设备管理所处地位 然后学习设备管理的基本原理 最后了结LINUX设备管理实例

  3. 操作系统的基本组织结构 操作系统 进程与资源管理 文件管理 存储管理 设备管理 处理机 主存 设备 计算机硬件

  4. Linux文件系统

  5. 设备管理 • 引言 • 输入/输出硬件 • 输入/输出软件 • LINUX输入/输出系统概述 • 小结

  6. 引言 • 硬件设备与控制软件之间的联系: 设备—控制器—内存映射地址—处理机 驱动程序—I/O管理程序—文件系统—用户的I/O请求 • 设备管理的主要任务 • 设备分配 • 实现数据传输 • 提供用户使用接口 • 提高并行操作度 • 设备管理程序提供的功能 • 为进程管理提供接口(将进程的请求转给设备管理) • 实施设备分配(设备分类、调度算法、等待队列) • 实现设备之间以及设备与CPU之间并行操作(DMA、通道) • 缓冲区管理

  7. 控制器-设备接口 磁盘驱动器 打印机 CPU 内存 磁盘 控制器 打印机 控制器 其他 控制器 系统总线 图5-5 CPU和控制器通信的单总线模型 输入/输出硬件 • 电子设备 • 设备分类 • 字符设备 • 块设备 • 设备控制器 • DMA存储器直接存取 • 通道

  8. 800字节 块记录格式 磁带尾部 反光片 磁带头部 反光片 记 录 IRG 记 录 IRG 磁带格式 IRG 记录3 IRG 记录1 记录2 记录4 磁带

  9. 旋转方向 读/写磁头 臂移动方向 移动头磁盘示意图 扇区 磁道 单磁盘片表面的划分 磁盘

  10. 磁盘设备结构

  11. 内存 CPU 总线 选择通道 成组多路 通道 字节多路 通道 终端 I/O控制器 I/O控制器 磁带 I/O控制器 磁盘 终端 I/O控制器 终端 I/O控制器 I/O控制器 磁带 I/O控制器 磁盘 通道方式的数据传送结构

  12. CPU start int 内存 DMA控制器 I/O设备 数据 中断位 启动位 控制状态寄存器 数据缓冲寄存器 传送字节数寄存器 内存地址寄存器 DMA方式的传送结构 DMA

  13. 输入/输出软件 • 输入/输出软件的作用 • 数据传送控制方式 • 程序直接控制方式 • 中断方式 • DMA方式 • 通道控制方式 • 中断处理技术 • 设备驱动程序 • 与设备无关的I/O软件(文件系统功能) • 用户层的输入/输出软件(使用read/write) • 设备分配 • 缓冲区管理 • I/O进程控制

  14. I/O请求 I/O应答 进行I/O调用:格式化I/O 4-用户进程 3-设备无关软件 命名、保护、阻塞、缓冲、分配 2-设备驱动程序 设备服务子程序 设置设备寄存器、检测状态 I/O结束时,唤醒设备服务子程序 1-中断处理程序 硬 件 执行I/O操作 输入/输出软件的作用

  15. CPU 外围设备 发start命令 接收到start命令 设备标志触发器为done”? 做接收或发送数据准备 是 否 准备完毕? 否 是 等 待 标志触发器置“done” 执行下条指令 开始数据传送 等待CPU来的下条指令 (a) (b) 程序直接控制方式

  16. int 数据线 地址线 I/O设备1 I/O控制器1 CPU 控制线 start I/O设备n I/O控制器n 内存 启动位 中断位 信号线 控制状态寄存器 数据缓冲寄存器 中断控制方式的传送结构

  17. 设备 CPU 向设备发start指令 将中断允许位置1 接收到CPU发来的start指令 调度程序调度其他进程 准备数据并将其置入缓冲寄存器 其他进程执行 否 缓冲寄存器满吗? 否 收到中断信号了吗? 是 控制器发中断信号 中断处理 被中断进程执行 中断控制方式的处理过程

  18. 设备 CPU DMA控制器接收到start指令 发start命令 内存地址 内存始址寄存器 传送字节数字节计数器 允许中断位与启动位置1 启动设备准备数据 当前进程被阻塞, 调度程序调度其他进程运行 数据入数据缓冲寄存器 缓冲寄存器内容入内存 被调度的进程执行 改变传送字节数计数器与内存地址寄存器内容 接收到中断 信号吗? 否 传送字节数 =0?吗? 是 否 转中断处理 是 发中断信号 停止I/O操作 DMA方式的数据传送处理过程

  19. 通道控制方式的描述过程 从CPU执行的角度来描述通道控制方式 : Channel control procedure: repeat IR←M[pc] pc←pc+1 execute(IR) if require accessing with I/O Device then Command (I/O operation,Address of I/O device,channel) fi if I/O Done Interupt then Call Interrupt processing control fi until machine halt Interrupt processing control procedure 

  20. 关中断 保存被中断现场 分析中断原因 转中断处理子程序 执行中断处理子程序 恢复现场 开中断 返回中断点 中断处理过程

  21. 用户进程 文件系统 设备驱动程序 设备控制器 设备本身 用户进程请求设备服务的流程驱动程序所处地位

  22. 对设备程序的统一接口 设备命名 设备保护 提供一个独立于设备的逻辑块(数据块大小) 缓冲 块设备的存储分配 分配和释放独占设备 错误报告 设备无关软件的功能 (设备文件管理)

  23. 用户层输入/输出软件 • 用户层I/O软件包含用于I/O操作的库例程 例如:read(fd,buf,nbytes)是读文件的系统调用,由它调用的库函数read将和用户程序连接在一起,放在可执行程序中。 • Spooling系统 “Simultaneous Peripheral Operation On-Line” Spooling是在多道程序系统中处理独占设备的一种方法。 例如:一般的打印机是一种独占资源,每次只能有一个程序使用打印机,但如果一个进程打开打印机而不使用它,那么其它的进程都无法打印。 创建一个特殊的守护进程(daemon)以及一个特殊的目录,称为Spooling目录。 这时,打印一个文件之前,进程首先产生完整的待打印文件并将其放在Spooling目录下。当进程把该文件放到Spooling系统中之后就可以认为打印过程已经完成,虽然打印机还没有进行该文件的打印,因此也称为打印的“假脱机”过程。而整个的打印作业由该守护进程进行处理,只有该守护进程能够真正使用打印机设备文件。通过禁止用户直接使用打印机设备文件就解决了打印机的独占问题。

  24. 设备类型 设备类型 表目1 通道标识 控制器标识 通道忙/闲标记 设备标识 ┇ 控制忙/闲标记 设备标识 通道等待队列首 获得设备的进程 CHCT指针 设备忙/闲标记 表目i 控制器等待队列首 通道等待队列尾 COCT指针 ┇ DCT指针 ┇ 设备等待队列首 控制器等待队列尾 ┇ 设备等待队列尾 驱动程序地址 设备分配采用的数据结构 系统设备表STD CHCT COCT DCT

  25. 由进程P来的I/O请求 设备分配流程图 A 搜索SDT找到DCT指针 搜索DCT指针, 找到COCT指针 查DCT 该设备忙? 是 控制器忙吗? 是 进程P等待控制器 否 按分配策略选取 占据该设备的进程 按分配策略选取 占据该设备的进程 进程P按分配策略 入I/O等待队列 否 分配控制器给进程P 否 进程P被选中? 搜索COCT找到CHCT指针 进程P等待该设备空闲 是 是 通道忙? 进程P 等待通道 检查该设备分配给 进程P的安全性 否 分配通道给进程P 否 安全吗? 启动I/O 是 该设备分配给进程P A

  26. 空缓冲区 … 缓冲区操作函数:getbuf、putbuf等等 in … out 缓冲区管理技术 • 单缓冲区 • 多缓冲区 • 缓冲池 缓冲首部 : :

  27. 中断原因分析 I/O请求设备 I/O控制 设备分配程序 唤醒中断 处理程序 缓冲区管理 中断响应 启动I/O指令、设备驱动 程序或通道程序 I/O控制

  28. I/O控制的实现 • I/O控制过程在系统中可以按三种方式实现 • 作为请求I/O操作的进程的一部分实现 • 作为当前进程的一部分实现 • I/O控制由专门的系统进程 ——I/O进程完成: • 每类(个)设备设一专门的I/O进程,且该进程只能在系统态下执行 • 整个系统设一I/O进程,全面负责系统的数据传送工作 • 每类(个)设备设一个专门的I/O进程,但该进程既可在用户态也可在系统态下执行

  29. 小结 • 设备管理的基本过程 • 设备管理用的数据结构 • 通道、控制器、 DMA、中断、缓冲区、 • 数据传送控制方式 • 主设备号、次设备号(对应驱动程序及其参数) • 设备分类 • 设备分配算法 • I/O控制

  30. LINUX输入/输出系统概述 • Linux输入/输出的过程概述 • 设备驱动程序基础 • Linux的中断处理 • 设备驱动程序的框架 • 字符设备驱动程序 • 块设备驱动程序

  31. 输入/输出请求 出错返回 设备无关软件 标准设备接口(read,write,open,close,…) 设备文件 (在/dev目录下) 设备驱动程序 概述

  32. Linux文件系统的层次结构 返回

  33. 设备驱动分层结构 返回

  34. 设备驱动程序基础 • 总线: • CPU和I/O设备是通过总线连接起来。 • PC机常见总线有ISA,PCI等等。 • I/O地址空间: • 所有设备的寄存器组成。 • 察看文件:/proc/ioports • I/O数据传输: • 忙等待、中断方式、DMA方式 • 设备分类: • 字符设备、块设备 • 设备名: • 主设备号(驱动程序)、次设备号(驱动程序的参数) • 设备文件: • 在/dev目录下,在内核中由file结构表示。 • 设备驱动程序接口:由file_operations数据结构完成。

  35. 文件系统数据结构 设备号 struct file_operations chardev_fops = { open: chardev_open, release: chardev_release, read: chardev_read, write: chardev_write, }; 例如:mknod() 创建设备文件,需要提供设备号 返回

  36. 驱动程序接口(调用入口点) struct file_operations { … loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write)(struct file *, char *, size_t, loff_t *); int (*open)(struct inode *, struct file *); int (*release)(struct inode*, struct file *); int (*ioctl)(struct inode *, struct file *, unsigned int, unsigned long) … }

  37. Linux的中断处理 1、中断类型 外中断,陷阱(INT n),异常。 2、睡眠与唤醒 驱动程序启动设备后,进入睡眠; 设备完成I/O后,向CPU 发中断请求; CPU根据中断请求找到睡眠的驱动程序,并唤醒继续处理。 3、中断共享 中断向量表有限,对于外中断来说,其中断向量表项是共享的。因此,共享项上有中断请求队列。 4、中断服务程序的上部和下部处理(bottom-half) 上部执行快速(关中断),下部执行费时(开中断)。

  38. Linux系统I/O层次结构 设备驱动程序向上则面对文件系统,由文件系统为内核其他部分提供统一接口: 入口调用集合Operations: (read、write等等) 设备驱动程序向下与设备控制器接口:定义如何与设备进行通信的协议 (设备控制命令集合)

  39. 设备驱动程序框架 • 一个完整的设备驱动程序包括五个部分: • 1、设备驱动程序的注册与注销(与系统引导的接口) • 注册:在系统初始化/驱动程序模块加载时完成,建立了与文件系统的接口,文件系统可根据注册资料建立文件操作与具体设备驱动程序的映射关系。 • 注销:在系统关闭/驱动程序模块卸载时完成 • 2、设备的打开与关闭 • 设备首先要打开才能读写,完成之后及时释放,针对不同设备有不同操作 • 3、设备的读写操作 • 在读写过程中,设备可能采用查询或者中断的方式来控制数据传输,针对不同的数据传输控制方式,驱动程序采取不同的管理方式实现具体的数据传输 • 4、设备的控制操作 • 5、设备的中断处理或者查询处理

  40. 设备驱动程序代码功能 • 驱动程序的注册与注销 字符设备用:register_chrdev向内核注册,un register_chrdev从内核注销 块设备用:register_blkdev ()向内核注册,un register_blkdev从内核注销 • 设备的打开与释放 各自的open()和release() • 设备的读写 各自的read()和write • 设备的控制操作 各自的ioctl(), 例如软盘弹出。 • 设备的中断和忙等待查询 当设备不支持中断时读写采用忙等待查询设备状态。

  41. 字符设备驱动程序 • 并口打印设备驱动程序与内核接口 Static struct file_operations lp_fops • 并口打印设备驱动程序 与打印机设备接口 Struct lp_struct lp_table • 注册与注销 register_chrdev() unregister_chrdev () struct file_operations chardev_fops = { open: chardev_open, release: chardev_release, read: chardev_read, write: chardev_write, };//虚拟的内存字符设备

  42. 块设备驱动程序 • IDE硬盘驱动程序与内核的接口 static struct file_operations ide_fops • IDE硬盘驱动程序与硬盘设备的接口 struct blk_dev_struct { void(*request_fn)(void); struct request *current_request; struct request plug; struct tq_strut plug_tq;//启动具体磁盘I/O }//drivers/block/ll_rw_blk.c中定义

  43. Linux设备管理小结 • 设备分类:块、字符、网络设备 • 设备文件:每个设备都与一个特殊文件对应 • 文件系统屏蔽了设备的特殊性,通过文件系统使用设备 • I/O软件是控制外设与内存、外设与CPU进行数据交换的所有软件的统称 • Linux系统的I/O软件具有层次结构 • 上层是文件系统:负责设备命名、设备保护、缓冲区管理、设备分配;提供方便用户使用的界面 • 下层是设备驱动程序和中断处理程序:驱动程序可以是独立的内核模块,可以动态地加载和卸载;中断处理采用底半处理技术,提高中断处理的效率

More Related