当前位置:首页 > 教育培训 >

一文看懂linux内核(linux内核通俗解释)

来源:原点资讯(www.yd166.com)时间:2023-06-12 00:24:07作者:YD166手机阅读>>

简介

作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。

Linux内核预备工作

理解Linux内核最好预备的知识点:

懂C语言
懂一点操作系统的知识
熟悉少量相关算法
懂计算机体系结构

Linux内核的特点:

结合了unix操作系统的一些基础概念

一文看懂linux内核,linux内核通俗解释(1)

一文看懂linux内核,linux内核通俗解释(2)

文章福利】私信我回复{内核}领取linux内核资料包(含视频教程、电子书、实战项目及代码)

一文看懂linux内核,linux内核通俗解释(3)

Linux内核的任务:

1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。

2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。

3.内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。

4.内核就像一个库,提供了一组面向系统的命令。系统调用对于应用程序来说,就像调用普通函数一样。

内核实现策略:

1.微内核。最基本的功能由中央内核(微内核)实现。所有其他的功能都委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。

2.宏内核。内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。

哪些地方用到了内核机制?

1.进程(在cpu的虚拟内存中分配地址空间,各个进程的地址空间完全独立;同时执行的进程数最多不超过cpu数目)之间进行通 信,需要使用特定的内核机制。

2.进程间切换(同时执行的进程数最多不超过cpu数目),也需要用到内核机制。

进程切换也需要像FreeRTOS任务切换一样保存状态,并将进程置于闲置状态/恢复状态。

3.进程的调度。确认哪个进程运行多长的时间。

Linux进程

1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。

2.通过pstree命令查询。实际上得系统第一个进程是systemd,而不是init(这也是疑问点)

3.系统中每一个进程都有一个唯一标识符(ID),用户(或其他进程)可以使用ID来访问进程。

Linux内核源代码的目录结构

Linux内核源代码包括三个主要部分:

1. 内核核心代码,包括第3章所描述的各个子系统和子模块,以及其它的支撑子系统,例如电源管理、Linux初始化等

2. 其它非核心代码,例如库文件(因为Linux内核是一个自包含的内核,即内核不依赖其它的任何软件,自己就可以编译通过)、固件集合、KVM(虚拟机技术)等

3. 编译脚本、配置文件、帮助文档、版权说明等辅助性文件

使用ls命令看到的内核源代码的顶层目录结构,具体描述如下。

include/ ---- 内核头文件,需要提供给外部模块(例如用户空间代码)使用。

kernel/ ---- Linux内核的核心代码,包含了3.2小节所描述的进程调度子系统,以及和进程调度相关的模块。

mm/ ---- 内存管理子系统(3.3小节)。

fs/ ---- VFS子系统(3.4小节)。

net/ ---- 不包括网络设备驱动的网络子系统(3.5小节)。

ipc/ ---- IPC(进程间通信)子系统。

arch// ---- 体系结构相关的代码,例如arm, x86等等。
arch//mach- ---- 具体的machine/board相关的代码。
arch//include/asm ---- 体系结构相关的头文件。
arch//boot/dts ---- 设备树(Device Tree)文件。

init/ ---- Linux系统启动初始化相关的代码。
block/ ---- 提供块设备的层次。
sound/ ---- 音频相关的驱动及子系统,可以看作“音频子系统”。
drivers/ ---- 设备驱动(在Linux kernel 3.10中,设备驱动占了49.4的代码量)。

lib/ ---- 实现需要在内核中使用的库函数,例如CRC、FIFO、list、MD5等。
crypto/ ----- 加密、解密相关的库函数。
security/ ---- 提供安全特性(SELinux)。
virt/ ---- 提供虚拟机技术(KVM等)的支持。
usr/ ---- 用于生成initramfs的代码。
firmware/ ---- 保存用于驱动第三方设备的固件。

samples/ ---- 一些示例代码。
tools/ ---- 一些常用工具,如性能剖析、自测试等。

Kconfig, Kbuild, Makefile, scripts/ ---- 用于内核编译的配置文件、脚本等。

COPYING ---- 版权声明。
MAINTAINERS ----维护者名单。
CREDITS ---- Linux主要的贡献者名单。
REPORTING-BUGS ---- Bug上报的指南。

Documentation, README ---- 帮助、说明文档。

Linux内核体系结构简析简析

一文看懂linux内核,linux内核通俗解释(4)

首页 123下一页

栏目热文

linux内核开发教程(linux内核开发技术详解教程)

linux内核开发教程(linux内核开发技术详解教程)

在前面文章中我们反复提到过Linux内核,知道Linux内核才是Linux操作系统最为核心的内容。内核实现了对硬件的管理...

2023-06-12 00:00:47查看全文 >>

linux内核学习步骤(linux内核基础入门教程)

linux内核学习步骤(linux内核基础入门教程)

喜欢的可以收藏转发加关注inux 内核,这个经常听见,却不不知道它具体是干嘛的东西,是不是觉得非常神秘?linux 内核...

2023-06-11 23:52:04查看全文 >>

linux三个内核详解(linux内核详解)

linux三个内核详解(linux内核详解)

简介作用是将应用程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪...

2023-06-11 23:55:37查看全文 >>

linux内核开发越老越吃香(linux内核开发方向)

linux内核开发越老越吃香(linux内核开发方向)

文章转载自 OSCHINA 社区 [http://www.oschina.net]原文标题:Linux 内核维护者难寻:...

2023-06-12 00:00:56查看全文 >>

本科生出国留学靠谱吗(大学生出国留学弊端多吗)

本科生出国留学靠谱吗(大学生出国留学弊端多吗)

取决于你想在哪儿工作,语言表达才是绝大部分人能留在当地工作的基础,这个世界上没多少人优秀到不用说话就能征服面试官。 对于...

2023-06-11 23:47:05查看全文 >>

图解linux 内核(图解linux内核内部的神奇世界)

图解linux 内核(图解linux内核内部的神奇世界)

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言...

2023-06-12 00:01:17查看全文 >>

linux实时内核详解(linux内核内存管理详解)

linux实时内核详解(linux内核内存管理详解)

Linux内核实时化步骤内核实时化目标是在Linux内核中嵌入Xenomai实时核,构建双核系统。利用管道补丁搭建Lin...

2023-06-12 00:27:28查看全文 >>

linux内核技术讲解教程

linux内核技术讲解教程

Linux内核的相关技术,Lee哥很早之前就想和大家分享一波了。但是一直苦于没有时间。今天就给大家分享一波,也算是一波福...

2023-06-12 00:05:50查看全文 >>

linux完整内核(Linux卸载内核)

linux完整内核(Linux卸载内核)

这是一个困扰 Linux 用户的常见问题。这也是考试和面试中经常问到的一个问题。下面是你需要了解的所有内容。你可能在网...

2023-06-12 00:11:30查看全文 >>

linux设备树详解(linux 设备树与驱动)

linux设备树详解(linux 设备树与驱动)

设备树的出现上一节说过设备树的出现是为了解决内核中大量的板级文件代码,通过 DTS 可以像应用程序里的 XML 语言一样...

2023-06-11 23:45:29查看全文 >>

文档排行