码迷,mamicode.com
首页 > 其他好文 > 详细

驱动之路——1.0

时间:2014-07-23 20:58:35      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   

一、linux设备驱动的分类及特点

计算机系统的硬件由CPU、存储器和外设组成。驱动针对的对象都是存储器和外设。

linux将存储器和外设分为3个基础大类:

字符设备:字符设备指那些必须以串行顺序依次进行访问的设备,字符设备不经过系统的快速缓冲。

块设备:块设备可以用任意顺序进行访问,以块为单位进行操作,,块设备经过系统的快速缓冲。

网络设备:网络设备面向数据包的接收和发送而设计,它并不对应于文件系统的节点。

        除网络设备外,字符设备和块设备都被映射到linux文件系统的文件和目录,通过文件系统的系统调用接口open()、write()、read()、close()等即可访问字符设备和块设备。

二、linux系统的组成:

   bubuko.com,布布扣bubuko.com,布布扣

现代cpu内部往往实现了不同的操作模式,不同的模式有不同的功能,高级程序往往不能访问低级功能,而必须以某种方式切换到低级模式。

        ARM处理器分7种工作模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式、未定义指令终止模式。ARM Linux的系统调用实现原理是采用swi软中断从用户态usr模式陷入内核态svc模式。内核空间和用户空间被用来区分程序执行的两个不同状态,它们使用不同的地址空间。linux只能通过系统调用和硬件中断的方式来完成从用户空间到内核空间的控制转移。



三、linux内核架构:

        bubuko.com,布布扣            bubuko.com,布布扣

 linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信5个子系统组成。

        进程调度控制系统中的多个进程对cpu的访问,使得多个进程能在cpu中“微观串行,宏观并行”地执行。进程调度处于系统的中心位置,内核中的其他子系统都依赖它,因为每个子系统都需要挂起和恢复进程。

        内存管理的主要作用是控制多个进程安全地共享主内存区域。当cpu提供内存管理单元(MMU)时,linux内存管理完成为每个进程进行虚拟内存到物理内存的转换。

        linux虚拟文件系统隐藏着各种硬件的具体细节,为所有的设备提供统一的接口,它独立于各个具体的文件系统,是对文件系统的一个抽象,它使用超级块super block存放文件系统的相关信息,使用索引节点inode存放文件的物理信息,使用目录项dentry存放文件的逻辑信息。

        网络接口提供了对各种网络标准的存取和各种网络硬件的支持。在linux中网络接口分为网络协议和网络驱动程序,网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备通信。

        进程通信支持提供进程之间的通信,linux支持进程间的多种通信机制,包含信号量、共享内存、管道等,这些机制可以协助多个进程、多资源的互斥访问、进程间的同步和消息传递。

linux内核的5个组成部分之间的依赖关系:

        进程调度与内存管理之间的关系:这两个子系统相互依赖。在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事就是将程序和数据装入内存。

        进程间通信和内存管理之间的关系:进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许两个进程除了拥有自己的私有空间,还可以存取共同的内存区域。

        虚拟文件系统与网络接口之间的关系:虚拟文件系统利用网络接口支持网络文件系统,也利用内存管理支持RAMDISK设备。

        内存管理和虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持交换,交换进程定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。

 

参考文献:http://blog.csdn.net/czh52911/article/details/7262021




驱动之路——1.0,布布扣,bubuko.com

驱动之路——1.0

标签:style   blog   http   color   使用   os   

原文地址:http://blog.csdn.net/chun_1959/article/details/38069863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!