曲径通幽论坛

标题: 向内核请求资源处理的方式 [打印本页]

作者: beyes    时间: 2009-8-9 18:20
标题: 向内核请求资源处理的方式
设备驱动程序使系统支持的硬件能够在应用程序中使用。和大多数系统一样,Linux 也把硬件看作内核所管理的系统资源。应用程序想要控制硬件,必须向内核发出资源使用请求,内核则根据这个请求管理系统。

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

1、系统调用方式

系统调用方式,是指在制定系统控制所需的调用规则后,利用软件中断服务功能,使内核执行应用程序发出的处理请求。内核为了区分需要处理的功能,依据功能分配序号,并在内核里定义相应需要的控制程序。应用程序把相应的功能序号存储到寄存器中,然后调用软件中断服务,从而把控制权交给内核。被中断调用后,由内核内部的服务中断再确认功能序号,再调用与控制相关的服务程序。当处理了所有的服务程序后,内核再把控制权交换给应用程序。

最初设计的操作系统中,只存在系统调用方式,因此所谓控制硬件其实就是做系统调用。但是,随着系统中的硬件数量逐渐增多,利用系统调用的应用程序的功能也在不断的发展,已经出现了诸多问题。从编写应用程序者的立场上看,需要掌握更多的控制硬件的系统调用相关知识;反过来,从编写内核服务函数的开发者立场上看,又增加了硬件开发的负担。

因此,在没有标准化的硬件控制方式时,工作偶尔会处于瘫痪状态。为了解决这样的矛盾,当前的操作系统中除了系统调用功能外,还定义了另外一种硬件控制的方法。

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

UNIX 系统为了控制硬件,在使用系统调用方式的同时,又引入了以文件输入输出函数控制硬件的概念。该方式和普通文件的处理过程类似。向表示硬件的设备文件指定应用程序的输入输出,从而调用内核内部连接设备文件的设备驱动程序服务应用程序,处理完请求再把控制流还给应用程序。 Linux 内核在继承 UNIX 文件方式的基础上增加了集中特性,从而改善了功能。由应用程序开发人员将设备接触方式标准化后形成了利用设备文件的硬件控制方式,而由编写驱动程序的开发人员制作适合界面的服务程序。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2