Linux
文章平均质量分 93
Linux内核源码阅读
SherlockCharlie
这个作者很懒,什么都没留下…
展开
-
Linux虚拟文件系统
在Linux帝国里内存管理系统相当于户部,管理着Linux的土地财政(内存)。而虚拟文件系统相当于工部,管理着Linux的交通水利(设备驱动)。工部的运转需要户部的财政支持,户部的运转需要工部的交通水利。因此系统内部子系统之间是相互依存互为支撑的。Linux内存管理需要虚拟文件系统提供后备存储器来实现内存页缓存(通过address_space),内存系统需要借助虚拟文件系统与外部设备联系(字符设备和块设备)。...原创 2021-06-22 10:39:41 · 618 阅读 · 0 评论 -
Linux进程虚拟内存
到现在为止我们仍然在讨论Linux内存,最开始内存是一块荒漠,后来我们把Linux这架星际火箭着陆到这块荒漠,并开始对这块荒漠进行地址编排规划,这个规划粒度是细的,是以比特位为基础的划分,每个比特位都对应一个地址。有了这个基础的地址编排,我们开始做减法,我们已地址为基础进行分段分页,这块荒漠慢慢变得规整了。紧接着我们从功能区为出发点将这块规整过的荒漠划分,并创造了空间,节点,域的概念来描述这些功能区,并与内存页进行了映射,把页和区着两个维度联系在一起了。再后来我们组织了基建队(内存分配系统)来供给政府大楼(原创 2021-05-19 18:30:56 · 654 阅读 · 3 评论 -
Linux内存分配系统
上一篇我们从内存结点,内存域的维度查看了Linux内存管理。本篇接着从内存分配的维度来看Linux内存管理。到现在为止,内核建立起了节点,域,页三级管理结构,并完成了页表映射。但是这一切都是在启动期内存管理器的基础上建立的,我们自建的内存管理器只完成了内存映射,还不具备内存分配的功能。为此接下来内核需要建立内存分配系统,Linux从内存分配效率,内存利用率的角度出发在前述管理结构上建立起hubby子系统来对接内存页分配,但是这还不够,考虑到系统中各种可能的对象尺寸和内存分配效率,Linux在hubby子系统原创 2021-05-14 15:55:37 · 426 阅读 · 0 评论 -
Linux内存域管理
Linux作为通用硬件内核,在内存管理上如何实现通用且高效。在前面Linux内存分段分页一篇我们主要讲解Linux内核进行物理地址逻辑地址线性地址的抽象映射,犹如在蛮荒之地为各家各户划分领土,像极了土地改革。考虑一个国家的土地治理过程,在建国初期,百废待兴,内存资源如同土地资源一样,珍贵有限。如何进行土地改革是国之大事关系到国家的规划建设和发展,内存管理如是,如何进行内存管理规划关系到系统的整体规划和发展。正如土改给每家每户划分土地一样,内核将内存按地址划分,通过虚拟地址编排每个内存地址都被规划到页表当中。原创 2021-05-03 12:26:31 · 464 阅读 · 1 评论 -
Linux内存分段分页
内存是存储体的一种,运行速度较磁盘块。随着集成技术越来越精细,内存存储量从字节,千字节,兆字节,GB,…容量越来越大。如何有效地管理内存是一门艺术。在80X86体系中通过分段部件和分页部件提供内存管理的支持,由此从换分出实地址模式,保护模式。实地址模式下一般是裸机程序,Linux启动起始内核代码载入内存运行并没有内存管理机制,因此内核是以裸机程序运行,接着通过创建自举分配器创建一个零时的内存分配器来支持系统进一步构建内存管理子系统,待内存管理子系统构建完成以后便抛弃这个自举分配器,同时内核由实地址模式进入到原创 2021-04-18 16:16:36 · 771 阅读 · 0 评论 -
Linux启动流程
上一篇了解了elf文件,本篇继续Linux的征程。Linux的启动过程便是操作系统的构建过程,必须转换视角把Linux看作是一部精密的机器,自然的地Linux分解然后再重构。把Linux的启动过程看作是火箭的发射过程,点火升空,脱离一级助推,脱离二级助推,进入预定轨道,怠速运行…一.构建Linux是宏内核,是一个大型c程序。Linux编译后成为一个bzImage二进制文件,格式为elf。linux-5.4.80/arch/x86/boot/Makefile$(obj)/bzImage: $(obj原创 2021-03-24 16:05:41 · 373 阅读 · 0 评论 -
Linux ELF文件
ELF全称:可执行链接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的。ELF文件有三种不同类型:可重定位文件:包含代码和数据,用于链接成可执行文件或共享目标文件后使用(.o文件和.a静态库)。可执行文件:包含二进制代码和数据,可直接复制到存储器并执行(/bin或/usr/bin目录下的文件。共享目标文件:特殊的可重定位文件,可在加载或运行时被动态地加载到存储器并链接。文件最前部为ELF文件头,描述了整原创 2021-02-20 17:05:30 · 785 阅读 · 0 评论 -
Linux5.4内核编译
Linux是如此美妙,如此有趣。Like Matrix,It’s Everywhere !编译环境Windows10, Vmware16, Ubuntu20.04,虚拟环境。PC机,内存32G,CPU 16 核心,I7八代。源码下载检查Ubuntu虚拟环境的内核版本,本人编译环境内核版本为 version-5.8.0然后到 https://www.kernel.org 下载接近的版本,本人下载的是5.4.80版。下载完后拷贝到home目录解压得到linux-5.4.80的源代码文件夹。源原创 2021-02-18 17:50:08 · 2682 阅读 · 0 评论