首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 内核Linux 内核体系架构 ( 硬件层面 | 内核空间 | 用户空间 | 内核态与用户态切换 | 系统调用 | 体系结构抽象层 )

文章目录 一、Linux 内核体系架构 二、内核态与用户态切换 ( 系统调用层 ) 三、体系结构抽象层 一、Linux 内核体系架构 ---- Linux 内核最初源码不足一万行 , 当前 Linux...内核源码已经有两千万行 ; 内核整体项目很大 , 不可能全部掌握 , 学习时从整体 体系架构出发 , 分析其中重要模块 , 然后将模块联系起来学习 ; Linux 内核体系架构可以按照下图 ,...内核 支持多种体系结构 , Linux 系统可以运行在 arm 架构处理器设备 上 , 如 Android ; 也可以运行在 x86 架构处理器 上运行 , 如 PC 机 , 服务器等 ;...实际上 Linux 内核支持很多体系结构 , 为 Linux 内核添加一个新体系结构很简单 , 体系结构抽象层 用于 将 不同体系结构 进行 抽象 与 隔离 , 为不同体系结构 , 提供了统一接口...; 如 : Linux 内核中 , 将与体系结构相关代码 , 都放在 arch 目录下不同体系结构对应目录中 , 如下图所示 :

2.1K30

Linux内核整体架构

大家好,又见面了,我是你们朋友全栈君。 1. 前言 本文是“Linux内核分析”系列文章第一篇,会以内核核心功能为出发点,描述Linux内核整体架构,以及架构之下主要软件子系统。...Linux内核核心功能 如下图所示,Linux内核只是Linux操作系统一部分。...而现代计算机(无论是PC还是嵌入式系统)标准组成,就是CPU、Memory(内存和外存)、输入输出设备、网络设备和其它外围设备。所以为了管理这些设备,Linux内核提出了如下架构。 3....Linux内核整体架构 3.1 整体架构和子系统划分 上图说明了Linux内核整体架构。根据内核核心功能,Linux内核提出了5个子系统,分别负责如下功能: 1....在Linux内核中,网络子系统几乎是自成体系,它包括5个子模块(见下图),它们功能如下: 1.

81050
您找到你想要的搜索结果了吗?
是的
没有找到

linux内核整体架构

内核与微内核架构内核:所有的内核代码都编译成二进制文件并运行在一个大内核地址空间中,整体架构如下:图片微内核:把操作系统分成多个独立功能模块,每个功能模块之间访问需要通过“消息”来完成,因此效率没有宏内核架构高...:图片宏内核优点:设计简洁,性能好微内核优点:模块化特点更具实时性工程实践中,linux不断融入微内核精华到内核中,例如模块化设计思想,动态加载内核模块等,因此linux内核支持模块化开发,许多功能都可以编译为一个模块...linux内核架构图片OS允许CPU运行在用户态和内核态,而 linux 使用ring0和ring3两种模式实现内核态和用户态。...体系结构Arch抽象层:linux内核支持多种架构,例如ARM,X86等,目前已经支持几十种体系结构,而Arch抽象层抹去了不同架构之间硬件差异,做了一层统一抽象。...在linux内核5.6.18版本源码中,直接把不同架构做一个分目录操作,以提供对各个架构支持。图片进程调度模块:OS使用进程调度器支持多进程并发。

76530

Linux 内核架构分析

硬件控制层:该子系统由Linux安装中所有可能物理设备组成;例如,CPU,内存硬件,硬盘和网络硬件都是该子系统成员 2.内核架构 2.1 内核之作用 Linux内核为用户进程提供了虚拟机接口。...进程编程无需知道计算机上安装了什么物理硬件,Linux内核将所有硬件抽象为一致虚拟接口。...最后,任务数据结构还包含指向数据结构指针,该数据结构表示与每个任务关联所有打开网络连接。 3.各子系统架构分析 3.1 进程调度器架构 进程调度器是Linux内核中最重要子系统。...CPU负责中断当前正在执行进程,并允许内核调度另一个进程。 3.2 内存管理器架构 内存管理器子系统负责控制对硬件内存资源进程访问。...3.4 网络接口层架构 网络子系统允许Linux系统通过网络连接到其他系统。支持许多可能硬件设备,以及可以使用许多网络协议。

2.7K30

Linux 内核系统架构

这篇文章从进程调度,内存管理,设备驱动,文件系统,网络等方面讲解Linux内核系统架构。...Linux系统架构是一个经典设计,它优秀分层和模块化,融合了数量繁多设备和不同物理架构,让世界各地内核开发者能够高效并行工作。先来看看Linus在多年前公开Linux邮件。...这篇文章通过对内核主要模块介绍,希望能为大家寻找这些问题答案起一个抛砖引玉作用。实际上,建议每一个希望成为技术专家的人都读一遍Linux源代码。 先来看看Linux内核一个高阶架构图: ?...Linux系统架构架构非常清晰,从硬件层,硬件抽象层,内核基础模块(进程调度,内存管理,网络协议栈等)到应用层,这个基本上也是各类软硬件结合系统架构基础设计,例如物联网系统(从单片机,MCU等小型嵌入式系统...在IA-32架构体系中,端口地址空间包含了2^16个不同8位地址,这些地址可以通过从0x0到0xFFFFH间数唯一识别。每个端口都有一个设备分配给它,或者空闲没有使用,多个外设不能共享一个端口。

5K72

Linux 内核Linux 内核体系架构 ( 进程调度 | 内存管理 | 中断管理 | 设备管理 | 文件系统 )

包括 进程创建 , 销毁 , 线程组管理 , 内核线程管理 , 队列等待 ; 进程调度 位于 下图 Linux 内核整体架构图 中 内核空间 ; 二、内存管理 ---- 内存管理 涉及到 物理内存管理...物理内存管理 包括 : 页面分配器 等 ; 内存管理 位于 下图 Linux 内核整体架构图 中 内核空间 ; 三、中断管理 ---- 中断管理 包括 : 处理器异常处理 , 中断处理 ; 异常指的是...处理器执行时 , 检测 异常条件 , 处理器需要停止当前执行栈 , 处理异常 ; 中断管理 位于 下图 Linux 内核整体架构图 中 内核空间 ; 四、设备管理 ---- Linux 内核 支持外设类型...是最多 , 设备树 PCI 总线设备 设备模型 Kobject ACPI 网络设备驱动 块设备驱动 字符设备驱动 设备管理 位于 下图 Linux 内核整体架构图 中 内核空间 ; 五、文件系统...内核可以很方便集成各种文件系统 ; 文件系统 位于 下图 Linux 内核整体架构图 中 内核空间 ;

1.8K30

详解Linux内核内存管理架构

内存管理子系统可能是linux内核中最为复杂一个子系统,其支持功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高要求...本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手,尝试对内存管理软硬件架构做一些宏观上分析总结。...内存管理硬件架构 因为内存管理是内核最为核心一个功能,针对内存管理性能优化,除了软件优化,硬件架构也做了很多优化设计。下图是一个目前主流处理器上存储器层次结构设计方案。 ?...不同CPU体系架构在地址空间划分上不尽相同,但为了保证CPU体系差异对外部模块不可见,内存地址空间分配接口语义是一致。...内存管理软件架构 内核内存管理核心工作就是内存分配回收管理,其内部分为2个体系:页管理和对象管理。

3K42

Linux 内核 内存管理】内存管理架构 ① ( 内存管理架构组成 | 用户空间 | 内核空间 | MMU 硬件 | Linux 内核架构层次 | Linux 系统调用接口 )

文章目录 一、内存管理架构组成 ( 用户空间 | 内核空间 | MMU 硬件 ) 二、Linux 内核架构层次 三、Linux 系统调用接口 一、内存管理架构组成 ( 用户空间 | 内核空间 | MMU..." ; ② 内核空间 : Linux 内核启动后 , 一直 驻留在内存 中 , 应用程序 不能 读写 内核空间数据 , 不能直接调用 内核源码 中函数 ; 只能通过 " 系统调用 " 间接调用 内核函数...Memory Management Unit “ , 简称 ” MMU " ; 二、Linux 内核架构层次 ---- 整个操作系统 由 应用层 , Library Routine , 内核 , 硬件...组成 ; 层次架构如下 : Linux 内核 需要 " 管理硬件 " , 如 : CPU 处理器 , 内存 , I/O 设备 , 网络设备 等 ; Linux 内核 还需要 向上层 " 应用程序...⑤ 网络管理 : 内核 调用 网络接口 , 实现 网络管理 ; " 设备管理 " 对用户是透明 , 用户不直到 Linux 内核是如何管理设备 , 系统调用接口没有关于 " 设备管理 " 调用接口

9.5K40

Linux 内核 内存管理】Linux 内核内存布局 ② ( x86_64 架构体系内存分布 | 查看 procmeminfo 文件 | procmeminfo 重要字段解析 )

文章目录 一、查看 x86_64 架构体系内存分布 二、/proc/meminfo 重要字段解析 一、查看 x86_64 架构体系内存分布 ---- 执行 cat /proc/meminfo 命令 ,...可以查看 " x86_64 架构体系内存分布 " ; 执行结果参考 : root@ubuntu:~/kernel/linux-5.6.14# cat /proc/meminfo MemTotal:...DirectMap4k: 159552 kB DirectMap2M: 2985984 kB DirectMap1G: 3145728 kB root@ubuntu:~/kernel/linux...: 0 kB 等待被写回到磁盘内存大小 Writeback: 0 kB 正在被写内存大小 AnonPages: 492572 kB " 未映射页 " 内存 映射到 " 用户空间 " 后 页表大小...0 kB 可分配 最大 " 逻辑地址连续 " " 虚拟内存 "

1.5K30

Linux 内核】宏内核与微内核架构 ( 操作系统需要满足要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )

文章目录 一、操作系统需要满足要素 二、宏内核 三、微内核 四、Linux 内核动态加载机制 一、操作系统需要满足要素 ---- 电脑上运行 操作系统 , 是一个 软件 ; 设备管理 : 操作系统需要..., 线程是独立运行 , 独立调度最基本单位 ; 二、宏内核 ---- 宏内核 : 内核代码 编译成 二进制文件 , 内核 运行在 一个 大内核 地址空间 中 , 可以 直接 访问 , 调用 内核代码...; 四、Linux 内核动态加载机制 ---- Linux 内核模块动态加载 : Linux 内核 使用了 模块设计 , 可以进行 动态加载 内核模块 ; Linux 内核 核心实现 , 设备驱动实现..., 可以 编译成一个独立模块 , 这些独立模块可以被编译成 独立目标文件 , 可以在运行时 , 动态 加载 / 卸载 内核模块 ; 开发简单 : Linux 内核模块引入 , 带来了很多便利 , 很多内核驱动..., 都可以 编译成动态 加载 / 卸载 模块 , 驱动开发时 , 必须 遵守规定接口 , 来访问内核 , 这样 开发内核模块 , 变得 更加容易 , 方便 ; 与平台无关 : 内核模块 可以 设计成

4K30

探究Linux Kernel内核架构,让你成为真正内核专家

一、前言 本文是“Linux内核分析”系列文章第一篇,会以内核核心功能为出发点,描述Linux内核整体架构,以及架构之下主要软件子系统。...而现代计算机(无论是PC还是嵌入式系统)标准组成,就是CPU、Memory(内存和外存)、输入输出设备、网络设备和其它外围设备。所以为了管理这些设备,Linux内核提出了如下架构。...三、内核架构 3.1内核之作用 Linux内核为用户进程提供了虚拟机接口。 进程编程无需知道计算机上安装了什么物理硬件,Linux内核将所有硬件抽象为一致虚拟接口。...前100名进群领取,额外赠送一份价值699内核资料包(含视频教程、电子书、实战项目及代码) 四、各子系统架构分析 4.1进程调度器架构 进程调度器是Linux内核中最重要子系统。...4.4网络接口层架构 网络子系统允许Linux系统通过网络连接到其他系统。支持许多可能硬件设备,以及可以使用许多网络协议。

55610

Linux 内核 内存管理】memblock 分配器 ⑤ ( Linux 内核中定义 memblock 分配器位置 | ARM64体系架构Linux内核初始化 memblock 分配器流程 )

文章目录 一、Linux 内核中定义 memblock 分配器位置 二、ARM64 体系架构Linux 内核初始化 memblock 分配器流程 三、arm64_memblock_init 函数完整源码...一、Linux 内核中定义 memblock 分配器位置 ---- Linux 内核 定义 memblock 分配器 位置 : Linux 内核源码 linux-4.12\mm\memblock.c...-4.12\mm\memblock.c#34 二、ARM64 体系架构Linux 内核初始化 memblock 分配器流程 ---- 先在 linux-4.12\init#488 位置 asmlinkage...__visible void __init start_kernel(void) 内核启动函数中 , 调用 setup_arch(&command_line); 函数 , 然后再调用 ARM64 体系架构对应源码...分配器核心函数 ; ARM64 体系架构Linux 内核初始化 memblock 分配器流程 : ① 解析 " 设备树二进制文件 " /memory 节点 , 将 " 所有物理内存 " 纳入到

85610

内核中断体系概括

前言 本文对内核中断进行概括以及讲述中断具体实现方法在内核是怎么做,会结合内核源码中一些 .s 文件和 .c 文件来具体分析一下内核在中断中实现方式。...学习中断目的: 1、硬件中断响应 --------> 内核驱动中中断 2、系统调用函数响应(sys_call)--------> 系统调用 3、自定义中断--------> 软件软中断模式...跳转回正常工作函数地址继续运行 2、Linux 中中断工作流程 ①....,中断后回复过程 中断执行过程 硬件中断处理过程 linux/kernel/asm.s traps.c 软件及系统调用处理过程 linux/kernel/system_call.s fork.c.../asm.s trap.c 具体详细内容参考 Linux内核完全注释:基于0.11内核(修正版V3.0).pdf P55~P62 和 P256~P279 三、内核中断体系结构 1、trap_init

8410

深度解读 Linux 内核级通用内存池 —— kmalloc 体系

在之前这四篇文章中,笔者详细为大家介绍了 slab 内存池整体架构演化过程,随后基于这个演化过程,介绍了整个 slab alloactor 体系创建,内存分配,内存释放以及销毁等相关复杂流程在内核实现...3. kmalloc 内存池整体架构 kmalloc 内存池本质其实还是 slab 内存池,底层依赖于 slab alloactor 体系,在 kmalloc 体系内部,管理了多个不同尺寸 slab...,但实际上 kmalloc 体系所支持内存块尺寸与 slab allocator 体系实现有关,在 Linux 内核中 slab allocator 体系实现分为三种:slab 实现,slub 实现...现在我们在把 kmalloc 内存池中内存来源加上,kmalloc 总体架构又有了新变化: image.png 上图中所展示 kmalloc 内存池整体架构体系内核将其定义在一个 kmalloc_caches...好了,到现在我们已经清楚了 kmalloc 内存池整体架构,那么这个架构体系又是如何被创建出来呢 ?

49030

深度:一文看懂Linux内核Linux内核架构和工作原理详解

系统调用接口之下是内核代码,可以更精确地定义为独立于体系结构内核代码。这些代码是 Linux 所支持所有处理器体系结构所通用。...▲ Linux内核体系结构 Linux内核主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构相关代码。...Linux体系结构和内核结构区别 1.当被问到Linux体系结构(就是Linux系统是怎么构成)时,我们可以参照下图这么回答:从大方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了...,用户应用程序,C库; (2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关代码。...Linux内核体系结构 因为Linux内核是单片,所以它比其他类型内核占用空间最大,复杂度也最高。

1.4K30

深度:一文看懂Linux内核Linux内核架构和工作原理详解

全文导读 Linux内核预备工作 Linux内核体系结构简析简析 Linux体系结构和内核结构区别 Linux驱动platform机制 Linux内核体系结构 内核模块 Linux 内核学习经验总结...图2 Linux内核体系结构 Linux内核主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构相关代码。...Linux体系结构和内核结构区别 1.当被问到Linux体系结构(就是Linux系统是怎么构成)时,我们可以参照下图这么回答:从大方面讲,Linux体系结构可以分为两块: (1)用户空间:用户空间中又包含了...,用户应用程序,C库 (2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关代码 2.Linux体系结构要分成用户空间和内核空间原因: 1)现代CPU通常都实现了不同工作模式, 以ARM...Linux内核体系结构 因为Linux内核是单片,所以它比其他类型内核占用空间最大,复杂度也最高。

1.2K21

Linux 内核 内存管理】Linux 内核内存布局 ④ ( ARM64 架构体系内存分布 | 内核启动源码 start_kernel | 内存初始化 mm_init | mem_init )

文章目录 一、ARM64 架构体系内存分布 二、Linux 内核启动源码 start_kernel 三、内存初始化源码 mm_init 四、内存初始化源码 mem_init 一、ARM64 架构体系内存分布...---- ARM64 架构 " 物理地址 " 有 48 位 , 理论上最大 " 寻址空间 " 为 256 TB ; ARM64 架构 " 虚拟地址 " 也是 最大支持 48 位...寻址地址 ; Linux 内核 将 " 地址空间 " 划分为 : 内核空间 和 用户空间 ; ① 内核空间 ( Kernel Space ) : 寻址范围 0x FFFF 0000 0000 0000..." 不规范地址空间 " 是不允许使用 内存空间 ; 二、Linux 内核启动源码 start_kernel ---- 在 Linux 内核初始化完成后 , 会在 " 初始化内存 " 时 , 输出 内存布局...; Linux 内核启动源码是定义在 linux-5.6.18\init\main.c 源码中 asmlinkage __visible void __init start_kernel(void)

6.8K20

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需特权 | Windows 中配置 7z 命令行执行解压操作 ) 博客 ;...不同版本 Linux 内核 区别 : 系统调用 : 其系统调用是相同 , 新版本可能会增加新系统调用 ; 设备文件 : 各内核版本设备文件都是相同 , 但是 内部接口 可能不同 ; 二、使用

23.2K32
领券