第1章Linux内核简介.doc

第1章Linux内核简介.doc

ID:28760635

大小:32.50 KB

页数:7页

时间:2018-12-14

第1章Linux内核简介.doc_第1页
第1章Linux内核简介.doc_第2页
第1章Linux内核简介.doc_第3页
第1章Linux内核简介.doc_第4页
第1章Linux内核简介.doc_第5页
资源描述:

《第1章Linux内核简介.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第1章Linux内核简介世界各地都有人在钻研Linux内核,大多是在写设备驱动程序。尽管每个驱动程序都不一样,而且你还要知道自己设备的特殊性,但是这些设备驱动程序的许多原则和基本技术技巧都是一样的。通过本书,可以学会写自己的设备驱动程序,并且可以钻研内核的相关部分。本书涉及到的是设备无关编程技巧,不会将例子跟特殊设备绑定在一起。本章没有实际编写代码。但我要介绍一些关于Linux内核的背景概念,这样到我们稍后开始介绍实际编程时,就很顺利了。当你学习编写驱动程序的时候,你也会发现很多关于Linux内核的知识,这对理解你机器怎么工作很有帮助,并且还可以知道为什么你的机器没有希望的那么快,或

2、者为什么不按照你象要它做的那样做。我们会逐渐介绍一些新概念,先从简单的驱动程序开始,每介绍一些新概念都会看到相关例子代码,这些代码都不需要特殊硬件。驱动程序作者的作用作为一个程序员,你可以选择自己的驱动程序,在编程所需时间和结果的灵活性之间做个可以接受的权衡。尽管说驱动程序的灵活性看起来有那么点怪,我喜欢这个词是因为它强调了设备驱动程序提供的是机制,而不是策略。机制和策略之间的差别是Unix设计背后最好的点子之一。实际编程中遇到的大多数问题都可以被划分成两个部分:“需要作什么”(机制)和“这个程序怎么用”(策略)。如果这两个主题是由程序不同部分来承担的,或者是由不同的程序组合一起承担

3、的,那么这个软件包就很容易开发,也很适合特殊需求。举个例子,Unix的图形显示管理在X服务器和窗口管理器之间划了一道线,X服务器了解硬件并给用户程序提供唯一的接口,而窗口管理器实现特殊的策略并不需要知道硬件的任何信息。人们可以在不同硬件上使用同样的窗口管理器,并且不同用户在同一台工作站上可以使用不同的设置。另一个例子是TCP/IP的网络分层结构:操作系统提供抽象的套接字操作,是设备无关的,不同服务器主管这个服务。另外,ftpd服务器提供文件传输机制,而用户可以使用任何客户端程序;命令行的客户端和图形化界面的客户端都存在,并且谁都可以为传输文件写一个新的用户界面。只要涉及到驱动程序,就

4、会运用这样的功能划分。软盘驱动程序是设备无关的——这不仅表现在磁盘是一个连续读写的字节数组上。如何使用设备是应用程序要做的事:tar要连续地写数据,而mkfs则为要安装的设备做准备工作,mcopy依赖于设备上存在的特殊数据结构。在写驱动程序时,程序员应该特别留心这样的基本问题:我们要写内核代码访问硬件,但由于不同用户有不同需要,我们不能强迫用户采用什么样的特定策略。设备驱动程序应该仅仅处理硬件,将如何使用硬件的问题留给应用程序。如果在提供获得硬件能力的同时没有增加限制,我们就说驱动程序是灵活的。不过,有时必须要作一些策略决策。可以从不同侧面来看你的驱动程序:它是位于应用层和实际设备之

5、间的软件。驱动程序的程序员可以选择这个设备应该怎样实现:不同的驱动程序可以提供不同的能力,甚至相同的设备也可以提供不同能力。实际驱动程序设计应该是在众多需求之间的一个平衡。例如,不同程序可以同时使用同一个设备,而驱动程序的开发者可以完全自由地决定如何处理同步机制。你可以实现到设备上的内存映射,而完成独立于硬件的具体能力,或者你可以提供给用户函数库,帮助应用程序的程序员在可用原语的基础上实现新策略,或者诸如此类的方法。一个很重要需要考虑的问题就是,如何在提供给用户尽可能多的选项,平衡你需要编写所花费的时间,以及为使错误尽可能少而保持代码简单之间的平衡。如果即为同步又为异步操作设计驱动程

6、序,如果允许同时打开多次,并且如果能够发掘所有硬件功能,而不用增加软件层“去简化事情”——例如将二进制数据转换成文本或者策略相关的操作——那就很容易编写而且很好维护了。达成“策略无关”实际上是软件设计的共同目标。实际上,大多数设备驱动程序是和用户程序一起发布的,这些程序可以帮助完成对目标设备的配置和访问。这些程序可以是从简单的配置程序到完整的图形应用。通常还要提供一个客户端库文件。本书讨论范围是内核,所以我们不考虑策略问题,也不考虑应用程序或支持库。有时,我们会讨论不同策略,以及如何支持这些策略,但我们不会深入到使用一定策略或设备编程需要的细节问题。不过你应该可以理解,用户程序是一个

7、软件包的内核,就算策略无关的软件包也会和配置文件一起发布,这些文件提供了基本机制上的缺省行为。划分内核在Unix系统中,若干并发进程会参加不同的任务。每个进程都要求获得系统资源,可以是计算、内存、网络连接或别的资源。内核是一整块可执行代码,用它来负责处理所有这样的请求。尽管在不同的内核任务之间的区别不是总能清楚地标识出来,内核的作用还是可以被划分的。如图1-1所示,划分为如下这些部分:进程管理内核负责创建和终止进程,并且处理它们和外部世界的联系(输入和输出

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。