当前位置:文档之家› LINUX设备驱动读书笔记新版

LINUX设备驱动读书笔记新版

LINUX设备驱动读书笔记新版
LINUX设备驱动读书笔记新版

嵌入式Linux设备驱动开发读书笔记

经过第十二章的学习,我大致了解了linux设备驱动开发的意义所在,在linux 系统中设备被抽象化,系统通过调用标准的驱动接口来实现各种硬件的操作,同时,系统上层对于硬件设备的调用无需关心具体的硬件细节,系统调用设备使用文件的方式进行操作,通过这样的屏蔽,系统以标准和统一的方式去完成硬件的操作,对于硬件设备更新速度越来越快的今天,硬件的更新,只需要去更改驱动就能够实现设备的升级,而不需要去改变上层的应用软件,同时也利于上层和软件和硬件之间开发的分工和合作。

设备驱动最终被添加到内核里,与系统成为一个整体,ARM处理器的指令集与我们通常使用的PC机的X86指令集不同,ARM 的RISC指令集也可以说是一个精简版本的X86指令集,虽然没有X86指令集那么强大的功能,但是同样可以支持LINUX系统的运算,因此基于ARM的LINUX系统需要使用支持ARM指令集的编译器来进行编译,也就是ARM-GCC,在宿主机,也就是X86指令集下使用ARM-GCC编译出来的LINUX系统能够在ARM硬件系统上运行。

设备驱动程序是内核的一部分,因此驱动的稳定对系统的稳定非常重要,设备驱动程序必须为内核提供一个标准的接口,并且为了防止系统过于臃肿,对于某些系统设备驱动要求能够实时的进行加载,对于设备的更新也更加的方便,以安装的方式进行加载。

以下列举我对几种设备驱动编写的理解

1字符设备:

一般应用程序都有一个main入口点,而设备驱动却没有main函数,其实模块在调用insmod命令时会进入设备驱动的module_init函数,在该函数中注册设备,在调用rmmod函数时驱动被卸载,此时入口点为module_exit函数,他们的关系如图

设备被加载之后,系统便能够在内核中调用驱动,在LINUX内核中,dev_t 类型用来保存主设备号和次设备号,dev_t四个字节,其中12bit用于表示主设备号,其余20bit表示次设备号,使用系统函数给设备分配一个设备号,

获得这个设备号之后,便能够通过特定的系统函数来对设备进行注册,当设备成功注册之后,系统就能够通过open和release操作来打开设备和卸载设备。字符设备的操作通过文件的方式来访问,也就是read和write。

2块设备驱动

系统中有部分设备通常要以块的方式进行写入,例如FLASH,IDE硬盘,SCSI 硬盘,光驱等,这些设备跟其硬件特性有关,例如FLASH存储器一般以BLOCK 位单位,对其进行改写必须整块的擦除,然后写入修改后整个BLOCK的数据。

对块设备描述的一个重要结构体是

struct blk_dev_struct{

request_queue_t request_queue;

queue_proc *queue;

void *date;

};

其中request_queue是主体,包含了初始化之后的I/O请求队列,其后通过队列处理函数指针queue进入该程序,辅助找到特定设备的请求队列,作一些私有的操作,这个函数在初始化的时候就要定义好,并赋值给指针queue。对于块设备的读写请求通过generic_file_read()和generic_file_write()来实现。

块设备驱动的编写首先要实例化三个重要的结构体变量

(1)struct device_struct:用于指明设备名称,并且包含和字符设备一样的 file_operations结构体

(2)struct sbull_dev:用于存放设备具体信息。

(3)struct file_operations:包含于struct device_struct中,用于定义块设备内核操作函数的入口。

在这几个变量定义好之后,便可以通过

来获得主设备号,接着,通过

来注册块设备。

在块设备注册好之后,最重要的操作就是request,该操作跟底层相关,对设备的内存空间进行访问。

LCD驱动分析

嵌入式LINUX将显存抽象为Framebuffer,framebuffer好比一个存放水的水池,CUP将运算后的图像数据存放到这个水池中,而LCD驱动的任务就是将这些水池里的水投放到实际的显示器中,真正往LCD的物理显存中写入数据的操作由LCD驱动完成,视频设备通用被抽象为一个文件,一般在/dev/fb0、/dev/fb1等,通过将Framebuffer映射到进程地址空间的方式来使用

了解了系统对LCD的操作,下面开始分析LCD驱动的实现

首先要获得系统定义的标准LCD设备驱动结构体,用于取得相关的操作。

从LCD驱动的入口点开始分析

S3c2410fb_init

该函数是系统注册LCD设备时调用的函数

S3c2410fb_cleanup这个函数完成LCD设备的注销,这里调用了framebuffer的注销函数,并且调用release_mem_region函数释放IO端口。

S3c2410fb_probe 是非常重要的一个函数,它完成设备硬件初始化,检测校验,创建LCD设备对象等任务。

S3c2410fb_suspend函数将LCD设备挂起,比如系统进入休眠或者待机模式,将LCD设备挂起有利于实现低功耗给移动设备节省电能

S3c2410fb_stop_lcd函数实际上是将LCD的一些中断进行屏蔽,并且重新映射空间的资源信息

S3c2410fb_resume函数主要用于将LCD设备重新开启,把设备从suspend的状态转换到激活状态

最后,将LCD驱动添加到内核中编译,再到ARM开发板上运行加载驱动模块,实现LCD的显示。

LCD驱动的工作实际上非常简单,CPU把图像数据放到Framebuffer中,对于CPU来说framebuffer就是他的显示器,CPU不用关心这些数据怎么被显示到LCD上,将显示数据搬运到LCD中实际上是由LCD驱动去完成的,在s3c2440处理器中自带LCD控制器,这种LCD控制器具有LCD驱动的标准接口,并且通过完成相关的LCD寄存器配置就能够实现不同分辨率,色深,刷新率的显示效果,LCD控制器通过DMA通道直接从framebuffer的内存区域搬运数据到LCD 显示屏中,无需占用太多的CPU时间,占用的仅仅是总线贷款而已,因此LCD 驱动的主要任务就是从系统获得相关的配置信息,经过计算来配置LCD控制器的寄存器,从而实现具体的显示任务。(*^__^*) 嘻嘻……

Linux设备驱动程序举例

Linux设备驱动程序设计实例2007-03-03 23:09 Linux系统中,设备驱动程序是操作系统内核的重要组成部分,在与硬件设备之间 建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,对硬件设 备进行打开(open)、关闭(close)、读写(read/write)等操作。通过分析和设计设 备驱动程序,可以深入理解Linux系统和进行系统开发。本文通过一个简单的例子 来说明设备驱动程序的设计。 1、程序清单 //MyDev.c 2000年2月7日编写 #ifndef __KERNEL__ #define __KERNEL__//按内核模块编译 #endif #ifndef MODULE #define MODULE//设备驱动程序模块编译 #endif #define DEVICE_NAME "MyDev" #define OPENSPK 1 #define CLOSESPK 2 //必要的头文件 #include //同kernel.h,最基本的内核模块头文件 #include //同module.h,最基本的内核模块头文件 #include //这里包含了进行正确性检查的宏 #include //文件系统所必需的头文件 #include //这里包含了内核空间与用户空间进行数据交换时的函数宏 #include //I/O访问 int my_major=0; //主设备号 static int Device_Open=0; static char Message[]="This is from device driver"; char *Message_Ptr; int my_open(struct inode *inode, struct file *file) {//每当应用程序用open打开设备时,此函数被调用 printk ("\ndevice_open(%p,%p)\n", inode, file); if (Device_Open) return -EBUSY;//同时只能由一个应用程序打开 Device_Open++; MOD_INC_USE_COUNT;//设备打开期间禁止卸载 return 0; } static void my_release(struct inode *inode, struct file *file)

林语堂《生活的艺术》读书笔记

林语堂《生活的艺术》读书笔 记 人生之旅,快乐无限在图书馆漫无目的地享受群书的包围时,一个不经意的抬头,我的眼光落在了《生活的艺术》这几个字上。生活艺术,这两个字深深地吸引了我,引起了我的好奇心与欲望。于是,我进一步走进它,静静地翻开了目录,神奇而又安静的心 灵之旅启程了 人生之旅,快乐无限 在图书馆漫无目的地享受群书的包围时,一个不经意的抬头,我的眼光落在了《生活的艺术》这几个字上。“生活”“艺术”,这两个字深深地吸引了我,引起了我的好奇心与欲望。于是,我 进一步走进它,静静地翻开了目录,神奇而又安静的心灵之旅启 程了…… 近来正十分关注怎样享受生活的我,无疑地我对《生命的享受》这几章很感兴趣。我来到了角落边的一张沙发上,微笑地与那些 文字融在了一起…… 文中讲到了快乐问题,有一处文字引起了我的思考——“惠 特曼说:‘我这样地做一个人,已经满意了。’所以我也以为我 现在活着,并且也许还可以再活几十年,人类的生命存在着,那 就已经够了。这样看法,这个问题便变为极简单,而不容有两个

答语,就是人生的目的除了去享受人生外,还有什么呢?”是的,人的一生说长不长,说短不短。活着的人,每个人都有不同的活法。开心是一天,不开心也是一天,为什么不开开心心地过每一 天呢?开心地活着更有价值。日子一天一天地过,我们一天一天 地重复着生活,日起日落,其实生活就这么简单。但是如何从简 单中得到乐趣呢?那就要用心去挖掘,去享受每一个美的片段。“生活中不是缺少美,而是缺少发现”,这句话大家都耳熟能详,也不难理解其中的含义。但是能真正做到的有几个呢?在这个物 质诱惑的时代,很多人都茫然地追求着金钱、地位。是的,追求 自己要的东西固然没错,但是有多少人,等到他真正成为富翁时,才知道那并不是自己想要的……所以,你要明确自己要的到底是 什么。生活其实没必要太多的强求,开心就好。 快乐并不难寻。它隐身地藏在了天空、花草、树木等大自然 的一切中,还隐藏在诗歌、音乐、舞蹈等艺术中,更隐藏在亲情、友情、爱情等情感中……偶尔地发呆,静静地沉思,轻松地阅读,放声地歌唱……这都是享受。只要你用心去享受,快乐无处不在。生活其实很美好。那些看不见的快乐。围绕在你身旁的每一个角落,它们和你只隔着一层薄薄的面纱,它们等待着你去掀开而一 睹快乐的芳容。 我记得朱自清曾《荷塘月色》里写到:“酣眠固不可少,小睡也别有风味。”惊天动地的生活能给我们带来快乐,平凡恬淡的 日子也一样能给我们带来快乐;荣华富贵能使人快乐,粗茶淡饭

(整理)嵌入式系统的以太网接口设计及linux内核网络设备驱动.

嵌入式系统的以太网接口设计及linux驱动 1 以太网概述 以太网(Ethernet)是当今局域网采用的最通用的通信协议标准。在以太网中,所有计算机被连接在一条电缆上,采用带冲突检测的载波侦听多路访问(CSMA/CD)方法,采用竞争机制和总线拓扑结构。基本上,以太网由共享传输媒体,如双绞线电缆或同轴电缆、多端口集线器、网桥或交换机构成。 按照OSI(Open System Interconnection Reference Model,开放式系统互联参考模型)7层参考模型,以太网定义的是物理层(PHY)和数据链路层(对应以太网的MAC层)的标准。 2 嵌入式处理器上扩展以太网接口 以太网接口控制器主要包括MAC乘PHY两部分,如图1所示为嵌入式处理器集成MAC层控制器。 MAC层控制器和PHY的连接是通过MII、RMII等接口实现的。在IEEE802的标准系列中,数据链路层包括LLC和MAC两个子层。其中MAC负责完成数据帧的封装、解封、发送和接受功能。PHY层的结构随着传输速率的不同而有一定的差异。对于1OBaseT等网络,从以太网PHY芯片输出的就是传输所需的差分信号。但是还需要一个网络隔离变压器组成图2的结构。网络隔离变压器可起到抑制共模干扰、隔离线路以及阻抗匹配等作用。 本文介绍一种新款网络接口芯片DM9000A,它可以很方便的实现与嵌入式CPU的接口,实现扩展以太网口的功能。DM9000A是中国台湾DAVICOM公司推出的一款高速以太网接口芯片,其基本特征是:集成10/100M物理层接口;内部带有16K字节SRAM用作接收发送的FIFO缓存;支持8/16bit两种主机工作模式:

悲惨世界读书笔记摘抄

悲惨世界读书笔记摘抄 《悲惨世界》的上、中、下三本,加起来有1100多页,不过看完了同样也很有成就感,让我有点困惑的是书名怎么是“悲惨世界”,主人公是生活在一个动荡不安的社会中(拿破仑战争前后十几年),年轻时候的经历有些凄苦,出狱之后的蜕变,和老年的生活,总之我个人感觉用“悲惨”有点…,但我也说不上来用什么词更好。本文是品才网小编精心收集的悲惨世界的读书笔记,仅供参考! 悲惨世界读书笔记摘抄这个可怜的人把身子转向听众与法官,面孔上那种微笑,当时在场目击的人到现在想起来还觉得不舒服。那是胜利的笑容,也是无望的笑容。“现在你们知道了,我才是让阿让。”他说。 “我不想再扰乱法庭了,”冉阿让接着说道,“既然不抓我,那我可以走了,我还需要去做好几件事。检察官先生知道我是什么人,也知道我要去哪里,他每时每刻都可以让人来抓我。” 他向门口走过去,谁也没又说一句话,谁都没有伸出胳膊阻拦,大家都向两边分开。那时,他好像具有某种神威,逼迫群众在一个人跟前后退,都闪到两边。他缓缓地穿过人群。到后来一直没有人知道究竟是谁推开的门,可是有一点是毫不怀疑的,他走到门前的时候,门已经开了。他到了门

口,又会转过身说道: “检察官先生,我等待您的处理。” 随后,他又对众人说:“你们每一个人,你们在这里的每一个人,都认为我值得可怜,是不是?上帝呀!我一想起自己刚才险些做出的事,就觉得自己值得钦佩。但是,我希望不曾发生过这些事。” 他走出去,又有个人将门关上了,像方才打开一般;要知道,作风正派的人,坚信在群众里肯定能找到愿意为他服务的人。 还没有一个钟头,陪审团就宣布撤除对尚马蒂厄的一切控告,并且立刻释放,尚马蒂厄走了,他感到莫名其妙,认为每一个人都是疯子,一点儿也不理解所见到的场景。 马德兰的视线与沙威的视线相触时,沙威纹丝不动,他没有走近,可是他立即变得非常凶残了。他的任何感情方面,都比不上得意之情显得更骇人。魔鬼重新找到它要投进地狱的人,就是那个样子。他坚信肯定能逮住冉阿让,心情就完全显在面孔上了。 我们感到非常可惜,无法掩盖这样的一个情况,只因为“他做过苦役犯”这句话,差不多所有人都将他丢弃了。他所做过的一切善举,还不到两个钟头就会被人全部忘记,而他只是一个“苦役犯”了。 (此时马德兰藏了起来,修女堵住沙威)这位森普利斯修

一个简单的演示用的Linux字符设备驱动程序.

实现如下的功能: --字符设备驱动程序的结构及驱动程序需要实现的系统调用 --可以使用cat命令或者自编的readtest命令读出"设备"里的内容 --以8139网卡为例,演示了I/O端口和I/O内存的使用 本文中的大部分内容在Linux Device Driver这本书中都可以找到, 这本书是Linux驱动开发者的唯一圣经。 ================================================== ===== 先来看看整个驱动程序的入口,是char8139_init(这个函数 如果不指定MODULE_LICENSE("GPL", 在模块插入内核的 时候会出错,因为将非"GPL"的模块插入内核就沾污了内核的 "GPL"属性。 module_init(char8139_init; module_exit(char8139_exit; MODULE_LICENSE("GPL"; MODULE_AUTHOR("ypixunil"; MODULE_DESCRIPTION("Wierd char device driver for Realtek 8139 NIC"; 接着往下看char8139_init( static int __init char8139_init(void {

int result; PDBG("hello. init.\n"; /* register our char device */ result=register_chrdev(char8139_major, "char8139", &char8139_fops; if(result<0 { PDBG("Cannot allocate major device number!\n"; return result; } /* register_chrdev( will assign a major device number and return if it called * with "major" parameter set to 0 */ if(char8139_major == 0 char8139_major=result; /* allocate some kernel memory we need */ buffer=(unsigned char*(kmalloc(CHAR8139_BUFFER_SIZE, GFP_KERNEL; if(!buffer { PDBG("Cannot allocate memory!\n"; result= -ENOMEM;

《生活的艺术》读书笔记

《生活的艺术》读书笔记 《生活的艺术》是1937年林语堂在美国专门从事创作后发表 的第一本著作。其后成为美国当时的畅销书,并为翻译成十余种 语言,其中当然包括中文。林语堂在这本书中表达了他个人对生 活方方面面的看法与见解。在中国大陆出版的版本(因为林语堂在书中的某些观点与 《生活的艺术》是1937年林语堂在美国专门从事创作后发表 的第一本著作。其后成为美国当时的畅销书,并为翻译成十余种 语言,其中当然包括中文。林语堂在这本书中表达了他个人对生 活方方面面的看法与见解。在中国大陆出版的版本(因为林语堂在书中的某些观点与马克思主义发生一些冲突,编者在整理出版过 程中对原著进行了一定的删改)分为十四章,每章都会有一个特定的 话题,在前几章(分别是1、the awakening 2、views of humankind 3、our animal heritage 4、on being human)中林语堂讲述了他对于人类的总的看法。接下来的部分都从生活的各个 方面发表林语堂的个人见解。其中触及了大部分人都避开的话题,如有关性方面的问题。在第八章的第三部分on sex appeal 中林 语堂毫不忌讳地说出了自己对性的观点。其中有这么一句话:Confucius reduced the great desire of human beings into two:alimentation and reproduction, or insimpler terms, food

and drink and woman。这其实与我们平时所接触到的典型中国学生读物相比林语堂的这本著作显得很不“正统”。不过对于大学生来说,却是一种思辨的享受,只有接受不同的思想再经过自己的独立思考才能在阅读学习中学到东西。除此之外书中还有一些颠覆传统的思想观点。比如说书中有一部分说到自古以来不吸烟者往往在烟民面前有某种道德上的优势。针对这一观点林语堂根据自己失败的戒烟经历对这种观点进行分析并反驳了这一观点。(我想也许是林语堂自己是个大烟民的缘故吧) 该书的另一大特点就是林语堂在表述自己的观点之时往往是旁征博引,从中西两方面进行比较论述。比如在Americanvices 中林语堂对中国人和美国人对时间不同见解进行了比较。美国是依靠发达的资本主义经济实现繁荣的。与之配套的成熟的市场经济要求系统高效率的社会分工。社会中一旦一道工序出现问题时就会引起社会经济的混乱。因此美国人十分强调效率,时间观念强。与之相比中国在这一方面来说随便得多。在中国人看来,美国人做客都要计划的做法简直就想把朋友亲人之间的亲密搞得跟铁板一样死板而毫无生趣。书中在涉及这一方面方面时往往都是以风趣幽默的语言为主。其中有一段写到了中国人和美国人挖隧道的不同,美国人往往在挖隧道之前要进行一系列勘探,力求两个施工队顺利准确在山体里会合。相比之下中国人说干就干,到最后两个负责一个项目的施工队挖出了两条隧道。 总体来说这是一本极具趣味性又不凡思想深度的读物,如果

《一问一世界》XX字的读书笔记

《一问一世界》XX字的读书笔记201x年是杨澜入行20年,也是《杨澜访谈录》10周年的纪念,这样的“XX”,对杨澜来说,实在是美丽的巧合。杨澜说:“201x年也好,20 年也好,在人生中不长也不短。回头一看,其实一直在匆匆忙忙地赶路,顾不上停下来。借这个机会我停下来,回头看看走过的路,再望望前面的天空。”她的这个“停下来”,就催生了《一问一世界》。这是杨澜入行20年的传记作品,展现了她非同寻常的媒体生涯;读者从中也可以看到杨澜20年来的生命跨越和岁月流转,以及她对世界的处置方式和价值观。 在《一问一世界》中,杨澜对自己20年的媒体人生进行了审视与展望:以提问为生的她,对“女性”有了理性的界定,对“问”有了执著的回归。杨澜在序言中强调:“出现在本书中的六个问题是从一万多个问题中挑选出来的,它们基本涵盖了《杨澜访谈录》访谈嘉宾集中的若干领域:国际政治、商业、文化、女界、体育、艺术等。我希望经由这一个个问题,串联起给我留下深刻印象的采访,亦希望以这些人物的谈话去接近21世纪第一个十年我们共同的记忆。” 在千万里、千百遍的“问”里,杨澜对世界、人生有了更多的认识和思考。她说,在采访了500多位精英人士后,自己对成功的定义有了质疑:到底什么算成功?更成功又怎样?我们的社会是不是患了“成功综合征”?为了“成功”,

我们常常忘记自己的初衷和内心真正的渴望;为了“成功”,我们忽略了路边的风景,忽略了身边的人,我们能不能停下脚步给他们一个微笑,给他们一个拥抱?生在这个追求成功的年代,许多时候,我们并不知道成功的意义何在。那么到底何为成功?杨澜没有直接给出答案,只说自己曾收到一个短信,“真正的成功,不是赚了多少钱或者做了多高的官,而是有一天你除去这一切身份的时候,还有人愿意在你身边对你微笑。” 在“问”的世界里,杨澜提出了自己对幸福、挫折的理解。她说,我相信幸福要靠运气,但更要靠能力:梦想的能力、创造的能力、感受的能力和分享的能力。总之三个字:幸福力——追求和给予幸福的力量。我要的幸福是丰富而有价值的生命,是充满爱和温暖的情感,请不要让我取舍。她说,当你为了一个理想去努力奋斗,而且经历过挫折的时候,我认为你对整个世界的理解,会更深一步……这是人生非常宝贵的财富,你经历过很大的欢喜,也经历过很大的挫折,但是你还是能够站起来,重新回到你要做的事情上来,我觉得这是对一个人很大的考验。人生于世,谁没有追求,谁不希望成功、祈求幸福?但何为幸福,幸福与成功有何关系,幸福的感受如何,每个人都有不同的答案。在每一“问”中,杨澜发现别样的世界,引发更新的思考。 20年过去了,杨澜依然散发着迷人的光彩,她用自己的

生活的艺术读后感

《生活的艺术》读后感 作者:唐思恺 生容易,活容易,生活不容易。生活对于现代得人似乎非常难,生活让我们很累。人们不停地奔波,因为我们不断的追求。 《生活的艺术》是1937年林语堂在美国专门从事创作后发表的第一本著作。其后成为美国当时的畅销书,并为翻译成十余种语言,其中当然包括中文。林语堂在这本书中表达了他个人对生活方方面面的看法与见解。在中国大陆出版的版本(因为林语堂在书中的某些观点与马克思主义发生一些冲突,编者在整理出版过程中对原著进行了一定的删改)分为十四章,每章都会有一个特定的话题。 文中讲到了快乐问题,有一处文字引起了我的思考——“惠特曼说:‘我这样地做一个人,已经满意了。’所以我也以为我现在活着,并且也许还可以再活几十年,人类的生命存在着,那就已经够了。这样看法,这个问题便变为极简单,而不容有两个答语,就是人生的目的除了去享受人生外,还有什么呢?”是的,人的一生说长不长,说短不短。活着的人,每个人都有不同的活法。开心是一天,不开心也是一天,为什么不开开心心地过每一天呢?开心地活着更有价值。日子一天一天地过,我们一天一天地重复着生活,日起日落,其实生活就这么简单。但是如何从简单中得到乐趣呢?那就要

用心去挖掘,去享受每一个美的片段。“生活中不是缺少美,而是缺少发现”,这句话大家都耳熟能详,也不难理解其中的含义。但是能真正做到的有几个呢?在这个物质诱惑的时代,很多人都茫然地追求着金钱、地位。是的,追求自己要的东西固然没错,但是有多少人,等到他真正成为富翁时,才知道那并不是自己想要的……所以,你要明确自己要的到底是什么。生活其实没必要太多的强求,开心就好。 我们不去追求完美的理想,不去追寻那势不可得的事物,不去穷究那些不可得知的东西……最重要的问题是怎样去调整我们的人生,使我们得以和平地工作,旷达的忍耐,幸福的生活。 我们要学会享受生活,热爱生活,积极的过好每一天。第一遍读《生活的艺术》或许我涉世未深,感悟谈不上,感触有一点。或许30 年后,40 年后还可以再读读它,那时候,是否会有更深的体会……

Linux网络设备驱动开发实验

实验三:Linux网络设备驱动开发实验 一、实验目的 读懂linux网络设备驱动程序例子,并且实际加载驱动程序,加载进操作系统以后,会随着上层应用程序的触发而执行相应动作,具体执行的动作可以通过代码进行改变。 ●读懂源码及makefile ●编译驱动程序 ●加载 ●多种形式触发动作 二、预备知识 熟悉linux驱动基本原理,能读懂简单的makefile。 三、实验预计时间 80-120分钟左右 四、驱动程序部分具体步骤 要求读懂一个最简单的驱动程序,在驱动程序的诸如“xxx_open”、“xxx_read”等标准接口里面加入打印语句。可参考多模式教学网上的驱动样例。 五、用于触发驱动动作的应用程序及命令 驱动程序就是以静态的标准接口库函数形式存在,网络设备驱动会受到两大类情况的触发,一种是linux里面的控制台里面的命令,另一种是套接口应用程序,首先要搞清都有哪些具体的命令和应用程序流程,应用程序参考多模式教学网的例子。 六、运行测试 提示:需要将驱动程序以dll加载进系统中,并且触发应用程序调用各种文件操作的接口函数,使得驱动有所动作,打印出相关信息。 1.编译驱动: cd /某某目录/vnetdev/ make clean make 2.加载驱动与打开网卡: insmod netdrv.ko

ifconfig vnet0 up 3.运行应用程序 ../raw 4.通过命令“修改网卡MTU”触发驱动执行动作: ifconfig vnet0 mtu 1222 5.显示内核打印: cat /var/log/messages 6.卸载: ifconfig vnet0 down rmmod netdrv.ko 7.修改代码中的某些函数中的打印信息,重新试验上述流程。 至此大家都应该真正理解和掌握了驱动程序-操作系统-应用程序的三者联动机制。 七、实验结果 由图可知能正常加载网卡驱动,并且能够打印调试信息。

世界史读书笔记

世界史读书笔记 导语:在中国出土的青铜器也很多,铜与锡来自何处?走笔至此,想起一个中国城市,名叫无锡,市内还有一山,名叫锡山,这是很有意思的。以下小编为大家介绍世界史读书笔记文章,仅供参考! 世界史读书笔记在一个偶然的机会下我阅读了《失落的国度》这本书。西琴这部《失落的国度》,探讨的主要是印第安文明与苏美尔文明之间关系。他认为美洲的文明仍然只是苏美尔文明在美洲的一个分支,同样是由阿努纳奇人建立的。他非常精确地将阿努纳奇人到达美洲的时间定在了公元前3113年,这是玛雅最后一个纪元开始的时间。这些来自中东蓄须人来到这里,他们的目标只有一个,即是挖矿,一个是金矿,一个是锡矿。前者用于解救尼比鲁星的生态危机,这也是阿努们来到地球的主要目标;后者则用于制造青铜器。其实人类采用青铜本身就是件很奇怪的事,在不知金属冶炼为何物之时,竟能掌握复杂的青铜冶炼工艺,且在全世界遍地开花,真是够神奇的。人类对于工具的采用,一般先是从简单的、容易得到的、不脱离自然形态的物件开始,像青铜这样如此复杂,需要融化两种金属,还得按照一定比例的合金,人类会进行长久的探索才能得到。人类却尚在蒙昧时期,刚从石器时代进入金融时代,就得到如此坚硬

的合金,如无外力的帮助,是令人难以想象的。 在中国出土的青铜器也很多,铜与锡来自何处?走笔至此,想起一个中国城市,名叫无锡,市内还有一山,名叫锡山,这是很有意思的。无锡何以名,最流行的一种说法是此地本产锡,一直开采到汉代,锡矿枯竭,是称无锡。无论如何,无锡与锡有关是基本可以定论的,且现在无锡确已无锡。难道此处之锡都用作制作青铜去了吗?中国还有一处盛产锡,那就是云南的个旧,现在仍然还在产。吊诡的是,此两处皆非中国青铜文化的中心,而是处于边缘地带,作为青铜文化中心的中原,则并不产铜与锡。那么就有一个问题,这些矿石是如何运至中原的?想想当时的运输条件,真是个艰巨的工程。当然,这是题外话。不过,如果有人做一点研究,会取得很有趣的成果的。 回过头来再说《失落的国度》。书中还有一处让我感触颇深的是美洲的巨石文化,随处可见的石制建筑,很是让人惊叹。特别是在蒂华纳科,这座位于的的喀喀湖边的神秘高原之城,巨大而坚硬的石头像豆腐一样,被人任意地切割,砌成各式各样的形状,堪称鬼斧神工。即使以现今的技术,亦不一定能达成。那么数千年前的印第安人,是以何种手段做到的呢?总不会像现在一些研究者认为的,也如埃及金字塔那样,是由数以十万计的平民,以肩挑背扛的方式,一点一点地砌成的吧?其实,类似的奇迹在美洲这块神秘的大陆

Linux设备驱动程序学习(18)-USB 驱动程序(三)

Linux设备驱动程序学习(18)-USB 驱动程序(三) (2009-07-14 11:45) 分类:Linux设备驱动程序 USB urb (USB request block) 内核使用2.6.29.4 USB 设备驱动代码通过urb和所有的 USB 设备通讯。urb用 struct urb 结构描述(include/linux/usb.h )。 urb以一种异步的方式同一个特定USB设备的特定端点发送或接受数据。一个USB 设备驱动可根据驱动的需要,分配多个 urb 给一个端点或重用单个 urb 给多个不同的端点。设备中的每个端点都处理一个 urb 队列, 所以多个 urb 可在队列清空之前被发送到相同的端点。 一个 urb 的典型生命循环如下: (1)被创建; (2)被分配给一个特定 USB 设备的特定端点; (3)被提交给 USB 核心; (4)被 USB 核心提交给特定设备的特定 USB 主机控制器驱动; (5)被 USB 主机控制器驱动处理, 并传送到设备; (6)以上操作完成后,USB主机控制器驱动通知 USB 设备驱动。 urb 也可被提交它的驱动在任何时间取消;如果设备被移除,urb 可以被USB 核心取消。urb 被动态创建并包含一个内部引用计数,使它们可以在最后一个用户释放它们时被自动释放。 struct urb

struct list_head urb_list;/* list head for use by the urb's * current owner */ struct list_head anchor_list;/* the URB may be anchored */ struct usb_anchor *anchor; struct usb_device *dev;/* 指向这个 urb 要发送的目标 struct usb_device 的指针,这个变量必须在这个 urb 被发送到 USB 核心之前被USB 驱动初始化.*/ struct usb_host_endpoint *ep;/* (internal) pointer to endpoint */ unsigned int pipe;/* 这个 urb 所要发送到的特定struct usb_device 的端点消息,这个变量必须在这个 urb 被发送到 USB 核心之前被 USB 驱动初始化.必须由下面的函数生成*/ int status;/*当 urb开始由 USB 核心处理或处理结束, 这个变量被设置为 urb 的当前状态. USB 驱动可安全访问这个变量的唯一时间是在 urb 结束处理例程函数中. 这个限制是为防止竞态. 对于等时 urb, 在这个变量中成功值(0)只表示这个 urb 是否已被去链. 为获得等时 urb 的详细状态, 应当检查 iso_frame_desc 变量. */ unsigned int transfer_flags;/* 传输设置*/ void*transfer_buffer;/* 指向用于发送数据到设备(OUT urb)或者从设备接收数据(IN urb)的缓冲区指针。为了主机控制器驱动正确访问这个缓冲, 它必须使用 kmalloc 调用来创建, 不是在堆栈或者静态内存中。对控制端点, 这个缓冲区用于数据中转*/ dma_addr_t transfer_dma;/* 用于以 DMA 方式传送数据到 USB 设备的缓冲区*/ int transfer_buffer_length;/* transfer_buffer 或者 transfer_dma 变量指向的缓冲区大小。如果这是 0, 传送缓冲没有被 USB 核心所使用。对于一个 OUT 端点, 如果这个端点大小比这个变量指定的值小, 对这个USB 设备的传输将被分成更小的块,以正确地传送数据。这种大的传送以连续的 USB 帧进行。在一个 urb 中提交一个大块数据, 并且使 USB 主机控制器去划分为更小的块, 比以连续地顺序发送小缓冲的速度快得多*/

linux设备驱动中常用函数

Linux2.6设备驱动常用的接口函数(一) ----字符设备 刚开始,学习linux驱动,觉得linux驱动很难,有字符设备,块设备,网络设备,针对每一种设备其接口函数,驱动的架构都不一样。这么多函数,要每一个的熟悉,那可多难啦!可后来发现linux驱动有很多规律可循,驱动的基本框架都差不多,再就是一些通用的模块。 基本的架构里包括:加载,卸载,常用的读写,打开,关闭,这是那种那基本的咯。利用这些基本的功能,当然无法实现一个系统。比方说:当多个执行单元对资源进行访问时,会引发竞态;当执行单元获取不到资源时,它是阻塞还是非阻塞?当突然间来了中断,该怎么办?还有内存管理,异步通知。而linux 针对这些问题提供了一系列的接口函数和模板框架。这样,在实际驱动设计中,根据具体的要求,选择不同的模块来实现其功能需求。 觉得能熟练理解,运用这些函数,是写号linux设备驱动的第一步。因为是设备驱动,是与最底层的设备打交道,就必须要熟悉底层设备的一些特性,例如字符设备,块设备等。系统提供的接口函数,功能模块就像是工具,能够根据不同的底层设备的的一些特性,选择不同的工具,方能在linux驱动中游刃有余。 最后就是调试,这可是最头疼的事。在调试过程中,总会遇到这样,那样的问题。怎样能更快,更好的发现并解决这些问题,就是一个人的道行咯!我个人觉得: 发现问题比解决问题更难! 时好时坏的东西,最纠结! 看得见的错误比看不见的错误好解决! 一:Fops结构体中函数: ①ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); 用来从设备中获取数据. 在这个位置的一个空指针导致 read 系统调用以-EINVAL("Invalid argument") 失败. 一个非负返回值代表了成功读取的字节数( 返回值是一个 "signed size" 类型, 常常是目标平台本地的整数类型). ②ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); 发送数据给设备. 如果 NULL, -EINVAL 返回给调用 write 系统调用的程序. 如果非负, 返回值代表成功写的字节数 ③loff_t (*llseek) (struct file *, loff_t, int); llseek 方法用作改变文件中的当前读/写位置, 并且新位置作为(正的)返回值. loff_t 参数是一个"long offset", 并且就算在 32位平台上也至少 64 位宽. 错误由一个负返回值指示. 如果这个函数指针是 NULL, seek 调用会以潜在地无法预知的方式修改 file 结构中的位置计数器( 在"file 结构" 一节中描述). ④int (*open) (struct inode *, struct file *);

林语堂《生活的艺术》读后感

追逐梦想乐享生活 ——读林语堂《生活的艺术》有感“秋风萧瑟,人生已到枫叶初红的时期。余下的季节只有冬。但人生只有一个四季的轮回。冬天过了,人生也就结束了。贮藏再多,也没有用武之地。每个人年轻的时候,是应该拼搏的,但无论结果怎样。人到老了,都有休息的权利。有儿女绕膝得享天伦之乐的时刻。人生秋天的美丽,不该带着伤感去缅怀,不该带着不甘继续奋斗,到了这个季节,就美丽的享受一次。” 生活是什么?如何才能更高质量的生活?我们每天都在生活,我们有没有对生活有深层次的感悟?在林语堂先生的《生活的艺术》一书中,作者以自身几十年的经历告诉我们,工作之余、责任之外如何提高生活的质量、过上有品位的生活,即享受生活。对一般人而言,为了追逐梦想去努力工作,往往会以牺牲生活质量为代价,即追逐梦想会与享受生活存在冲突,但本书更多地是告诉我们,对理想的追求必须以现实生活为基础,要以快乐为原则,即“快乐工作,快乐生活”。 感悟一:快乐生活是一种心境 荣华富贵使人快乐,粗茶淡饭也能使人快乐。快乐生活不分富贵贫贱;快乐与否,取决于我们的心境。工作之余,放飞心情,去与大自然亲密接触,感受世界的神奇与魅力,这是一种快乐!空闲之余,多陪陪亲人、朋友,用心去倾听、交流,感受人生社会的千姿百态,

这也是一种快乐!对工作充满激情与热血,专注工作、一丝不苟,每天充实地工作,实现自我人生价值,这还是一种快乐!当我们遭遇挫折,事业、感情不顺时,我们跌倒了爬起来,从挫折中汲取经验从而成长,这也是一种快乐!其实,生活中充满了正能量,只不过需要我们用敏锐的眼睛去捕捉,并用心去感悟。每个人在不同的心境下,思考的事情的角度、处理事情的方法,以及产生的结果都会有巨大的差异。正所谓佛语“相由心生,境随心转”,意思是一个人所处的环境及境遇会随着心境的转变而转变。我们相信,以乐观积极的心境对待生活,生活也会给你带来幸福与快乐。 感悟二:在生活的同时享受生活 社会在发展进步,同时人们的生活节奏在加快。人们行走匆匆,穿梭于街头巷尾,为了生活而疲劳奔命。对很多打工一族来说,也许已经习惯了熬夜加班、外卖盒饭;自己辛辛苦苦工作大半辈子,可能只够在一线城市买套房子。在很多人眼里,生活,逐渐变成了一个结果,一个目标,很多人为了生活而生活,生活也失去了其本质的意义与价值。生活应当是快乐的,人们应当在生活中享受生活,及时行乐。享受生活不代表放纵自己,要有一个度。 感悟三:珍惜你最宝贵的财富,时间 在林语堂的文字里,生活不仅包含着喜悦和光明,还包含着一丝淡淡哀愁的阴影,生活快乐的阳光与忧愁的暗影相随,人生就是这样调和五味杂陈,待我们细细品味。林先生更多地将生命的悲剧性视为

《一问一世界》读后感【精品】

《一问一世界》读后感 当细细地品读完一本名著后,大家心中一定有很多感想,是时候写一篇读后感好好记录一下了。那么读后感到底应该怎么写呢?下面是整理的《一问一世界》读后感,希望对大家有所帮助。 近些日子终于把妮子学姐的《一问一世界》看完了,由于自己一直很懒惰,经常性捡了西瓜丢了芝麻式的学习,导致对很多学科知识真的不够透彻,以后要像杨晓哲学习,看完一本书,必须要总结。这个好习惯,慢慢养成。一直都很欣赏杨澜,对于这本书,发表下个人看法,初略浅谈,如果有误,还望海涵。 对于杨澜来说,某种意义上,世界是用来问的……在这本书中,杨澜将告诉你——她从 0到20xx年的生命跨越和岁月流转,与基辛格,克林顿,布莱尔,老布什,李光耀等高端传奇人物的交往,又如何在人生每个节点自由潇洒地转换,以及对“赢”的重新理解和体悟,20年的媒体生活。 生活大致平静,心中总有波澜。作为一名中国女性,她是一名出色的CEO,是一个优秀的主持人,是一个好妻子,更是一个好女儿,好媳妇,还是孩子的好妈妈。我欣赏,欣赏她在工作出色的同时把家庭经营得如此温馨和谐,采访了数百位世界政要和各界风云人物的同时还的中国公益慈善大使,创建了中国第一个以历史为主题的卫星的同时担任北京申奥形象大使和上海世博会形象大使。这一系列的头衔,不得不说,她很厉害,很优秀,以至于是我,甚至更多女孩学习的榜样。 这本书总共包括六个问题,他们基本涵盖了访谈嘉宾集中的若干领域:国际政治,商业,文化,娱乐,女界,体育,这一个个问题,串联着深刻的印象,成为世纪第一个十年我们共同的记忆。一直都觉得,交际也是一门艺术,谈吐更是这门艺术的灵魂。如何把自己的知识更好的告诉给更多人,这需要每个人的知识结构内化以及睿智的判断与选择,好比教育,更像教师,这引起的的一个反思,如何做个有特色的老师?如何在保持自己个性风格的同时又能兼顾到学习对你的热爱与尊敬?如何把课本上的知识像陈鹤琴老先生说的“活教育”一样引出来?特别是西部那些贫困山区的孩子,国家及领导又如何出谋划策做到东西部统一?真教育,好教育,活教师是陶行知老先生一生的教育追求,我们应该思考,学习,更应该行动。 一直在问自己,我是谁?我从哪里来?要到哪里去?人类对于自我和世界的认知,似乎一直在发问。有时候,人的好奇心,无药可救。 一沙一世界,一叶一如来。 最后,留下了一个问题,值得自己思考: 生命有无数的可能性,我的梦想还在沉睡,为什么不把它唤醒? 《一问一世界》作者杨澜、朱冰。初读之下,我认为是一本值得读的书,由于周末刚买,书还没读完,先谈此书外观设计。

《生活的艺术》读书笔记

2011年3月12日《生活的艺术—生活的享受》林语堂 江苏文艺出版社 林语堂先生学贯中西,著有许多不朽的篇章,这篇文章1937年出版于美国,后被翻译为多种语言。林先生在本书中谈了庄子的淡泊,陶渊明的闲适,以及中国人如何品茶,如何行酒令,如何观山玩水,如何养花、蓄鸟、听雨、吟风等,并探讨生命、心灵的价值,抒发其对日常生活中人、事、物的观查感受,并提出自己的哲学理解。 林先生认为人的生活最终不过包括吃饭、睡觉、朋友间的离合、接风、饯行、植树、浇花等平凡的事情,所以哲学家们用深奥的字句来描写这类简单的生活状态,是一种掩概念的极端缺乏和模糊的技巧而已。本书以一种散文的哲学方式,简单而形象的解释了一些东西。因为本书分为十四个章节,内容比较繁杂,所以我选择我比较感兴趣的第九章生活的享受做一次读书笔记。 关于安卧眠床的意义,林先生认为在身体上是和外界隔绝而独隐,一个人睡在床上时,他的筋肉静息,血液的流动比较平顺,呼吸较为均匀,视觉、听觉和脉息神经也基本静息,造成一种身体上的静态,所以能使心思集中,不论对于概念或对于感觉都更加的纯粹。能真正的静下心来,考虑一些事情。还能静听自然和社会的声音。我认为在一个人独处时,我们可以掏出自己内心的一些东西,拿出来进行品位琢磨。远离尘世的喧嚣,也许可以寻找真实的自我,可以享受自然或社会演奏的天籁之音。万物在一动一静中成长,一动一静相互协调,生生不息,做到动静有致,享受人生! 关于谈话,林先生认为,夜间是最宜于谈天的时候,白天总是缺乏夜间那种魔力。谈天的地点却可以随意,但要做一次真正的谈天,其必要条件是一间关上门的屋子,几个知己朋友,旁边没有我们所不愿意看见的人,那样我们才能悠闲地发表我们的意见。这种亲密的毫无顾忌的谈天,可以谈到出神的忘却身处何处,也不再想到身上穿什么衣服,谈言吐语,一举一动都是任性为主。许多的文学作品也是在谈话的过程中酝酿而生的,文化本身的进步,有赖于空闲的合理利用,谈话是其中的一种方式。也可以说好的艺术作品来源于交流。据我推想,现代社会的聊天虽然更为广阔,大家谈东谈西,但质量可能没有古时高,科技的高速发展,使人们获取信息的能力大大增加,我们每天都能听说各种各样的新的信息,

平凡的世界读书笔记600字4篇

《平凡的世界》是路遥老师创作的一部百万字长篇巨著,以下是由网PQ小编为大家收集整理出来的平凡的世界读书笔记范文,希望能够帮到大家。 平凡的世界读书笔记范文一 路遥所著《平凡的世界》相信很多人是看过的,第一次便被这么朴素的书名所吸引了,平凡的世界、平凡的人。 少安、少平两人平凡的的一生,却是充满了奋斗,充满了对生活的热爱,尽管他们一直处在生活的压迫中,被生活驱使,但就像少平一样,为了生活,放下学业,忍痛放下爱情,但他没有被生活奴役,至少精神上还是自由的,他还懂得思考,懂得反思自己的生活,考虑自己的前途,并不像大哥少安那样为了生活而生活,少安开砖厂,无非是为了养活一家人,当然对于少安,我并没有贬低之意,在那种时代背景之下,在那种生活条件下,人们当然先是为了生存下来,都吃不饱还谈什么追求精神世界?再看现在,现在人们的条件相比较过去已经好了不知道多少了,但是看看,还是有很多的人注重于对物质生活的追求,现在社会上各种贪污腐败的事情层出不穷,明明都已经是接受过高等教育的了,为什么还是禁不起物质的诱惑,任由自己的灵魂如此脆弱?还是与整个社会环境是有关系的,那个时代的人们虽然生活条件可能很艰苦,吃了上顿没下顿,但是朴素是那个时代的特征,特别是广大的老百姓,尽管当时的政治斗争激烈,但也正是那种压迫的环境下才更让人们明白生活的不容易,让人们更加懂得生活的珍贵。 少平对于前途的不懈奋斗也是那代人的闪光点,是留给后代的珍贵财富,贯穿他的思想的主线就是奋斗不息、坚韧不拔,无论面对何种挫折,他都能平静接受,对生活充满了希望。虽然他和田晓霞的爱情以悲剧结束了,但是他仍然能承受所有的一切,勇敢真诚地面对生活。再看田晓霞,虽然出身比少平好很多,但作为那个时代的先进女性的代表,她有独立思考的能力,看问题往往和社会一般的看法不一样,甚至完全相反,以及最后她的牺牲,可以说即在意料之外,也在情理之中。虽然他们两人最后是以悲剧的结尾收场,但在小说最后,还是让少平顿悟生命与生活的真谛,重新开始新的生活。 现实中也是如此,在逆境中才能更好的成长,才能磨练自己,才能让以后的路更加通畅。 平凡的世界读书笔记范文二 劳动着是幸福的,无论在哪个时代。《平凡的世界》正白纸黑字的告诉我们这样的人生真谛。它响亮的提出:人,无论在什么位置,无论多么贫寒,只要一颗火热的心在,只要能热爱生活,上帝对他就是平等的。只有作一名劳动者,不把不幸当作负担,才能去做生活的主人,用自己真诚的心去体验,毕竟生命属于我们只有一次。这是一部用生命来写成的书。在亘古的大地与苍凉的宇宙间,有一种平凡的声音,荡气回肠。 《平凡的世界》的作者是路遥。当代作家。路遥的小说多是农村题材,但又不局限于农村生活的描写和城市交叉地带发生的人和事。特别是着重表现年轻人的生活,通过他们爱情的波折反映出新生活中一代年轻人的价值观。 这部小说给我最大的教育意义则是一种对农民的深刻理解。现代城市年轻人可能很难真正理解农民。农民的生活,农民的想法,农民曾经过的日子,农民的现在和未来。但是间接知识也能够带给我们启示和触动。这就是《平凡的世界》。小说能够深刻的反映农民的生活和喜怒哀乐,读完这些小说从某个意义上说我们也经历过了那个时代,也曾在田中挥汗如雨。这些书的现实意义在于对中国的现状,在于对历史的延续,在于对未来的展望和我们年轻人自身的提高:对人性的理解,对中国的理解,对构成中国大地那一片片生命陆地的人们的理解。 另外一个方面,我很喜欢路遥的出发点——平凡的世界。他的世界是平凡的,这只是黄土高原上几千几万座村落中的一座。但路遥却在平凡中看到了他的主人公的不平凡。比如说孙少平,他受过了高中教育,他经过自学达到可与大学生进行思想探讨的程度。作者

Linux设备驱动程序学习(20)-内存映射和DMA-基本概念

Linux设备驱动程序学习(20)-内存映射和DMA-基本概念 (2011-09-25 15:47) 标签: 虚拟内存设备驱动程序Linux技术分类:Linux设备驱动程序 这部分主要研究 Linux 内存管理的基础知识, 重点在于对设备驱动有用的技术. 因为许多驱动编程需要一些对于虚拟内存(VM)子系统原理的理解。 而这些知识主要分为三个部分: 1、 mmap系统调用的实现原理:它允许设备内存直接映射到一个用户进程地址 空间. 这样做对一些设备来说可显著地提高性能. 2、与mmap的功能相反的应用原理:内核态代码如何跨过边界直接存取用户空间的内存页. 虽然较少驱动需要这个能力. 但是了解如何映射用户空间内存到内 核(使用 get_user_pages)会有用. 3、直接内存存取( DMA ) I/O 操作, 它提供给外设对系统内存的直接存取. 但所有这些技术需要理解 Linux 内存管理的基本原理, 因此我将先学习VM子 系统的基本原理. 一、Linux的内存管理 这里重点是 Linux 内存管理实现的主要特点,而不是描述操作系统的内存管理理论。Linux虚拟内存管理非常的复杂,要写可以写一本书:《深入理解Linux 虚拟内存管理》。学习驱动无须如此深入, 但是对它的工作原理的基本了解是必要的. 解了必要的背景知识后,才可以学习内核管理内存的数据结构. Linux是一个虚拟内存系统(但是在没有MMU的CPU中跑的ucLinux除外), 意味着在内核启动了MMU 之后所有使用的地址不直接对应于硬件使用的物理地址,这些地址(称之为虚拟地址)都经过了MMU转换为物理地址之后再从CPU的内存总线中发出,读取/写入数据. 这样 VM 就引入了一个间接层, 它是许多操作成为可能: 1、系统中运行的程序可以分配远多于物理内存的内存空间,即便单个进程都可拥有一个大于系统的物理内存的虚拟地址空间. 2、虚拟内存也允许程序对进程的地址空间运用多种技巧, 包括映射程序的内存到设备内存.等等~~~ 1、地址类型 Linux 系统处理几种类型的地址, 每个有它自己的含义: 用户虚拟地址:User virtual addresses,用户程序见到的常规地址. 用户地址在长度上是 32 位或者 64 位, 依赖底层的硬件结构, 并且每个进程有它自己 的虚拟地址空间.

相关主题
文本预览
相关文档 最新文档