十天学Linux内核之第四天

  • 时间:
  • 浏览:6

  下面来介绍一下其它各种设备,与块设备不同,字符设备用来传送数据流,所有串行设备都是字符设备,与字符设备类事,网络设备的数据在物理层上串行传输,而时钟设备是基于硬件脉搏跳动的设备,确实 若果时钟相关的,还有那终端设备,这里就稍微提及一下。若果哪几个都和输入输出相关,朋友若果有个印象就行了。

原文:

  真的是悲喜交加呀,这样 这种 寒假早上8点都去练车,另另4个小时已经 再来实验室陪伴Linux内核,若果今天教练说没名额考试了,好纠结,不过想想就能非要睡懒觉了,哈哈,自从大三寒假以来还没睡过懒觉呢,现在都是更多的时间来分享此人 学习Linux内核的感受,前几天确实 若果此人 都是些不懂的,相信朋友看了也是很模糊,已经 我会标志出来此人 不懂的,希望大神们指教,也希望朋友多多指点,共同攻克Linux内核,今天将讲到补救器是怎么与其它设备进行交互的,内核又是怎么响应和控制哪几个交互的,今天内容过多 若果很关键,写的不好希望朋友批评,纯手打。

  Linux内核是怎么将软硬件结合起来的呢?这里朋友将共同探究内核与随近硬件主若果文件IO和硬件设备之间的关系,来解释这种 什么的问题。补救器与随近设备的通信依赖于一系列的电路电线,总线若果具有类事功能的电线,设备与补救器通信主若果通过地址总线,数据总线,控制总线来实现,这里在学习单片机原理的已经 也提到过,这里对系统的基本社会形态就过多 说了,确实 更新快,不好讲解,也没哪几个好总结的,朋友看看相关书籍就行。了解到设备能非要当做文件系统中的文件来补救,其细节都可隐藏在内核中,而对应用守护进程员透明,当守护进程对设备文件应用某一系统调用的已经 ,若果将这种 系统调用转再加某种设备函数就足够了,其中设备驱动守护进程定义了哪几个函数,接下来看看哪几个设备类型。其中应用层,文件系统层,通用块设备层和设备驱动守护进程之间的关系如下图,这里贴出来供朋友了解一下。读写块设备如下:

  刚结束了分析代码之旅,小结一下今天主要的内容,今天主要分享的是Linux内核是怎么补救输入输出操作的,具体讨论了Linux是怎么表示块设备和它的接口的,也介绍了Linux调度守护进程若果重点分析了请求队列,上述敲的代码,我也还有好多不懂,非要此人 慢慢去体会了,希望各路大神看了已经 不能稍加提醒一下,哎,反正这种 寒假没啥事了,就一直和内核作伴吧,哪几个写的不好,已经 继续努力,fighting~

  先介绍块设备,设备驱动在驱动守护进程初始化时为此人 注册,将这种 驱动守护进程加入内核的驱动守护进程表中,并将设备号映射到数据社会形态block_device_operations中,数据社会形态block_device_operations富含了系统中启动和停止给设定块设备的函数(在include/linux/fs.h上。

  从补救器的淬硬层 来看,在适合的cidao4上定位磁头并将磁盘转到相应的块共要相当长的时间,这种 延迟迫使内核实现了系统请求队列,在Linux2.6中,每个块设备都是此人 的请求队列,以便管理对该设备的IO口请求,守护进程非要在获得请求队列锁已经 不能 更新设备的请求队列,我须要要们先来看看request_queue社会形态(哪几个代码都是此人 敲出来的,若果分析,分析不好的请各位大神批评改正。)哪几个代码都能非要在include/linux/blkdev.h中查看。

  代码确实 很难,我知道的也若果皮毛,哪几个都须要好好体会,如若有补充的希望各路大神不能多加改正我的缺点,现在来看看设备操作,基本 的通用块设备有open,close,ioctl以及request函数,请求队列非要直接被访问,若果能非要通过一组帮助例程来访问,如下:

  小结

  版权所有,转载请注明转载地址:http://www.cnblogs.com/lihuidashen/p/4244330.html

  Linux内核通过在设备的_init函数中调用下列函数来初始化块设备的请求队列,哪几个函数中,,能非要看出请求对了内部的细节和相关帮助教程,在现在的Linux2.6内核中,每个块设备控制此人 的锁,若果将自旋锁作为第十个 参数来传递,其中第一另另4个参数是块设备驱动守护进程提供的请求函数,下面的代码在drivers/block/11_rw_blk.c中查看得到。

这种 帮助函数返回并指向下一另另4个请求社会形态的指针,驱动守护进程能非要通过查看该元素来派发所有信息,以选着它的的大小方向以及该请求相关的任何一点自定义操作,已经 通过end_request()想内核报告这种 信息: