自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 DPDK LPM路由存储与查找

DPDK的LPM模块实现了一种最长前缀匹配,其中的KEY是32位的,可以说是为查找路由量身定做的,为了实现快速查找,实现上使用了用空间换时间的思路。同时为了最大限度的减少查询次数,把32位的KEY值划分为24位和8位两张表中。这样的设计思路可以用于以后的前缀查找。本篇分析以16.07版本为例。......

2022-09-01 17:04:45 444 1

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

简介作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。更多Linux内核源码高阶知识请加开发交流Q群篇【318652197】获取,进群免费获取相关资料,免费观看

2022-05-07 13:57:15 1302

原创 音视频,WebRTC入门与提高1:WebRTC基础入门

当你在网上觉得音视频资料难找,有编译问题找不到人解答,项目中遇到问题找不到方向时,可以考虑我们的音视频课程:1. WebRTC入门本章目的:了解什么WebRTC 掌握WebRTC通话原理 学完该课程后的收获 1.1 什么是WebRTCWebRTC(Web Real-Time Communication)是 Google于2010以6829万美元从 Global IP Solutions 公司购买,并于2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让 We..

2022-05-06 19:57:32 289

原创 一文解析,Linux内核——Intel CPU体系结构

一、CPU指令的执行过程几乎所有的冯·诺伊曼型计算机的 CPU,其工作都可以分为 5 个阶段:取指令、指令译码、执行指令、访存取数、结果写回。图1 CPU指令的执行阶段1.取指令阶段取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。 程序计数器 PC 中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC 中的数值将根据指令字长度而自动递增:若为单字长指令,则(PC)+1->PC;若为双字长指令,则(PC)+2->PC

2022-04-28 20:02:02 620

原创 一篇长文简短介绍,Linux内核——内存屏障(收藏保留)

在阅读很多底层的代码时,经常会碰到一个所谓内存屏障的概念,经常搞得一头雾水。本文将对这个概念进行一个系统的介绍。一、为什么需要内存屏障内存屏障的引入,本质上是由于CPU重排序指令引起的。重排序问题无时无刻不在发生,主要源自以下几种场景:编译器编译时的优化; 处理器执行时的多发射和乱序优化; 读取和存储指令的优化; 缓存同步顺序(导致可见性问题)。下面分别解释一下:编译器优化编译器在不改变单线程程序语义的前提下,也就是保证单线程程序执行结果正确的情况下,可以重新安排语句的执行顺序。

2022-04-28 19:51:45 180

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

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

2022-04-28 19:43:31 1844

原创 Linux内核系统篇——内核的5个重要子系统?

为了让大家建立知识体系,零散的讲可能会让读者觉得有点难以接受,晦涩。所以本文呢,整体的讲解下内核重要的5个子系统。首先一张熟悉的图来说明GNU/linux的基本体系结构:体系的上部分是用户(或应用程序)空间,这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。Linux 内核可以进一步划分成 3 层:最上面是系统调用接口,用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为系统调用,它实现了一些基本的功能,例如 read 和

2022-04-27 16:05:46 2025

原创 什么是内存屏障?为什么需要内存屏障?

1.什么是内存屏障?,为什么需要内存屏障?首先,为了性能编译器和处理器都会对指令进行重排序。什么是内存屏障:内存屏障是一条指令,该指令可以对编译器(软件)和处理器(硬件)的指令重排做出一定的限制,比如,一条内存屏障指令可以禁止编译器和处理器将其后面的指令移到内存屏障指令之前。为什么需要内存屏障:编译器和处理器指令重排只能保证在单线程执行下逻辑正确,在多个线程同时读写多个变量的情况下,如果不对指令重排作出一定限制,代码的执行结果会根据指令重排后的顺序产生不同的结果。指令重排后的顺序每次执行时都可能

2022-04-27 14:40:41 3590 1

原创 一文搞懂 , Linux内核—— 同步管理(下)

上面讲的自旋锁,信号量和互斥锁的实现,都是使用了原子操作指令。由于原子操作会 lock,当线程在多个 CPU 上争抢进入临界区的时候,都会操作那个在多个 CPU 之间共享的数据 lock。CPU 0 操作了 lock,为了数据的一致性,CPU 0 的操作会导致其他 CPU 的 L1 中的 lock 变成 invalid,在随后的来自其他 CPU 对 lock 的访问会导致 L1 cache miss(更准确的说是communication cache miss),必须从下一个 level 的 cache 中

2022-04-26 16:12:33 601

原创 一文搞懂 , Linux内核—— 同步管理(上)

因为现代操作系统是多处理器计算的架构,必然更容易遇到多个进程,多个线程访问共享数据的情况,如下图所示:图中每一种颜色代表一种竞态情况,主要归结为三类:进程与进程之间:单核上的抢占,多核上的SMP; 进程与中断之间:中断又包含了上半部与下半部,中断总是能打断进程的执行流; 中断与中断之间:外设的中断可以路由到不同的CPU上,它们之间也可能带来竞态;这时候就需要一种同步机制来保护并发访问的内存数据。本系列文章分为两部分,这一章主要讨论原子操作,自旋锁,信号量和互斥锁原子操作原子操作是在

2022-04-26 16:06:33 1377

原创 当Linux内存耗尽时,该如何处理?

当内存不足时会发生什么,结果很简单,linux的内存用完了,无法申请缓冲区,内核会挑选进程将其杀死,一般情况下,杀死正在申请内存的程序。频繁的进行磁盘swap操作,经常会出现这类问题,或是并发处理时启动的进程数过多。出现内存耗尽的原因很简单,你申请的内存大小,超过了可用的虚拟内存的大小,注意是虚拟内存(内存并不是唯一的,交换分区也可以提供内存)探究oom(out of memory)首先运行下面的程序,不断申请大量内存:#include <stdio.h>#include &

2022-04-26 15:00:29 1767

原创 一文讲述,什么是pci总线原理?

PCI即Peripheral Component Interconnect,中文意思是“外围器件互联”,是由PCISIG (PCI Special Interest Group)推出的一种局部并行总线标准。在现在电子设备中应用非常广泛,下面我详细介绍下PCI总线的工作原理,希望对大家有所帮助。PCI总线的过去现在和未来  PCI总线是由ISA(Industy Standard Architecture)总线发展而来的。  ISA并行总线有8位和16位两种模式,时钟频率为8MHz,总线带宽为:8b

2022-04-25 17:18:32 1204

原创 Linux内核页缓存实现简介

1. 缓存简介在编程中,缓存是很常见也很有效的一种提高程序性能的机制。linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据缓存到内存中。1.1 原理之所以通过缓存能提高I/O性能是基于以下2个重要的原理:CPU访问内存的速度远远大于访问磁盘的速度(访问速度差距不是一般的大,差好几个数量级) 数据一旦被访问,就有可能在短期内再次被访问(临时局部原理)1.2 策略缓存的创建和读取没什么好说的,无非就是检查缓存是否存在要创建或者要读取的内容。但是写缓

2022-04-25 17:10:10 456

转载 深入了解MMU是如何完成地址翻译的?

虚拟内存是现代操作系统中最伟大的发明之一。它为每个进程提供了一个一致的、私有的地址空间,让每个进程产生了一种自己在独享主存的错觉。为了讲清楚MMU是如何一步一步完成地址翻译,取出数据的,本篇文章在前4节中讲解了虚拟内存中一些重要的概念,比如,虚拟内存的作用,页命中,缺页异常处理,为什么需要TLB等等。最后,通过两个地址翻译的例子,详细解释了MMU地址翻译的过程。1. 什么是虚拟内存?虚拟内存能够创建一个连续的更大的空间给进程使用,出现的原因是由于主存的空间是有限。 当运行多个进程或者一个进程需要

2022-04-23 16:10:42 466

原创 详细讲解,Linux内核——内存屏障简介

在阅读很多底层的代码时,经常会碰到一个所谓内存屏障的概念,经常搞得一头雾水。本文将对这个概念进行一个系统的介绍。一、为什么需要内存屏障内存屏障的引入,本质上是由于CPU重排序指令引起的。重排序问题无时无刻不在发生,主要源自以下几种场景:编译器编译时的优化; 处理器执行时的多发射和乱序优化; 读取和存储指令的优化; 缓存同步顺序(导致可见性问题)。下面分别解释一下:编译器优化编译器在不改变单线程程序语义的前提下,也就是保证单线程程序执行结果正确的情况下,可以重新安排语句的执行顺序。

2022-04-22 20:31:32 513

原创 Linux内存管理(最透彻的一篇)

摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市面上或是网上都充斥着大量涉及内存管理的教材和资料。因此,我们这里所要写的Linux内存管理采取避重就轻的策略,从

2022-04-22 19:45:16 628

原创 不是吧,还有人不知道计算机以及Linux基础知识?

在当今社会计算机(computer)俗称电脑,已经成为我们日常生活中无法取代的必需品,那么什么是计算机?让我们来了解一下吧~一、计算机的组成及其功能计算机是什么    计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机

2022-04-21 17:32:29 125

原创 十年码农讲解Linux型内核,操作系统 --- 虚拟文件系统

1、虚拟文件系统的分层结构上层:虚拟文件系统底层:特定文件系统模块,例如:网络文件系统(nfs、smb)等其他类型文件系统虚拟文件系统的目的:将接口暴露给用户,屏蔽底层文件系统的差异性,它是对所有不同文件系统的抽象虚拟文件系统的功能: - 提供一致的文件和文件系统接口 - 管理所有文件和文件系统关联的数据结构 - 高效查询例程,遍历文件系统 - 与特定文件系统模块的交互基本数据结构: - 卷控制块,总的,superblock,每个文件系统一个,块,块大小,空余块,计

2022-04-21 16:23:14 942

原创 详细了解操作系统,进程调度策略,有哪几种?

一.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。二.短作业(进程)优先调度算法短作业(进程)优先调度算法SJ

2022-04-21 15:01:20 1284

原创 详细讲解Linux内核epoll内核原理与实现

第一部分:select和epoll的任务关键词:应用程序 文件句柄 用户态 内核态 监控者要比较epoll相比较select高效在什么地方,就需要比较二者做相同事情的方法。要完成对I/O流的复用需要完成如下几个事情:1.用户态怎么将文件句柄传递到内核态?2.内核态怎么判断I/O流可读可写?3.内核怎么通知监控者有I/O流可读可写?4.监控者如何找到可读可写的I/O流并传递给用户态应用程序?5.继续循环时监控者怎样重复上述步骤?搞清楚上述的步骤也就能解开epoll高效的原因

2022-04-20 17:13:53 543

原创 2022最新死锁面试题(什么是死锁,产生死锁的原因及必要条件)

什么是死锁?所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示:产生死锁的原因?可归结为如下两点:a. 竞争资源系统中的资源可以分为两类:可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,CPU和主存均属于可剥夺性资源; 另一类资

2022-04-20 15:29:30 407

原创 对Linux内核调度器源码深入分析

调度器(Scheduler)子系统是内核的核心子系统之一,负责系统内 CPU 资源的合理分配,需要能处理纷繁复杂的不同类型任务的调度需求,还需要能处理各种复杂的并发竞争环境,同时还需要兼顾整体吞吐性能和实时性要求(本身是一对矛盾体),其设计与实现都极具挑战。为了能够理解 Linux 调度器的设计与实现,我们将以 Linux kernel 5.4 版本(TencentOS Server3 默认内核版本)为对象,从调度器子系统的初始化代码开始,分析 Linux 内核调度器的设计与实现。本(系列)文通过分析 Li

2022-04-19 16:08:44 809 1

原创 学习linux内核-- 内存,看一篇就够了(多图)

内存模块1 linux内存总体布局:内存分成用户态和内核态4G进程地址空间解析内核地址空间进程地址空间2 地址转换和页表2.1 地址转换虚拟内存是指程序使用的逻辑地址。每个进程4G。所有进程共享物理内存4G,所以逻辑地址和物理地址不是一一对应,需要地址转换.页表由3部分组成:页目录,页面,页内偏移32bit只有3级 0 -11位:页内偏移OFFSET 12-21位:页面表偏移PT(PTE 页表项.指向一张具体的物理内存页) 22-31位:页面目录偏移.

2022-04-19 15:14:02 1503

原创 十年码农教你学习,linux内存管理——内存管理架构

通常情况下,一个高级操作系统必须要给进程提供基本的、能够在任意时刻申请和释放任意大小内存的功能,就像malloc 函数那样,然而,实现malloc 函数并不简单,由于进程申请内存的大小是任意的,如果操作系统对malloc 函数的实现方法不对,将直接导致一个不可避免的问题,那就是内存碎片。内存碎片就是内存被分割成很小很小的一些块,这些块虽然是空闲的,但是却小到无法使用。随着申请和释放次数的增加,内存将变得越来越不连续。最后,整个内存将只剩下碎片,即使有足够的空闲页框可以满足请求,但要分配一个大块的连续页框

2022-04-19 15:00:13 115

原创 Linux内核学习路线 ,应从入门到深入,学内核就来零声教育

学习linux内核,这个可不像学一门语言,c或者java一个月或者3月你就能精通掌握。学习linux内核是需要一步一步循序渐进,掌握正确的linux内核学习路线对学习至关重要,本篇文章就来分享学习linux内核的一些建议吧。1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Lov

2022-04-16 17:39:23 4746 2

原创 网络热门知识点,Linux内核——网络协议栈基本知识

1、网络协议分层按照分层的思想把网络协议栈进行分层主要有以下好处:1.促进标准化工作,允许各个供应商进行开发2.各层间相互独立,把网络操作分成低复杂单元3.灵活性好,某一层变化不会影响到其它层4.各层间通过一个接口在相邻层上下通信OSI七层模型和TCP/IP五层模型的对比如下,我们现在用的是五层协议模型:2、PDU、封装和解封装PDU(protocol data unit):每一层使用自己层的协议和别的系统的对应层相互通信,协议层的协议在对等层之间交换的信息叫协议数据单元

2022-04-16 16:04:47 1824

原创 2022年了,我不允许还有人不懂操作系统——内存管理

操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理和虚拟内存管理。物理内存管理:包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。虚拟内存管理:虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。这个系列主要使用linux内存管理来具体说明:linux内存管理一、 计算机的存储体系内存是计算机很重要的一个资源,因为程序只有被加载到内存中才可以运行;此外,CPU所需要的指令与数据也都是来自内存的

2022-04-16 15:05:40 232

原创 十年内核开发者来告诉你,什么叫中断管理(rtthread)

一.中断管理当 CPU 正在处理内部数据时,外界发生了紧急情况,要求 CPU 暂停当前的工作转去处理这个 异步事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的系统称为 中断系统,申请 CPU 中断的请求源称为 中断源。中断是一种异常,异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性地瘫痪。如下图是一个简单的中断示意图。二.RT-Thread 中断工作机制1.中断向量表中断向量表是所有

2022-04-15 17:30:32 252

原创 我不允许现在还有不知道Linux基础,进程及进程管理

进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。Linux进程Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝。Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立

2022-04-15 16:31:50 624

原创 都22年了,还有人不懂mmap内存映射详解?收藏保存

mmap基础概念mmap是一种内存映射的方法,这一功能可以用在文件的处理上,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。在编程时可以使某个磁盘文件的内容看起来像是内存中的一个数组。如果文件由记录组成,而这些记录又能够用结构体来描述的话,可以通过访问结构数组来更新文件的内容。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系

2022-04-15 14:47:17 394

原创 一篇文章让你对sysfs文件及属性了解透彻【Linux内核】

Linux2.6 的内核引入了 sysfs 文件系统。sysfs 被看成是与 proc,devfs,和 devpty 同类别的文件系统。sysfs 把连接在系统上的设备和总线组织成为一个分级的文件,它们可以被从用户的空间存取到。这是被设计用来处理那些以前驻留在 /proc/ 的设备和驱动程序指定的选件以及用来处理那些以前由 devfs 提供支持的动态加载设备。在早期的 sysfs 实现中,一些驱动和应用仍然被当做老的 proc 条目。但是 sysfs 是未来的发展方向。提要sysfs是2.6内核的一个

2022-04-14 20:46:28 502

原创 内核最新知识,CPU高速缓存那些事儿?

引言:在分析JDK8新增的高并发原子累加器Striped64的时候,发现有一个“伪共享”的概念,而要理解它必须对CPU缓存有一定的了解,所以本文将先对CPU的缓存架构以及一些相关术语做一个研究探索。CPU缓存的原理众所周知,在如今的计算机时代,CPU的运算处理速度与内存读写速度的差异非常巨大,为了解决这种差异充分利用CPU的使用效率,CPU缓存应运而生,它是介于CPU处理器和内存之间的临时数据交换的缓冲区。CPU缓存和内存都是一种断电即掉的非永久随机存储器RAM,那么它和内存在物理上有什么差异吗

2022-04-14 16:27:33 743

原创 Linux内核——页交换文件,强烈推荐

物理存储器和页交换文件《Windows核心编程(第5版)》第13章Windows内存体系结构,本章将深入探讨Microsoft Windows所使用的内存体系结构。本节为大家介绍的是物理存储器和页交换文件。AD:13.5 物理存储器和页交换文件在老式的操作系统中,物理存储器被认为是机器中内存的总量。换句话说,如果一台机器装有16 MB内存,那么应用程序最多可以使用16 MB内存。当今的操作系统能让磁盘空间看起来像内存一样。磁盘上的文件一般被称为页交换文件(paging file),其中包含虚

2022-04-14 15:22:55 322

原创 2022年了还不会内核, 看这篇就够了,最新最详细

目录操作系统概述Linux 操作系统安装Linux 文件系统Linux 命令操作Linux 权限管理用户和用户组用户操作命令权限操作Linux 进程管理Linux 其他常用命令大全Linux 系统软件安装常用软件安装软件安装常用命令操作系统概述操作系统 Operating System 简称 OS,通俗讲就是一款软件,不过和一般的软件不同,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他的

2022-04-13 16:20:03 95

原创 清晰讲解Linux内核,连续内存分配与非连续内存分配(图例解析)

一. 连续内存分配1.计算机体系结构和内存层次存储的层次结构首先是cpu中的两级缓存,如果在读写指令时,缓存中有数据了,那么这时候速度是最快的。 如果没在缓存中,则必须去内存里读。(前两者是在硬件上) 如果内存里还是没有,则需要通过操作系统的控制去外存里读 这三者之间的访问速度差异很大内存管理的需求抽象:把线性的物理地址编号转换成抽象的逻辑地址空间 保护:每个进程只能访问自己的空间,尽管在内存中他们是相邻存放的 共享:任何保护机制都具有灵活性,以允许多个进程访问内存同一部分

2022-04-13 15:06:19 1006

原创 一文讲解,Linux内核中的内存管理(图例解析)

,内核管理内存的方式(1)内核把物理页作为内存管理的基本单位,内存管理单元通常以页为单位进行处理,所以,从虚拟内存角度来看,页就是最小单位。大多数32位系统支持4kb的页,64位系统支持8kb的页。(2)内核用这个结构体表示并管理系统中每个物理页。(3)由于硬件的限制,内核需要把页划分为不同的区,形成不同的内存池,根据用途进行分配。其中ZONE_DMA 物理内存 <16MBZONE_NORMAL 物理内存16-896MBZONE_HIGHMEM 物理内存&.

2022-04-12 17:11:25 346

原创 中兴架构师带你学习,linux内核嵌入式底层原理开发,学习路线图

1. 了解操作系统基本概念。如果不会,可以学习《操作系统:设计与实现》Andrew S.Tanenbaum 写的那本。以MINIX为例子讲解操作系统的概念。非常推荐。2. 有了操作系统的基本概念以后,可以了解Linux的机制了。推荐《Linux内核设计与实现》Robert Love 写的。这本书从概念上讲解了Linux有什么,他们是怎么运行的。这本书要反复认真看透。3. 有了Linux内核的了解,还需要具体研究Linux内核源码。最经典的就是《深入理解Linux内核》Daniel P. Bovet 写的

2022-04-12 17:02:11 394

原创 Linux内核中的内存管理(图例解析)

一 ,内核管理内存的方式(1)内核把物理页作为内存管理的基本单位,内存管理单元通常以页为单位进行处理,所以,从虚拟内存角度来看,页就是最小单位。大多数32位系统支持4kb的页,64位系统支持8kb的页。(2)内核用这个结构体表示并管理系统中每个物理页。(3)由于硬件的限制,内核需要把页划分为不同的区,形成不同的内存池,根据用途进行分配。其中ZONE_DMA 物理内存 <16MBZONE_NORMAL 物理内存16-896MBZONE_HIGHMEM 物理内存

2022-04-11 21:05:21 1397

原创 2022年了你还不懂,系统性学习Ext4文件系统,(图例解析)

目录Ext4文件系统布局综述1.磁盘布局2.灵活块组(flex_bg)3.元块组(Meta Block Groups)4.懒惰块组初始化5.特殊inodes6.数据块和Inode分配策略7. 超级块8. 块组描述符9. 数据块位图与inode位图10. Inode表11. 查找inode12. inode.i_block0[]s的内容13. 符号链接14. 直接/间接块地址15. Extent 树16. Extent树数据块校验和:可能加.

2022-04-11 20:56:44 664

原创 一文讲解Linux内核——设备驱动(收藏)

Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别.在linux中,驱动程序都是模块化的。module 翻译成中文就是模块,它可以被动态载到 kernel 里成为 kernel的一部分。载到 kernel 里的 module 它具有跟 kernel 一样的权力。可以 access 任何 kernel 的 data structure)。驱动程序Module加载到kernel由俩种方式,静

2022-04-11 20:21:28 2530

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除