• 技术文章 >运维 >linux运维

    linux内核是什么意思

    藏色散人藏色散人2021-04-16 10:34:19原创8807

    linux内核是与计算机中的硬件接口的最低级别的易于更换的软件;内核负责将以“用户模式”运行的所有应用程序连接到物理硬件,并允许进程使用进程间通信从彼此获取信息。

    本文操作环境:linux5.9.8系统、Dell G3电脑。

    Linux内核拥有超过1300万行代码,是世界上最大的开源项目之一。

    那么内核是什么?

    内核是与计算机中的硬件接口的最低级别的易于更换的软件。它负责将以“用户模式”运行的所有应用程序连接到物理硬件,并允许进程(称为服务器)使用进程间通信(IPC)从彼此获取信息。

    不同类型的内核

    当然,从头开始构建内核时,有不同的方法来构建内核和架构注意事项。通常,大多数内核属于三种类型之一:单片,微内核和混合。Linux是一个单片内核,而OS X(XNU)和Windows 7使用混合内核。。

    单片内核

    单片内核与微内核相反,因为它们不仅包含CPU,内存和IPC,还包括设备驱动程序,文件系统管理和系统服务器调用等内容。单片内核在访问硬件和多任务处理方面往往更好,因为如果程序需要从内存中获取信息或运行它的另一个进程有一个更直接的线来访问它,而不必在队列中等待完成任务。然而,这可能会导致问题,因为在管理程序模式下运行的事情越多,如果一个行为不正常就会导致系统崩溃。

    优点

    更直接地访问程序的硬件

    进程之间的通信更容易相互通信

    如果您的设备受支持,则无需额外安装即可使用

    进程反应更快,因为没有处理器时间队列

    缺点

    安装占地面积大

    内存占用大

    不太安全,因为一切都以管理员模式运行

    kernel-panic-shadow.png

    Linux内核文件在哪里?

    5.png

    Ubuntu中的内核文件存储在/ boot文件夹中,名为vmlinuz- version。名称vmlinuz来自unix世界,他们过去常常在60年代将其内核称为“unix”,因此Linux在90年代首次开发时就开始调用他们的内核“linux”。

    当开发虚拟内存以实现更轻松的多任务处理能力时,“vm”被放在文件的前面以显示内核支持虚拟内存。有一段时间Linux内核被称为vmlinux,但内核变得太大而无法容纳在可用的启动内存中,因此内核映像被压缩,结尾x被更改为az以显示它是使用zlib压缩进行压缩的。这种压缩并不总是使用,通常用LZMA或BZIP2代替,有些内核简称为zImage。

    版本编号将采用ABCD格式,AB可能为2.6,C为您的版本,D表示您的补丁或修补程序

    kernel-files.png

    在/ boot文件夹中还有其他非常重要的文件,名为initrd.img-version,system.map-version和config-version。initrd文件用作小型RAM磁盘,用于提取和执行实际的内核文件。system.map文件在内核完全加载之前用于内存管理,配置文件告诉内核在编译内核时要加载到内核映像中的选项和模块。

    Linux内核架构

    由于Linux内核是单片内核,因此与其他类型的内核相比,它具有最大的占用空间和最大的复杂性。这是一个设计特性,在Linux的早期阶段引起了相当多的争论,并且仍然存在一些与单片内核固有相同的设计缺陷。

    Linux内核开发人员解决这些缺陷的一件事是制作可在运行时加载和卸载的内核模块,这意味着您可以动态添加或删除内核的功能。这不仅仅是通过包含运行服务器进程的模块(如低级虚拟化)向内核添加硬件功能,而且还可以在不需要在某些情况下重新启动计算机的情况下更换整个内核。

    想象一下,如果您可以升级到Windows服务包而无需重新启动...

    内核模块

    6.png

    如果Windows已经安装了所有可用的驱动程序并且您只需打开所需的驱动程序,该怎么办?这基本上是内核模块为Linux做的。内核模块,也称为可加载内核模块(LKM),对于保持内核与所有硬件一起运行而不消耗所有可用内存至关重要。

    模块通常会为基本内核添加功能,例如设备,文件系统和系统调用。LKM的文件扩展名为.ko,通常存储在/ lib / modules目录中。由于它们的模块化特性,您可以通过在启动期间使用menuconfig命令或通过编辑/ boot / config文件来设置要加载或不加载的模块来轻松自定义内核,或者您可以使用modprobe动态加载和卸载模块命令。

    某些发行版(如Ubuntu)中提供了第三方和闭源模块,默认情况下可能无法安装,因为模块的源代码不可用。该软件的开发人员(即nVidia,ATI等)不提供源代码,而是构建自己的模块并编译所需的.ko文件以进行分发。虽然这些模块在啤酒中是免费的,但它们并不像语音中那样免费,因此一些发行版不包含这些模块,因为维护者认为它通过提供非自由软件来“玷污”内核。

    内核不是魔术,但对于任何正常运行的计算机来说都是必不可少的。Linux内核与OS X和Windows不同,因为它包含内核级别的驱动程序,并且“开箱即用”支持许多内容。希望您能更多地了解您的软件和硬件如何协同工作以及启动计算机所需的文件。

    以上就是linux内核是什么意思的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:apache是什么意思 下一篇:linux是做什么的
    千万级数据并发解决方案

    相关文章推荐

    • 如何在Linux上安装Node.js_node.js• 在Linux系统中搭建Node.js开发环境的简单步骤讲解_node.js• Linux下编译安装php libevent扩展实例_javascript技巧• 在Linux上用forever实现Node.js项目自启动_node.js• Linux环境下php实现给网站截图的方法_php技巧
    1/1

    PHP中文网