Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。
*** 作系统的组成要素:*** 作系统 = 内核 + 系统程序
系统程序 = 编译环境 + API
编译环境 = 编译程序 + 连接程序 + 装载程序
API = 系统调用 + 语言库函数(C、C++、Java等等)
AUI = shell + 系统服务例程(如x服务器等)+ 应用程序(浏览器,字处理,编辑器等)
软件系统:软件系统 = *** 作系统 + AUI
*** 作系统最底层的组件是内核,其上层搭建了许多系统软件。
系统程序包括三个部分,分别是:编译环境、应用程序接口和用户接口。
编译环境包含汇编、C 等低高级语言编译程序,连接程序和装载程序,这些程序负责将文本格式的程序语言转变为机器能识别和装载的机器代码。
应用程序接口(API)包含内核提供的系统调用接口和语言库,系统调用是为了能让应用程序使用内核服务,语言库函数则是为了方便应用程序开发,所以将一些常用的基础功能预先编译以供使用,比如对C语言来说常用的C库等
用户接口(AUI)包括我们熟悉的shell、系统服务程序和常用的应用程序。
这是一个典型的结构,但不是一成不变。许多 *** 作系统的发行中会有所删减,比如应用于嵌入式设备的系统,对X服务器就可能不做要求。但是像内核、系统调用等要素是必不可少的。
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的 *** 作系统结构,它们使得用户可以运行程序、管理文件并使用系统。
一.Linux内核
内核是 *** 作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/IP网络功能。Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。
二.Linux shell
shell是系统的用户界面,提供了用户与内核进行交互 *** 作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
三.Linux文件系统
文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、VFAT和ISO9660。
四.Linux应用程序
标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X
Window、办公套件、Internet工具和数据库等。
做服务器运维工作,要经常和Linux的版本号打交道,但一直搞不明白Linux内核和Linux发行版到底是个啥东西。其实要理解Linux内核和Linux发行版之间的关系,只要能理解下面的关系就可以了:
1.类似于游戏引擎《虚幻4》和游戏《绝地求生》之间的关系。没有虚幻4这款引擎,就没有绝地求生的游戏,但是有了虚幻4这款引擎,可以开发各种各样的游戏。
2.类似于汽车的核心三大件(发动机、变速箱、底盘)和宝马汽车之间的关系。汽车最重要的东西就是发动机、变速箱、底盘,宝马汽车和奔驰汽车可能用的都是同样的发动机,但是宝马汽车和奔驰汽车的外观是完全不一样的。
3.类似于电脑的核心硬件(CPU、内存、硬盘、主板、显卡)和戴尔电脑之间的关系。不管是联机的电脑,还是戴尔的电脑,CPU都是Intel或者AMD的。
4.类似于安卓系统和华为手机或者说和华为手机 *** 作系统之间的关系。三星、华为、小米、Vivo这些手机的 *** 作系统都是安卓的 *** 作系统,除去手机硬件的外观不说,在 *** 作使用上就存在差异。并且同是华为的品牌,手机型号不同,使用的安卓的内核版本号也不相同。
简单的说,内核就是内部的核心的东西,大家的内核都是一样的,发行版对应的则是外部的东西,例如功能、特性、外观、 *** 作啊,大家的发行版都是不一样的。
Linux内核是Linux *** 作系统创始人主持的网站www.kernel.org上发布的 *** 作系统的最基本的那些东西。Linux发行版则是在前述那些东西的基础上添加了一些工具、软件,构成的一套庞大复杂的 *** 作系统。虽然内核都是一样的,但添加部分各不相同,这就构成了不同的发行版本。Linux本身指的是一个 *** 作系统内核,只有内核是无法直接使用的。我们需要的是可以使用的 *** 作系统,是一个包含了内核和一批有用的程序的一个集合体,这个就是Linux发行版。其中,Ubuntu、RedHat就是Linux的不同的发行版。
外延1:既然内核这么牛逼,那么Linux的内核长啥样儿,干啥的?
参考1: https://www.cnblogs.com/yuanqiangfei/p/10225202.html
文中给出了Linux内核的整体架构。根据内核的核心功能,Linux内核提出了5个子系统,分别负责如下的功能:1. Process Scheduler,也称作进程管理、进程调度。2. Memory Manager,内存管理。3. VFS(Virtual File System),虚拟文件系统。4. Network,网络子系统。5. IPC(Inter-Process Communication),进程间通信。
到此打住,不再继续研究Linux内核了,否则偏离了文章的主题,而且Linux内核这方面的知识也不是一两天就能掌握的。
外延2:既然Linux有内核,那么Windows有内核么?
参考2: https://www.cnblogs.com/skyer/p/8608113.html
Windows显然也是有内核的说法的,只不过一个内核版本对应一个发行版本。说到这我真要吐槽一把Linux的版本问题,做服务器运维,经常遇到因为Linux的版本不同,导致应用程序死活装不上,库文件版本号死活对不上,依赖包死活找不到......这些一提起来就让人恶心的问题。
外延3:Linux内核版和发行版之间大致是怎么一种联系?
参考3: https://www.jianshu.com/p/f96880637e42
通过上面的解释,当我们的头脑里能区分出内核版和发行版的概念之后,再看两者之间的关系,就很清晰了。
外延4:如何查看Linux内核版本号和发行版本号?
参考4: https://blog.csdn.net/haiziccc/article/details/90203967
查看 *** 作系统版本一般有三个命令:
1. lsb_release -a,适用于所有Linux发行版
2. cat /etc/redhat-release,适用于Redhat
3. cat /etc/issue,适用于所有Linux发行版
查看系统内核版本一般有两个命令:
1. cat /proc/version
2. uname -a
进程管理系统、内存管理系统、I/O管理系统和文件管理系统。但是这些所谓的子系统是人为地划分的,实际上Linux内核的本质就是一个二进制文件。有关理解Linux内核是什么的内容,在黑马程序员员社区都可以找到,还有视频讲解,对话框就可以直接领取。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)