当前位置:首页 > 技术学院 > 技术前线
[导读]Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linux内核是第一个真正完整且突出的免费和开源软件示例。Linux 内核是第一个真正完整且突出的免费和开源软件示例,促使其广泛采用并得到了数千名开发人员的贡献。

Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linux内核是第一个真正完整且突出的免费和开源软件示例。Linux 内核是第一个真正完整且突出的免费和开源软件示例,促使其广泛采用并得到了数千名开发人员的贡献。

Linux内核‌是操作系统的核心组件,作为开源软件由Linus Torvalds于1991年创建,负责管理硬件资源并为应用程序提供基础服务。

‌Linux内核的定义与起源‌

Linux内核是计算机操作系统最底层的核心程序,采用C语言编写并遵循POSIX标准,具备类Unix特性。它由芬兰程序员Linus Torvalds在1991年首次发布,并依托全球开发者社区协作维护,成为开源软件领域的典范。‌‌

‌核心功能特性‌

Linux内核通过以下机制实现硬件与软件的协同工作:

‌进程管理‌:采用层次化进程结构,通过调度算法分配CPU时间片,支持多任务并发执行。‌‌‌

‌内存管理‌:提供虚拟内存机制,实现进程间内存隔离与共享,优化物理内存使用效率。‌‌

‌设备驱动‌:抽象硬件操作细节,支持超过80%的常见硬件设备的即插即用。‌‌

‌文件系统‌:基于虚拟文件系统(VFS)架构,兼容ext4、XFS等数十种文件格式。‌‌

‌网络协议栈‌:内置TCP/IP协议族,支撑互联网通信基础功能。‌‌

Linux 内核(英语:Linux kernel),是 Linux 操作系统的内核,以 C 语言写成,符合 POSIX 标准,以 GNU 通用公共许可证发布。Linux 最早是由芬兰黑客林纳斯·托瓦兹为尝试在英特尔 x86 架构上提供自由免费的类 Unix 系统而开发的。该计划开始于 1991 年,林纳斯·托瓦兹当时在 Usenet 新闻组 comp.os.minix 登载帖子,这份著名的帖子标示着 Linux 计划的正式开始。

在计划的早期有一些 Minix 黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。

技术上说 Linux 是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于 Linux 内核的完整操作系统叫作 Linux 操作系统,或是 GNU/Linux。

Linux 内核是在 GNU 通用公共许可证第 2 版之下发布的(加上一些非自由固件、blob 与各种非自由许可证)。

贡献者遍布世界各地,日常开发在 Linux 内核邮件列表。

源代码

一般情况下 Linux 内核源代码位于 /usr/src/linux 目录下。

/include子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其他模块重建内核。/init 子目录包含了内核的初始化代码,这是内核工作的开始的起点。/arch 子目录包含了所有硬件结构特定的内核代码。如:i386,alpha/drivers 子目录包含了内核中所有的设备驱动程序,如块设备和SCSI设备。/fs 子目录包含了所有的文件系统的代码。如:ext2,vfat等。/net 子目录包含了内核的连网代码。/mm 子目录包含了所有内存管理代码。/ipc 子目录包含了进程间通信代码。/kernel 子目录包含了主内核代码。内核程序

编译完成新内核后,会生成几个文件,这些文件是内核启动所需要的,这里简单介绍一下。

vmlinux,编译出来的最原始的内核文件,没有压缩,位于源码根目录下。该内核文件不能用来启动系统。

vmlinuz,这个就是我们要引导的内核,它一般是一个链接文件,位于根目录下。真正的文件位于/boot 文件夹下。z 表示压缩的内核,vm 表示 virtual memory 的意思。linux 支持虚拟内存,可利用硬盘空间作为虚拟内存使用。在编译内核时,通过 make zImage 或 make bzImage 生成 zImage 或 bzImage 原始压缩内核文件,这些内核文件位于 /usr/src/linux-2.6.23.9/arch/i386/boot 目录下;接着我们会把它拷贝到 /boot 目录下并改名为 vmlinuz;最后在根目录下创建一个到该文件的同名链接文件。bzImage 表示 big zImage 的意思,zImage 是老式的内核文件格式,在新的内核版本中已不使用了,现在生成的内核是 bzImage 格式的内核文件。这两种内核文件的区别是,zImage 解压缩内核到低端内存中(第一个640K),bzImage 解压缩内核到高端内存中(1M以上)

这两个内核文件都是使用 gzip 软件压缩的,但文件头部内嵌有 gzip 解压缩代码,能在启动时自动解压缩内核。使用 gzip 是不能正常解压内核的。

在源码根目录生成的 vmlinux 是一个没有压缩的内核文件。

如果在 /boot 目录下存在多个版本的内核文件,则可用 vmlinuz-xxxx 的方式命名。但根目录下的 vmlinuz 链接文件名一般不变。

initrd-x.x.x.img,initrd 是"initial ramdisk"的简写。作用是在内核引导前加载相应的硬件模块,为内核引导做准备。比如,使用的是 scsi 硬盘,而内核 vmlinuz 中并没有这个 scsi 硬件的驱动,那么在装入 scsi 模块之前,内核不能加载根文件系统,但 scsi 模块存储在根文件系统的/lib/modules 下。为了解决这个问题,可以引导一个能够读实际内核的 initrd 内核并用 initrd 修正 scsi 引导问题。initrd 可使用 mkinitrd 工具创建。

System.map,内核符号映射文件,位于/boot 目录下,与内核名要对应。内核编译完成后,在源码根目录下就会生成一个 System.map 文件。我们要把它拷贝到/boot 目录下并改成相关的名称。如内核名为 vmlinuz-2.6.23.9,则这个内核符号映射文件就应该命名为 System.map-2.6.23.9。

运行空间

Linux 系统由用户空间和内核空间两部分组成。

内核空间与用户空间是程序执行的两种不同状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的转移。

用户空间分为:

User Applications(用户应用程序)GNU C Library (glibc 即 c 运行库)内核空间分为:

System Call Interface(系统调用接口)Kernel(内核)Architecture Dependent Kernel Code(架构体系内核代码)子系统

Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。

进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。

内存管理(MM):允许多个进程安全的共享主内存区域。Linux 的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。

虚拟文件系统(VFS):隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指 Linux 所支持的文件系统,如 ext2,fat 等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

网络接口(NET):提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

进程间通讯(IPC):支持进程间各种通信机制。处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。

‌架构设计特点‌

Linux采用‌单内核(Monolithic Kernel)‌架构设计,具有以下技术优势:

所有核心服务运行在内核空间,避免频繁上下文切换带来的性能损耗。

通过模块化设计实现动态加载驱动和功能扩展,平衡性能与灵活性。‌‌

支持从嵌入式设备到超级计算机的跨平台运行,涵盖ARM、x86等多种指令集架构。‌‌

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭