通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 操作系统 >> Linux >> 新手入门 >> 文章正文
Linux系统下设备驱动的安全端口分配
责任编辑:ncic   更新日期:2007-4-2

  摘要:

  编写设备驱动是一个具有挑战性和冒险性的工作。当设备通过init_mo dule函数登记时,设备的资源应当被分 配。一个主要的设备资源是I/O端口。作为动态连接的驱动程序,开发者应当小心将未被使用的I/O端口分配 给这些设备。 首先驱动程序应侦测这些端口是否被使用或释放。然后再为设备申请获取端口。当驱动模块被 从内核中移出时,端口应该被释放。这篇文章讨论了Linux设备驱动的安全端口分配的复杂性。

  介绍

  设备驱动开发者一个主要关心的问题是设备的资源分配。这些资源包括I/O端口,内存和中断。这篇文章试图解释I/O子系统的基本原理和资源分配的重要性,主要是I/O端口的资源处理。同时还将阐明如何侦测,申请和释放设备的端口地址。

  基本的硬件元素,如端口,总线和设备控制器,构成了大量的不同的I/O设备。设备驱动向I/O子系统提供了 一个通用的设备存取界面,这非常类似于系统调用(systmem call)在应用程序和操作系统之间提供的标准界 面。现在有很多种类型的设备附属在电脑上,举例说来有: 存储设备,如磁盘,磁带,光驱和软驱; 人机交 互设备,如键盘,鼠标和屏幕; 传输设备,如网卡和调制解调器。不论这些不同设备的数目巨大,我们只需要理解一些基本的概念,即设备如何加载以及软件如何控制硬件。

  基本概念

  设备由两部分组成,一个是被称设备为控制器的电器部分,另一个是机械部分。控制器通过系统总线加载到 电脑上。典型的方式是,一组互不冲突的寄存器组被赋予到各个控制器。I/O端口包含4组寄存器,即状态寄 存器,控制寄存器,数据输入寄存器,数据输出寄存器。状态寄存器拥有可以被主机读取的(状态)位,用来 指示当前命令是否执行完毕,或者字节是否可以被读出或写入,以及任何错误提示。控制寄存器则被主机写操作以启动一条命令或者改变设备的(工作)模式。数据输入寄存器用于获取输入而数据输出寄存器则向主机发送结果。

  所以,处理器和设备之间的基本界面是控制和状态寄存器。当处理器执行程序并且遇到与设备相关的指令 时,它通过向相应的设备发送一条命令来执行该指令。控制器执行所要求的动作并设置状态寄存器的特定位,然后进入等待。处理器有责任检查设备的状态直到发现操作完成。例如并口驱动程序(打印机使用的)一般会 轮询打印机以知道打印机是否准备好。如果打印机没有准备好,驱动程序会睡眠一段时间(处理器此时会做其他有用的工作),该过程将重复直到打印机准备好。这种轮询的机制能够改进系统的性能。另外一种方式则是 系统进行不必要的"死等"(unnecessarily waiting)而不做任何有用的工作。

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程