ITPub博客

首页 > Linux操作系统 > Linux操作系统 > perfessional linux kernel archticture 学习笔记1

perfessional linux kernel archticture 学习笔记1

原创 Linux操作系统 作者:spurray 时间:2009-05-06 16:17:48 0 删除 编辑

第一章:提供一个linux内核的概述。

    OS不仅仅是信息技术中令人着迷的一部分,也是在广泛人群当中争论的一个主题。Linux正在扮演OS发展的主角。然而仅仅10年前,提供源码的简单学院派的系统和源码严密保护的更多功能效率的商业系统之间有着严格的区别。但是现在任何人都能够从网络中下载linux或是其他自由的系统用于研究学习。
    Linux现在被安装在数百万的系统,家庭用户和职业人员将它用于广泛的任务中。从腕表的袖珍嵌入系统到巨型并行主机。有无数的方面应用着linux。这些使得这资源如此的有趣。一个声音,明确的概念混合着强有力的改革和强烈倾向解决问题但不依靠学院技术系统,这些让linux如此的迷人。
    本书描述linux主要功能,解释它的底层结构和测试它的执行。由于复杂的课题需要讨论,我假定读者已经有了一些OS经验和C系统编程经历。我暂时的讲述几个操作系统普遍的概念,但是我主要聚焦于Linux内核的执行。读者不熟悉细节的主题将能够在许多通常的操作系统的文献中得到解释,例如:Tanenbaum优秀介绍。结实的C编程能力是需要的,因为内核使用了很多C的高级技术,最重要的GNU C编译器和附录C讨论的C的优点即时是好的程序员也不熟悉,基本计算机结构知识将会有用因为Linux必须非常直接的与系统硬件交互,最明显的就是与CPU。有大量的介绍作品处理这个主题。参考目录也列了一些。当我讲解较深层次CPUs相关细节时,我将采用IA-32或是AMD64结构做为大多数的例子因为Linux用这些系统架构。当我探讨那些如今不太常用的机制时,我会在其后面结实通用的概念,但我期望读者也能够探讨引用手册页获取更多的建议关于如何在用户空间使用这些细节特性。
    当前章节提供一个linux多方面的概述,细节部分将在以后各章详细讲述。
    由于内核发展非常迅速,一个问题自然而然会问到,这本书覆盖到那个版本。它使用2.6.24,2008年一月底释放的版本,内核发展的动态性暗示你在读这本书时新的内核版本将推出,自然会有些细节部分将被改变,这是不可避免的。假如不是这个因素,Linux将是一个令人厌烦的系统,很有可能你将不想阅读这本书。细节有所变化,但是概念却没有本质的变化。这是个显著的事实2.6.24对比以前版本有一些非常基本的变化,自然地,开发者不会一晚上就发出这些变化。

1.1 内核的任务
    在一个纯粹的技术层,内核是一个介于硬件和软件之间的中间层,它的目的是传送应用请求给硬件,并且扮演一个低级驱动器访问设备和系统组成部分。然而,有其他有趣的方式看待内核:
  
    1. 内核能够被看做一个增强的机器,从应用视角来看,抽象计算机在一个高级别上。举例来说,当内核访问一个硬盘时,它必须决定哪个路径用来拷贝硬盘数据到内存,数据在哪里,那些命令需要发送给硬盘,它是通过那条路径等等。应用软件,另一方面,仅仅需要知道传输的命令是那条。之余它是怎么做到的,应用程序不关心,这些细节都已经被内核抽象出来了。应用程序没有和硬件进行交互,仅仅和内核交互,对于应用层,内核就是它所知道的最低层,所以内核想当一个增强的机器。

    2. 内核是一个资源管理器,如果有几个程序运行在一个系统中。在这种情况下,内核能够让这些系统程序共享CPU时间,硬盘空间,网络连接等等,就如同各自使用一个独立完整的系统。
   
    3. 另一个观点是内核是一个提供系统级范围命令的库,众所周知,system call被用来传送请求给计算机,在C标准库的帮助下,这些发布的应用程序以同样的调用方法应用在各个函数当中。

1.2 执行策略
    当前有两个主要的基于操作系统执行的范例。

    1. 微内核--仅仅最基本的功能被直接实现在中心内核。其他的功能由别的自治的程序通过清晰定义的通讯接口与内核交互。如:各种文件系统,内存管理等等,当然,最基本级的内存管理,用于微内核系统内部自己通讯的在微内核里实现,处理系统调用级方面的实现在外部。理论上地,微内核是一个非常优雅的方法,因为个人部分的被相互隔离开,微内核强制用户使用一个干净的编程方法。微内核另一个优势是有动态扩展性,这种能力能够在运行阶段交换重要的组件。然而,由于附加的CPU时间需要支持组件间的复杂通讯,微内核没有真正的在实际中建立(没明白意思),尽管它是一个活跃的课题。
 
    2. 单内核(Monolithic Kernels)-- 它们是可选的,传统的概念,这里,全部的内核代码包括它的所有子系统,如:内存管理,文件系统甚至设备驱动被打包成一个文件,每一个函数可以访问内核所有其他部分,如果规划没有做的太仔细,它会导致一个(elaborately nested)源码。由于目前单内核的执行力强于微内核,Linux仍然使用该内核方式,然而,一个主要的革新要介绍,模块(Modules)能够在系统运行的过程当中插入或是移除它是单内核方式的一个有益补充,通过在内核和用户间的巧妙的通讯方式允许实现热插拔和动态加载模块。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12366772/viewspace-594330/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-04-20

  • 博文量
    6
  • 访问量
    4459