理解Linux操作系统之母-Linux内核
Posted 踩点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解Linux操作系统之母-Linux内核相关的知识,希望对你有一定的参考价值。
Linux操作系统在我们的信息化生产环境中,起着举足轻重的作用,在使用的过程中,我们发现,要在发行版Linux操作系统上安装某个软件,在下载rpm安装包前要查查内核版本是多少以便于找到对应内核版本的rpm包;遇到一些硬件与使用的发行版Linux操作系统不兼容时,也查查内核版本是多少,看看是不是因为内核版本太低了不兼容;遇到了某个特定问题时也查查内核版本是多少,看看是不是已知的内核版本BUG等。甚至有时候为了解决某些问题,还要将Linux内核进行升级,但有时也不是所有问题都是能够通过内核升级就能解决的,还需要发生版操作系统具备相应的功能能力。从其中不难发现,我们使用的各类Linux操作系统,如CentOS、SuSE、redhat linux等等,它们都是用的同一套内核程序,只是各发行版上使用的Linux内核版本不同而已,Linux内核是名符其实的Linux操作系统之母了。
那到底什么是Linux内核(kernel)?Linux内核是怎么来的?Linux内核能做什么,有哪些主要功能?又有哪些人或组织在参与Linux内核开发维护?使用Linux内核代码有哪些要求等。带着这一系列问题,开展下面分析学习。
一、什么是Linux内核
Linux内核是运行于Linux 操作系统 (OS)中最基础却又最重要的组件,是计算机硬件与其进程之间的核心接口。它在两者之间进行通信,实现对资源管理的核心程序。
内核就像硬壳中的种子一样,存在于操作系统中并控制硬件的所有主要功能,包括手机、电脑、服务器等任何类型的智能计算设备。
二、Linux内核由来
Linux可以视为一个站在巨人肩膀上创建出来的产品,在它被发布以前,操作系统已经经过了长期的发展。
1979年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型);
1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核;
1979年,Unix发布System V,用于个人计算机;
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学;
1991年,芬兰赫尔辛基大学计算机系研究生LinusTorvalds(林纳斯·托瓦兹)负债DIY了一台性能彪悍的计算机,他准备用这台计算机运行在操作系统课上学会的Minix操作系统并黑进学校性能更加强大的计算机系统来上网或者看新闻。然而,Minix系统的价格让Linus望而却步,且当时Minix系统的协议只支持教学用途,于是决定开发一套自己的操作系统,1991年2月4日,Linux内核系统0.00版延生,只有两个进程,分别显示AAABBB;
1991年9月17日,Linux内核系统(当时叫Freax)的0.01版被上传至FTP服务器,作为第一个正式向外公布的Linux内核版本,从此拉开了一个传奇的序幕……
Linux它最初是构思试图创建一个用来替代 MINIX ,并且免费和开源共享的操作系统,借鉴 Unix的原理和设计,被看作是Unix的克隆。
Linux®已由LinusTorvalds在美国、德国、欧盟和日本注册商标。
三、内核主要功能
Linux内核虽然非常复杂,但它不是一个可供用户直接使用的完整操作系统,要提供给一般用户使用,仅靠内核是远远不够的,缺乏应用功能,还需基于内核之上,根据外围硬件设备开发驱动、用户灵活操作的图形化界面、应用程序软件等,才能构成一个可供用户使用的功能性操作系统。
Linux内核在操作系统中主要有以下四大功能:
- 内存管理:跟踪用于存储内容的内存量以及存储位置
- 进程管理:确定哪些进程可以使用中央处理单元 (CPU)、何时以及使用多长时间
- 文件系统管理:在非结构化的硬件之上建立了一个结构化的文件系统
- 硬件设备管理:充当硬件和进程之间的接口程序
内核对用户来说是不可见的,它在自己的称为内核空间的小世界中工作,在那里它分配内存并跟踪所有内容的存储位置。用户所看到的比如浏览器和文件等,被称为用户空间。这些应用程序通过系统调用接口 (SCI) 与内核交互。
如果将运行Linux操作系统的机器视为具有 3 层,内核的位置应该属于中间层:
1.硬件:物理机器,在系统的底部或基础,由内存 (RAM) 和处理器或中央处理单元 (CPU) 以及存储、网络等输入/输出 (I/O) 设备组成,,CPU 执行计算并从内存读取和写入内存。
2.Linux 内核:操作系统的核心。处于硬件之上,用户进程之下的中间层,它是驻留在内存中的软件,它告诉 CPU 要做什么。
3.用户进程:这些是内核管理的运行程序。用户进程是共同构成用户空间的东西。用户进程也称为进程。内核还允许这些进程和服务器相互通信。
系统执行的代码以两种模式之一在 CPU 上运行:内核模式或用户模式。在内核模式下运行的代码可以不受限制地访问硬件,而用户模式则限制对 SCI 的 CPU 和内存的访问。内存(内核空间和用户空间)也存在类似的分离。这两个小细节构成了一些复杂操作的基础,例如安全权限分离、构建容器和虚拟机。
这也意味着,如果一个进程在用户模式下失败,损害是有限的,可以由内核恢复。但是,由于它对内存和处理器的访问,内核进程崩溃可能会使整个系统崩溃。由于有适当的保护措施和跨越边界所需的权限,用户进程崩溃通常不会导致太多问题。此外,由于 Linux 内核可以在线升级修补。
四、内核维护组织
Linux内核由Linux Kernel Organization(是一家加州公益组织)进行维护,这个组织成立于 2002 年,成立的目的为免费向公众分发 Linux 内核和其他开源软件。Linux Kernel Organization由Linux基金会负责管理,为运行和维护 kernel.org 基础设施提供全面的技术、资金和人员支持。
Linux基金会,共有白金、金牌、银牌三个级别的会员(成员)1298个,这些成员都是数字技术的先驱,是推动Linux项目进步的力量。
1、白金会员(14个)
2、金牌会员(19个)
3、银牌会员(1258个)
......
....
要声明一点的是,Linux基金会维护了有很多的项目,这些会员并不代表都是参与内核项目的成员单位,而“Linux内核项目成员”在官网上无公布,但在每一个版本发布时,都会公布代码贡献量的雇主与个人排名。
五、Linux内核代码贡献
只有Linux内核项目成员,才能提交内核代码提交合并请求,下面以Linux内核5.10版为例,列举代码贡献者排名信息。
1、个人开发者代码贡献排名
共有 1,971 名个人开发者为Linux内核 5.10 做出了贡献,期中有有 252 名个人开发在首次在 5.10版本中做出代码贡献。
- 5.10版本合并代码个人开发者贡献占比排名
2、雇主(公司组织)代码贡献排名
总共有 228 家公司(所知道的)在5.10 内核版本中有做出代码贡献。
- 5.10版本合并代码雇主(公司组织)贡献占比排名
有一件值得骄傲的事情是,在5.10版内核程序新合并代码的贡献排名中,按照代码集为单位,我国的华为技术公司贡献量排第一名,占比8.9%;按照代码行为单位,我国的华为技术公司贡献量排第二名,占比5.3%。
六、Linux内核协议
Linux内核发展到2022年10月2日已经发布的6.0版,合并了很多贡献者的代码,形成了很多个功能模块,Linux内核已经积累成为一个很庞大的系统了,各个模块使用的开源协议也不尽相同,形成了一个Linux内核使用了多种开源协议,当前在使用的协议主要有如下:
BSD-2-Clause
BSD-3-Clause
BSD-3-Clause-Clear
GPL-2.0
LGPL-2.0
LGPL-2.1
MIT
Linux为一个全开源的内核,意味着任何人都可以运行、学习、共享和修改软件,修改后的代码也可以重新发布,甚至发行成自己的产品与出售,但是必须在相同协议下进行,也就是说,修改后的代码以及发行的产品,是需要继续开源,还是可以闭源,需要根据基于内核程序中的各个模块的开源协议而定。
扫码关注IT圈黎俊杰公众号,一起探讨IT技术人生!
坚持原创发表,如发现有不妥与不正确之处,欢迎指正。IT圈黎俊杰虚心向大家学习!
以上是关于理解Linux操作系统之母-Linux内核的主要内容,如果未能解决你的问题,请参考以下文章