《Linux设备管理》课件.ppt
《《Linux设备管理》课件.ppt》由会员分享,可在线阅读,更多相关《《Linux设备管理》课件.ppt(57页珍藏版)》请在三一办公上搜索。
1、第六章 Linux设备管理,设备管理概述总线、桥、端口、接口设备驱动Linux块设备管理块设备buffer headbio和bio_vecI/O请求队列(Request queue)调度算法deadline、as、cfq、noopLinux其他设备管理字符设备网络设备/时钟设备/终端设备设备管理相关技术中断DMA,设备分类(1),输入设备、输出设备输入设备:键盘、鼠标输出设备:显示器、打印机输入/输出设备:磁盘、网络、串口设备系统设备与外部设备系统设备:系统时钟、系统扬声器、总线接口系统设备的驱动由内核本身完成外部设备:外部设备的驱动由专门的驱动程序实现,以内核模块的方式附加到内核中外部设备可
2、以被安装和卸载,而系统设备则不能,设备分类(2),独占设备与共享设备独占设备:在某一时间段内只能被一个进程所使用的设备打印机、终端设备等共享设备:允许多个进程同时使用的设备。磁盘等存储设备:允许多个进程同时访问文件,存取文件的数据字符设备与块设备字符设备:终端设备(显示器、键盘、鼠标等)、打印机、串口设备顺序访问块设备:磁盘、光盘、闪存随即访问块设备都是以“文件系统挂载”的方式进行访问,设备管理,设备管理目标从资源的角度出发要尽可能地提高设备的使用效率,提高I/O系统的性能;从用户的角度出发设备管理系统要屏蔽各种设备的物理特性,为用户提供一个统一的、方便的I/O操作界面设备管理功能设备分配根据
3、设备的特点对设备进行合理的分配和调度设备驱动根据进程的I/O请求,启动设备操作,控制数据传输设备中断处理:对设备产生的中断进行处理虚拟设备:用共享设备模拟独占设备,实现虚拟设备,设备与系统的接口,外部物理设备无法直接与CPU相连接的,存在以下差异控制方式不同CPU是数字化命令,而设备需要物理信号来控制传输方式不同CPU以字节为数据传输单位,设备可能以位或者块为单位速度不匹配设备的工作速度要比CPU慢许多时序不一致设备的定时控制电路,难以与CPU的时钟一致信息形式不同CPU处理信息是数字的,设备则可能是模拟的总线、桥、端口、接口Busses,Bridges,Ports,and Interface
4、s,第六章 Linux设备管理,设备管理概述总线、桥、端口、接口设备驱动Linux块设备管理块设备buffer headbio和bio_vecI/O请求队列(Request queue)调度算法deadline、as、cfq、noopLinux其他设备管理字符设备网络设备/时钟设备/终端设备设备管理相关技术中断DMA,总线(bus)与 桥(bridge),总线(bus)以总线为纽带,系统板上的部件都通过总线相连,所有的信号都要通过总线进行传输。a processor communicates with its surrounding devices is through a series of
5、 electrical connections(line).address bus data buscontrol bus北桥 vs.南桥Bridge是两个bus之间连接硬件,front-side bus,总线(bus),Intel HubsThe newer Intel system architecture has moved to the concept of hubs GMCHGraphics and Memory Controller Hub ICHI/O Controller Hub,总线(bus),AMD HyperTransportPCI compatible,总线(bus),
6、总线由CPU控制CPU通过总线访问内存和设备,以及控制在内存和设备之间传输数据独占使用方式总线采用独占使用方式,任何设备若需要直接和内存交换数据,先要申请总线使用权,获得使用权后独占总线进行通信数据交换字符设备CPU与慢速字符设备交换数据时,由CPU控制设备与内存之间的数据交换输入时,CPU从控制器中将数据读到CPU的寄存器中,再写到内存单元输出时,将内存数据读到CPU的寄存器中,再写到控制器的数据寄存器中块设备CPU与某些高速的块设备交换数据时,以DMA方式进行DMA控制器先申请总线使用权,然后控制设备直接与内存传输数据,端口、接口,设备适配器与设备显卡 vs.显示器声卡 vs.音响网卡 v
7、s.网线设备适配器(控制器)通过总线插槽(ISA或PCI等)接入系统总线,端口、接口,出于通用性设计的考虑,计算机硬件结构都提供了一些标准的设备接口,这些接口遵照统一的标准来设计,不同的设备只要遵从同一标准即可通过该接口与系统连接。I/O接口分为两类通用接口如串口、并口、USB接口专用接口IDE(Integrated Device Electronics,集成设备电路)SCSI接口一个I/O接口可以带多个同类型的设备例如一个IDE接口可以带两个IDE磁盘驱动器标准的I/O接口为设备的开发和使用提供了方便,端口、接口,设备资源I/O设备与系统通信必须首先获得一些系统资源I/O端口地址适配器中的每
8、个I/O端口寄存器都有一个唯一的地址,一个适配器所拥有的I/O端口地址的总和称为该设备的I/O范围。如COM1的I/O范围为0 x03f80 x03ff。中断申请号IRQ设备申请中断使用的中断号码缓冲区地址适配器中的缓冲区所映射的内存地址范围DMA通道号设备申请DMA使用的DMA通道号码在安装设备时,由系统为适配器分配这些资源,并保证各个设备的资源彼此不相冲突。,第六章 Linux设备管理,设备管理概述总线、桥、端口、接口设备驱动Linux块设备管理块设备buffer headbio和bio_vecI/O请求队列(Request queue)调度算法deadline、as、cfq、noopLi
9、nux其他设备管理字符设备网络设备/时钟设备/终端设备设备管理相关技术中断DMA,I/O设备的软件结构,设备识别,设备号 主设备号(8bit)major number usually referred to a device driver or controller次设备号(8bit)minor number was a particular device within that controller主设备号标识设备的控制器,次设备号用来区分同一控制器下的不同设备实例主设备号与设备的驱动程序一一对应,而次设备号供驱动程序内部使用devfs:通过devfs(设备文件系统)访问(Linux的新动向
10、)With devfs,a module can register a device by name rather than a major/minor number pair通过一个16bit设备号进行识别为了兼容,devfs可以将major:minor模式转换为唯一的16bit设备号,设备驱动,The hardware device driver直接操控底层硬件熟知底层设备的物理特性register locations,I/O,timing,设备管理方式interrupt,DMA封装对物理设备的操作提供open、close、read、write等操作函数,通用块设备驱动,Generic B
11、lock Driverregister_blkdev(major,dev_name,fops)注册struct gendisk*alloc_disk(int minors);include/linux/genhd.h创建gendisk结构体blk_init_queue(request_fn_proc,spinlock_t)初始化I/O请求队列void add_disk(struct gendisk*disk);使得内核对该块设备可见,访问块设备,Device driver registers itself at driver initialization timeThis adds the d
12、river to the kernels driver tablemapping the device number/devices name(每个设备被视为一个文件)to the block_device_operations structure,第六章 Linux设备管理,设备管理概述总线、桥、端口、接口设备驱动Linux块设备管理块设备buffer headbio和bio_vecI/O请求队列(Request queue)调度算法deadline、as、cfq、noopLinux其他设备管理字符设备网络设备/时钟设备/终端设备设备管理相关技术中断DMA,块设备 硬盘,扇区Sector(扇
13、区)512BSector是磁盘存储的最小物理单位块(block)块(block)由若干个相邻的扇区组成块是对存储空间的逻辑划分块是分区格式化时指定的“最小存储单位”Sblock=2k Ssector(但小于或等于页的大小)常见块大小:512B,1KB,4KB说明扇区:设备的最小寻址单位块:文件系统的最小寻址单位文件系统以块为单位对磁盘进行读/写,Buffer Head结构体(1),bufferThe buffer represents a disk block in memory当磁盘上的一个block调入内存时,其存储在一个buffer中每个buffer和一个block对应一个page可存储
14、一个或多个blockbuffer_head结构体buffer_head是buffer的描述符记录了buffer与block对应关系:来自哪个设备、哪个block记录了内核操作buffer的所需信息:状态、计数等A buffer_head contains all the information necessary to map a physical block to a buffer in physical memory.,Buffer 与 Buffer Head(2),buffer_head结构体(include/linux/buffer_head.h L50)说明b_data指向buffe
15、r在内存的起始地址b_data+b_size即为buffer在内存中的结束地址,Buffer 与 Buffer Head(3),unsigned long b_state;/*buffer state flags*/,bio(block I/O)和bio_vec结构体(1),为了更好地利用内存碎片,一个磁盘block能否对应多个不连续内存片段呢?bio_vec 来描述内存中的片段(segment),这些segment可位于不同的pagebio被引入用来描述一个磁盘block与多个内存片段对应,bio和bio_vec结构体(2),bio结构体(include/linux/bio.h L70),b
16、io和bio_vec结构体(3),bio_vec结构体(include/linux/bio.h L56)描述一个segment片段,buffer_head 与 bio总结,buffer_head描述一个连续内存空间,它与磁盘上一个block对应bio用来描述一个磁盘block与多个内存片段对应bio_vec 来描述内存中的片段(segment),这些segment可位于不同的物理page,访问块设备,通用块设备层(Generic Block Device Layer)request queue,请求队列,Request Queues and Scheduling I/O When a read
17、 or write request traverses the layers from VFS,through the filesystem drivers and page cache,it eventually ends up entering the block device driver to perform the actual I/O on the device that holds the data requested I/O请求队列(I/O request queue)每个块设备拥有自己的I/O request queue进程在对request queue“更新”前,须先对该队
18、列加“锁”attempting to optimizes throughput but does not indefinitely postpone requests.(吞吐率 vs.等待延迟),I/O请求队列,request_queue结构体(include/linux/blkdev.h L287)字段struct list_head queue_head;/指向I/O请求队列头struct request*last_merge;/最近刚合并的请求 elevator_t*elevator;/电梯调度算法(三者之一)struct request_list rq;/read请求队列和write请
19、求队列只要请求队列不为空,对应的块设备驱动就从队列头获取请求,然后处理。在Linux2.6内核,块设备通过在_init()函数中调用request_queue_t*blk_init_queue(request_fn_proc*rfn,spinlock_t*lock)来初始化请求队列.(drivers/block/ll_rw_blk.c L1505),I/O请求,request结构体(include/linux/blkdev.h L108)request_queue中的每一项I/O请求用request结构体描述字段struct bio*bio;/第一个biostruct bio*biotail;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux设备管理 Linux 设备管理 课件

链接地址:https://www.31ppt.com/p-6072073.html