- 3
- 0
- 约2.64万字
- 约 16页
- 2016-12-06 发布于重庆
- 举报
Linux設备分析报告
Linux设备分析报告
杜阳 9811526
浙江大学计算机系98研 duy@isee.zju.edu.cn
[摘要] 在本文中,首先概括了linux设备的基本概念。接着依次介绍了相关的数据结构、初始化流程和设备管理流程,接着主要介绍了如何添加一个字符设备和块设备。在附录中是一个虚拟的字符设备驱动程序,该程序是我和潘刚同学的试验结果,本来我们还打算写一个虚拟的块设备驱动程序,由于时间关系,没有能够完成,非常遗憾,不过主要步骤已经在本文中进行了介绍。
linux设备概述
在概念上一般把设备分为字符设备、块设备。字符设备是指设备发送和接收数据以字符形式的进行;而块设备则以整个数据缓冲区的形式进行。由于网络设备等有其特殊性,实际上系统对它们单独处理。
系统用主设备号(MAJOR)加次设备(MINOR)号来唯一标识一个设备。相同主设备号表示同一类设备,例如都是硬盘;次设备号标识同类设备的个数。所有设备在适当的目录(通常在/dev目录下)下必须有相应的文件,这样字符设备和块设备都可以通过文件操作的系统调用了完成。不同的是,块设备操作经常要和缓冲区打交道,更加复杂一点。系统设备管理的总体框图如下:
主要数据结构
与设备管理有关的主要数据结构如下:
1、登记设备管理
系统对已登记设备的管理是由chrdevs和blkdevs这两张列表来完成的:
/*src\fs\devices.c*/
struct device_struct {
const char * name; //指向设备名称
struct file_operations * fops; //指向设备的访问操作函数集,file_operations定义在
include/linux/fs.h中
};
static struct device_struct chrdevs[MAX_CHRDEV] = {
{ NULL, NULL },
}; //所有系统登记的字符设备列表
static struct device_struct blkdevs[MAX_BLKDEV] = {
{ NULL, NULL },
} //所有系统登记的块设备列表
实际上这两张列表的结构是一样的,但在登记时每个结构元素的值会不同(见初始化部分)。Linux对设备的进行访问时,访问文件系统中相应的文件,通过文件系统和文件的属性描述块,系统可以找到该文件系统或文件对应设备的设备号。在实际访问列表时,以chrdevs[MAJOR][MINOR]或blkdevs[MAJOR][MINOR]形式访问,相同主设备号(MAJOR)的元素中fops的内容相同。文件系统中相关的的数据结构如下:
struct super_block {
kdev_t s_dev; //该文件系统所在设备的设备标志符
…
} //每个文件系统对应一个super_block
struct inode {
kdev_t i_dev; //该文件所在设备的设备标志符通过它可以找到在设备列表中
… 相应设备
} //每个文件对应一个inode
2、I/O请求管理
系统会把一部分系统内存作为块设备驱动程序与文件系统接口之间的一层缓冲区,每个缓冲区与某台块设备中的特定区域相联系,文件系统首先试图存在相应的缓冲区,如未找到就向该设备发出I/O读写请求,由设备驱动程序对这些请求进行处理。因此,需要有相应的数据结构进行管理。
/*src\include\linux\blkdev.h*/
struct blk_dev_struct {
void (*request_fn)(void); //指向请求处理函数的指针,请求处理函数是写设备驱动
程序的重要一环,设备驱动程序在此函数中通过outb向位
于I/O空间中的设备命令寄存器发出命令
struct request * current_request; //指向当前正在处理的请求,它和plug共同维护了该设备
的请求队列
struct request plug; //这是LINUX2.0版本与以前版本的一个不同之处,plug
主要被用于异步提前读写操作,在这种情况下,由于没有特别的请求,为了提高系统性能,需要等发送完所有的提前读写请求才开始进行请求处理,即unplug_device。
st
您可能关注的文档
- LED產品竞争对手分析报告.doc
- LED節能灯基本知识.doc
- LED與LCD基本知识.doc
- LED路燈合同能源管理(EMC)调研报告.doc
- LED產业发展分析-日亚化学LED发展战略分析.doc
- LED路燈调研报告122.doc
- LED電参数采集卡接口通信协议帧格式_V17.doc
- LED電子显示屏幕-基本手册.doc
- LED面板燈技术培训(深圳研一何良珠).doc
- LED基本知識.doc
- 2025-2026学年科普版七年级下册英语Unit7 Being a Smart Shopper素养测评卷(含答案).docx
- 2025-2026学年科普版七年级下册英语Unit10 Lending a Helping Hand素养测评卷(含答案).docx
- 2025-2026学年科普版七年级下册英语Unit11 Rules Matter素养测评卷(含答案).docx
- 2025-2026学年科普版七年级下册英语Unit12 Better Together素养测评卷(含答案).docx
- 2026年中考英语语法选择专题训练(含答案).docx
- 2026中考语文二轮学思并重,涵养君子之德论语十二章、虽有佳肴、大道之行也.docx
- 中考文言文常见文化常识梳理.docx
- 中考语文二轮:内修君子德外尽忠臣心诚子书出师表修身立德主题学习.docx
- 中考语文二轮:不一样的求学路一样的成长梦送东阳马生序劝学主题学习.docx
- 中考语文二轮:《陋室铭》《爱莲说》托物寓意主题学习.docx
原创力文档

文档评论(0)