对于临时用户和不太精英的粉丝,Linux是一个操作系统。但是,对于纯粹主义者来说,标题“Linux”是为支持操作系统的内核保留的。如果您对Linux内核的内容感到好奇,那么让我们回顾一下这个问题,着眼于新用户。
模式
在我们解释内核是什么之前,理解术语“用户模式”和“内核模式”很重要。用户模式是指执行代码无法直接访问硬件或参考内存。要访问硬件和内存,以用户模式运行的代码必须将指令委派给系统应用程序编程接口(API)。内核模式是指执行代码对所有硬件具有不受限制的访问权限,并且保留用于操作系统中最受信任的功能。
什么是内核?
每个操作系统都有一个内核。 Windows,macOS,iOS,Android,Chrome OS和Linux都有一个低级系统,负责将所有应用程序与计算机的物理硬件连接起来。没有内核,你的应用程序都不能使用物理计算机; Firefox,Chrome,LibreOffice,MS Office或Outlook等应用无法运行。内核还负责允许进程使用所谓的进程间通信(IPC)交换信息。
(一般来说)有三种类型的内核:
- 单片内核:这些内核包含CPU,内存,IPC,设备驱动程序,文件系统管理和系统服务器调用。它还负责将免费系统内存交给应用程序。这些类型的内核通常更好地访问硬件和多任务处理。
- 微内核:Microkernel采用极简主义方法,只管理CPU,内存和IPC。
- 混合内核:混合内核能够决定用户或内核模式下要运行的内容。虽然这提供了两全其美的优势,但硬件制造商需要更多的东西来创建用于在运行代码和硬件之间进行接口的驱动程序。
Linux使用开源的Monolithic Kernel,而macOS和Windows都使用Hybrid Kernel。 Linux内核由Linus Torvalds于1991年构思。直到今天,Torvalds先生仍然是Linux内核的首席开发人员,而来自世界各地的开发人员都在为Linux内核做出贡献。事实上,据估计,来自1000多家公司的近10,000名开发人员已经为Linux内核做出了贡献(自2005年开始跟踪)。
内核在哪里?
如果打开终端窗口并发出命令 ls / boot,你会看到一个名为的文件 的vmlinuz-VERSION (其中VERSION是版本名称或编号)。 vmlinuz文件是实际的可启动Linux内核,“z”表示内核已压缩;所以我们有vmlinuz而不是vmlinux。
在/ boot目录中是其他重要的内核文件,例如initrd.img-VERSION,system.map-VERSION和config-VERSION(其中VERSION是名称或版本号)。这些其他文件用于以下目的:
- initrd文件:用作提取和执行实际内核文件的小型RAMdisk。
- system.map:用于内核加载之前的内存管理。
- 配置:指示内核加载哪些选项和模块。
模块
没有模块,内核就没有多大用处。模块有效地打开了与硬件通信所必需的驱动程序,而不会消耗所有系统内存。模块还为内核添加功能,例如与外围设备通信,管理文件系统,安全性等。可以使用以下命令列出,添加和删除内核模块:
- lsmod的 将列出所有当前加载的内核模块。
- insmod的 将内核模块加载到正在运行的内核中。
- rmmod的 将从正在运行的内核中卸载一个模块。
所以你看,借助一些简单的命令,Linux内核可以非常灵活。
当前的内核
在撰写本文时,稳定的Linux内核是4.18.5,但并非所有Linux发行版都包含最新的内核。实际上,更新的Elementary OS桌面分发版运行内核4.15.0-30。这个数字是什么意思?对于Elementary OS上的最新内核,它意味着:
- 4是主要版本
- 15是次要版本
- 0-30是修订版
也可以从kernel.org下载不同版本的Linux内核并自行编译。 Linux内核的编译最好留给那些真正了解他们正在做什么的人。编译不正确的内核可能导致系统无法启动。因此,除非您已准备好深入研究在此级别上编译代码的挑战性任务,否则请使用默认内核,该内核随您选择的发行版一起发布和更新。