第二章 Linux内核与设备驱动程序

2010-05-25  张芳芳 

2.1 Linux操作系统
Linux操作系统由系统的启动、进程调度、虚拟内存管理器、文件系统、设备驱动程序等多个组成
2.2Linux内核
设备驱动程序中使用的函数也用在内核上,并且影响着内核,因此离开内核就无法制作设备驱动程序。
2.2.1 Linux的历史
  省略
2.2.2linux内核的功能
内核是有效管理系统资源的资源管理者
  • 处理器管理     通过管理处理器,使得处理器满足操作系统的处理要求,使其有效分担和执行各个进程中必要的处理器功能
  • 进程管理        进程是程序执行的最小单位,内核通过进程调度器负责进程的创建、撤销,并管理进程和外部环境的交互
  • 内存管理        系统的内存是最核心的部分,。内存管理是决定系统性能的重要要素,提供虚拟地址空间的方式,使各个进程在独立的空间上执行任务。虚拟内存以管理为基础,结合存储器可提供大于实际物理内存的内存空间
  • 文件系统管理   Linux内核利用虚拟文件系统(VFS),支持当前的大部分文件系统类型
  • 设备的控制      应用程序必须通过硬件才能与用户交互,处PCU和内存外,应用程序必须得到硬件的支持才能够完成各种操作。设备驱动程序负责与硬件相关的各种操作,而设备驱动程序则是内核必须实现的功能之一
  • 网络管理

2.2.3Linux内核的特点

特点归纳如下:

  • 单一的(Monolithic)内核
  • 非抢占型和抢占型(2.6内核)
  • 虚拟内存系统
  • 支持无MMU    2.6内核支持没有MMU(存储器管理单元)的系统
  • 虚拟文件系统(VFS)         linux中可以使用ext2甚至日志文件系统jfs的多种文件系统,也可以处理在windows中运行的NTFS文件系统和DOS文件系统
  • 利用模块扩展内核
  • 内核线程
  • 支持多线程
  • 支持多处理器
  • 强大的网络功能
  • GPL许可

2.2.4 内核源代码结构

省略

2.3设备驱动程序

2.3.1 向内核请求资源处理的方法

       应用程序向内核发出资源处理请求的方法大致分为两大类。第一是系统调用方式,第二是利用文件输出输入方式使用设备驱动程序的方法

1.系统调用方式

        所谓系统调用方式,指制定系统控制所需的调用规则后,利用软件中断服务功能,使内核执行应用程序发出的处理请求

2.文件形态的设备驱动程序

       以文件输入输出函数控制硬件。向表示硬件的设备文件指定应用程序的输入输出,从而调用内核内部链接设备文件的设备驱动程序服务程序,处理完请求再把控制流交还给应用程序

2.3.2模块和设备文件

1.模块

模块——在内核被启动后运行的状态下即动态加载或清除设备驱动程序

          只有模块方式才能支持连接在PCI、USB、PCMCIA上的设备PNP功能。只有带MMU的CPU才能支持模块方式,并且内核的版本要一致。

2.设备文件

          普通文件的目的在于保存数据,而设备文件的目的在于提供系统或硬件的信息。此类设备文件上保存的信息包括3种类型,分别为设备类型信息和主设备号和次设备号。

          应用程序以open()函数打开设备文件,内核在相应的设备文件上得到主设备号,并寻找相应设备号所处理的设备驱动程序。也有不存在设备文件的设备驱动程序,包括网络设备驱动程序。

2.3.3  设备驱动程序的类型

设备驱动程序处理各个硬件的方式与硬件的类型有关。

Linux中使用的设备驱动程序大体上包括字符结构、块结构和网络结构:

  • 字符   控制长短不一致字符序列的设备驱动程序,应用程序直接呼叫的、没有缓存的设备驱动程序
  • 块      通过一定大小的缓存处理数据的设备,由内核内部的文件系统进行管理,没有内部缓存的设备驱动程序
  • 网络   与网络层连接的设备驱动程序

1.字符设备驱动程序

         应用程序中使用open()、close()、read()、write()等文件处理函数,并且以普通文件方式处理设备文件,从而控制硬件。常见的文件结构为流(stream),与字符设备驱动程序连接的设备文件也是流。即利用文件节点指定设备文件的特定处理位置,并且可以读取设备的处理位置

2.块设备驱动程序

         除了特殊情况(分区),应用程序中不直接使用块设备驱动程序。块设备驱动程序是支持文件系统的结构,以文件系统实现与应用策划给你写的连接

3.网络涉笔驱动程序

         略

339°/3372 人阅读/2 条评论 发表评论

陈开源  2010-05-25

后面的“略”字让我看的打喷嚏······


张芳芳  2010-05-26

陈开源: 后面的“略”字让我看的打喷嚏······
大量表格、代码,实在是麻烦...


登录 后发表评论