zoukankan      html  css  js  c++  java
  • Linux内核剖析(二)Linux内核绪论

    什么是内核


    内核操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。

    内核是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

    现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核。
    程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。

    Linux内核版本


    Linux内核有两种:稳定的和处于开发中的。

    稳定的内核具有工业级的强度,可以广泛的应用和部署。新推出的稳定内核大部分都只是修正了一些bug或是加入了一些新的设备驱动程序。

    相反的,处于开发中的内核中许多东西变化的都很快。而且由于开发者不断实验新的解决方案,内核常常发生剧烈的变化。

    Linux的第一个公开版本是1991年10月的0.02版本,两个月以后,在1991年12月,Linux发布了0.11版本,这是第一个可以不依赖于Minix就可以使用的独立内核。
    0.12版本发布一个月以后,在3月,版本号跳到了0.95,反映出系统正变得成熟,不仅如此,直到两年后,也就是1994年3月,具有里程碑意义的1.0.0才完成。
    大约从这时起开始使用两“路”编号方法标注内核的开发,一直到2.5版本的内核,都通过这种简单的命名机制来区分稳定的和处于开发中的内核。
    这种机制使用三个“或者四个.”分隔的数字来代表不同的内核。第一个数组是主版本号,第二个版本从版本号,第三个数字是修订版本号,第四个可选的数字是稳定版本号(stable version)
    从版本号还可以反应出该内核是一个稳定版本还是一个粗语开发中的版本:该数字如果是偶数就是稳定版,如果是奇数就是开发版。

    偶数号的内核(比如1.0、2.2、2.4、2.6)是稳定的,“产品”型号,
    奇数号的内核版本(1.1、2.3)是前沿的或者“发展中的”内核。
    在这个特定的发布机制下,Linus会定期发布新内核,每个内核都是一个新的修订版本,比如2.6内核系列的第一个版本是2.6.0,第二个版本是2.6.1,这个修订版包含了BUG修复,新的驱动和一些新特性,但是,像2.6.3到2.6.4修订版本之间的差别是很微小的。
    这种开发方式一直延续到2004年,当时在受邀参加的linux开发者峰会上,内核开发者门确定延长2.6内核系列,从而推迟 进入到2.7系统的步伐。。。。
    同时为了解决版本发布周期变长的副作用。内核开发者们引入了上面提到的稳定版本号,这个稳定版本号(如2.6.32.8中的8)包含了一些关键性的BUG的修改,并且常会向前移植处于开发版内核(如2.6.33)的重要修改。依靠这种方式,一起拿版本保证了仍然能将重点放在稳定性上。

    Linux2.x和Linux3.x

    2011年7月21日,Linus Torvalds宣布正式发布Linux 3.0 kernel。 Linus表示,正如以前多次申明的,Linux 3.0并无具有重要意义的新特性或者是与之前的版本存在不兼容的地方,它只是在Linux 20周年之际放弃不方便的版本编号系统。Linux Kernel 3.0版本虽然从内核的更新内容上跟普通的2.6.40没什么两样,不过版本号的修改,无疑在Linux内核20周年之际,被赋予了特殊的意义。
    实际上,Linux 3.0新版本就是Linux 2.6.40版本的新名称,没有什么里程碑式的变化。从2.6到3.0走过了8个年头,人都变老了,外间世界也有不少变化。
    因此目前位置linux2.x和linux3.x是同步维护的,我们从linux内核官网上可以看到目前内核有两种不同的版本

    longterm support
    提供长期支持的内核版本
    stable
    稳定版本,而不是Beta测试版
    关系就是:稳定版本不一定都提供长期支持,而提供长期支持的一定是稳定版本。

    具体信息参见https://www.kernel.org/category/releases.html

    当年Linus 的建议是将版本号跳到 3.0,而不是 2.8.x 或其它,并且主版本号(mainline)将只包含 major 与 minor 号,也就是说下一个 Kernel 版本将有可能是 3.0,而不是 3.0.0。Linus 表示这样做有两个优点,一是去掉一个版本级数可以使得 stable 版本的维护人员直接使用第三个数字来标识相应的发布;其次由于传统上 Kernel 使用偶数版本号表示发布的版本,切换到 3.x 的版本号后,使用奇数(比如 3.0 之后是 3.1)作为发布的版本号也不会显得太让人难以接受。

    因此在现在的3.x的内核中不再遵循以前的偶数标识稳定版本,奇数标识开发版本的标识信息
    具体信息请参见Linux 2.6内核走向终结?下一版本3.0?

    Linux内核体系结构


    Linux内核体系结构

  • 相关阅读:
    linux——系统内核参数优化
    nginx 开启高效文件传输模式
    nginx——Nginx 处理事件模型
    Nginx 单个进程允许的最大连接数
    nginx传世经典
    Python中常见的数据类型总结(二)
    Python中常见的数据类型总结(一)
    Web压力测试工具 webbench
    性能测试概念点分析与过程讲解(四)--抓包
    性能测试概念点分析与过程讲解(三)
  • 原文地址:https://www.cnblogs.com/alantu2018/p/8991171.html
Copyright © 2011-2022 走看看