
Linux内核
文章平均质量分 83
Linux服务器开发
C/C++Linux后台服务器开发高级架构师内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。
展开
-
内存管理:程序是如何被优雅的装载到内存中
内存作为计算机中一项比较重要的资源,它的主要作用就是解决CPU和磁盘之间速度的鸿沟,但是由于内存条是需要插入到主板上的,因此对于一台计算机来说,由于物理限制,它的内存不可能无限大的。我们知道我们写的代码最终是要从磁盘被加载到内存中的,然后再被CPU执行,不知道你有没有想过,为什么一些大型游戏大到10几G,却可以在只有8G内存的电脑上运行?甚至在玩游戏期间,我们还可以聊微信、听音乐...,这么多进程看着同时在运行,它们在内存中是如何被管理的?带着这些疑问我们来看看计算系统内存管理那些事。原创 2022-09-13 16:58:05 · 378 阅读 · 0 评论 -
深入理解Linux I/O系统
其中,页缓存(PageCache)是操作系统对文件的缓存,用来减少对磁盘的 I/O 操作,以页为单位的,内容就是磁盘上的物理块,页缓存能帮助程序对文件进行顺序读写的速度几乎接近于内存的读写速度,主要原因就是由于 OS 使用 PageCache 机制对读写访问操作进行了性能优化。而 mmap 做了什么?在 Linux 系统中,传统的访问方式是通过 write() 和 read() 两个系统调用实现的,通过 read() 函数读取文件到到缓存区中,然后通过 write() 方法把缓存中的数据输出到网络端口。..原创 2022-08-09 14:43:07 · 224 阅读 · 0 评论 -
深入Linux内核IO技术栈
在开始正式的讨论前,我先抛出几个问题:谈到磁盘时,常说的HDD磁盘和SSD磁盘最大的区别是什么?这些差异会影响我们的系统设计吗?单线程写文件有点慢,那多开几个线程一起写是不是可以加速呢?write函数成功返回了,数据就已经成功写入磁盘了吗?此时设备断电会有影响吗?会丢失数据吗?write调用是原子的吗?多线程写文件是否要对文件加锁?有没有例外,比如append方式?坊间传闻,mmap的方式读文件比传统的方式要快,因为少一次拷贝。真是这样吗?为什么少一次拷贝?...原创 2022-08-05 14:59:33 · 584 阅读 · 0 评论 -
【干货分享】红黑树硬核讲解
预防针:红黑树本来就是基本算法中的难点,所以看此文时建议先有点预备心理或知识铺垫,没接触过RBT而直接看此文的话,绝对懵逼。为了数据的查询跟增删方便,系统引入了二叉查找树,它具有左节点 < 根节点 .........原创 2022-06-27 16:27:43 · 332 阅读 · 0 评论 -
万字整理,肝翻Linux内存管理所有知识点【Linux内核开发人员必学】都是精髓
Linux的内存管理可谓是学好Linux的必经之路,也是Linux的关键知识点,有人说打通了内存管理的知识,也就打通了Linux的任督二脉,这一点不夸张。有人问网上有很多Linux内存管理的内容,为什么还要看你这一篇,这正是我写此文的原因,网上碎片化的相关知识点大都是东拼西凑,先不说正确性与否,就连基本的逻辑都没有搞清楚,我可以负责任的说Linux内存管理只需要看此文一篇就可以让你入Linux内核的大门,省去你东找西找的时间,让你形成内存管理知识的闭环。文章比较长,做好准备,深呼吸,让我们一起打开Linux原创 2022-06-15 15:53:24 · 486 阅读 · 0 评论 -
Linux内核必懂知识—调度器分析及完全公平调度器CFS
调度器分析调度器 内核中安排进程执行的模块,用以切换进程状态。 做两件事:选择某些就绪进程来执行;打断某些执行的进程让其变为就绪状态。 分配CPU时间的基本依据:进程优先级。 上下文切换(context switch):将进程在CPU中切换执行的过程,内核承担 此任务,负责重建和存储被切换掉之前的CPU状态。 调度类sched_class结构体与调度类sched_class结构体表示调度类,定义在kernel/sched/sched.h。 成员解析 ecqueue原创 2022-04-18 15:43:34 · 1144 阅读 · 0 评论 -
Linux性能优化—内存实战篇
一、Linux内存工作原理相关视频讲解:深入讲解Linux内核内存管理(第一节)深入讲解Linux内核内存管理( 第二节)Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈1,内存映射 Linux内核给每个进程都提供了一个独立的虚拟空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。 虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个CPU指令可以处理数据的最大长度)的处理器,地址空间的范围也不原创 2022-03-18 15:43:44 · 2444 阅读 · 0 评论 -
Linux 内核学习知识:浅析 offsetof 宏以及内核开发学习的所思所想(内核开发人员必读)
最近一头扎进了 Linux 内核的学习中,Linux 内核的学习,需要的基础知识太多太多了:C 语言、汇编语言、数据结构与算法、操作系统原理、计算机组成原理、计算机体系结构。在囫囵吞枣补完一些计算机基础知识后,还是在一开始就被一个小小的 offsetof 宏搞晕了。文末附上小编整理Linux内核开发学习知识点总结以及思维导图,供参考offsetof 宏先来看看offsetof宏是什么,这是定义在 <linux/stddef.h>中的一个宏,用来计算一个 struct 结构体中某个成员原创 2022-03-12 15:30:31 · 1713 阅读 · 0 评论 -
深入理解掌握零拷贝技术
前言零拷贝技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。原始的网络请求,需要数次在用户态和内核态之间切换以及数据的拷贝,这无疑大大影响了处理的效率,零拷贝技术就是为解决这一问题而诞生的。我们常见的高性能组件(Netty、Kafka等),其内部基本都应用了零拷贝,在学习这些组件之前,有必要先了解什么是零拷贝。推荐视频:C++架构师学习地址:C/C++Linux服务器开发高级架构师/Linux后台原创 2021-09-22 15:34:23 · 522 阅读 · 0 评论 -
Linux内核内存管理:地址转换和MMU
地址转换和MMU虚拟内存是一个概念,是给进程的一种错觉,因此它认为自己拥有巨大的、几乎无限的内存,有时甚至比系统实际拥有的内存还要多。每次访问内存位置时,由CPU将虚拟地址转换为物理地址。这种机制称为地址转换,由内存管理单元(MMU)完成,是CPU的一部分。MMU保护内存免受未经授权的访问。给定一个进程,需要访问的任何页面必须存在于进程VMAs中,因此必须存在于进程页表中(每个进程都有自己的页表)。内存由固定大小的命名页(用于虚拟内存)和帧(用于物理内存)组织,在我们的示例中大小为4 KB。无原创 2021-08-25 15:47:18 · 851 阅读 · 0 评论 -
Linux内核源码分析之内存管理
本文站的角度更底层,基本都是从Linux内核出发,会更深入。所以当你都读完,然后再次审视这些功能的实现和设计时,我相信你会有种豁然开朗的感觉。1、页内核把物理页作为内存管理的基本单元。尽管处理器的最小处理单位是字(或者字节),但是MMU(内存管理单元,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。所以从虚拟内存看,页也是最小单元。体系不同,支持的页大小不同。大多数32位体系结构支持4KB的页,而64位体系结构一般会支持8KB的页。内核用struct page结构体表示原创 2021-08-24 16:14:31 · 635 阅读 · 0 评论 -
Linux内核源码分析方法—程序员进阶必备
一、内核源码之我见Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径。我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写。编程固然重要,但是往往只编程的人很容易把自己局限在自己的知识领域内。如果要扩展自己知识的广度,我们需要多接触其他人编写的代码,尤其是水平比我们更高的人编写的代码。通过这种途径,我们可以跳出自己知识圈的束缚,进入他人的知识圈,了解更多甚至我们一般短期内无法了原创 2021-08-23 16:08:34 · 411 阅读 · 0 评论 -
Linux内核分析学习路线总结(内核人员必看)
1、Linux体系架构(文末附上学习思维导图)如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态。 内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。 用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。用户态的应用程序可以通过三种方式来访问内核态的资源:1)系统调用2)库函数3)Shell脚本这三种方式也在上图中有所体现。二、Linux内核的启动过原创 2021-08-06 15:56:41 · 5110 阅读 · 1 评论 -
红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开发丨linux后台开发
红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)视频讲解如下:红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开发丨linux后台开发丨网络编程C/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击原创 2021-08-03 15:20:32 · 452 阅读 · 0 评论 -
Linux进程调度-CFS调度器原理分析及实现,懂了
1. 概述(1) Completely Fair Scheduler,完全公平调度器,用于Linux系统中普通进程的调度。(2) CFS采用了红黑树算法来管理所有的调度实体 sched_entity,算法效率为O(log(n))。CFS跟踪调度实体sched_entity的虚拟运行时间vruntime,平等对待运行队列中的调度实体sched_entity,将执行时间少的调度实体sched_entity排列到红黑树的左边。(3) 调度实体sched_entity通过 enqueue_entity()和原创 2021-08-03 15:09:06 · 1491 阅读 · 0 评论 -
TCP/IP网络协议栈在Linux内核中的如何使用丨内核开发丨驱动开发丨操作系统丨内核源码
TCP/IP网络协议栈在Linux内核中的如何使用视频讲解如下,点击观看:TCP/IP网络协议栈在Linux内核中的如何使用丨内核开发丨驱动开发丨操作系统丨内核源码C/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接进入订阅不迷路随时观看:C/C++Linux服务器开发/Li原创 2021-06-28 15:45:37 · 195 阅读 · 0 评论 -
从底层原理出发详解红黑树在Linux内核中的3种经典用法,让你知其所以然
从底层原理出发详解红黑树在Linux内核中的3种经典用法,让你知其所以然丨进程管理|内存管理|sk_buff|B树|B+树视频讲解如下,点击观看:从底层原理出发详解红黑树在Linux内核中的3种经典用法,让你知其所以然丨进程管理|内存管理|skC/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识原创 2021-06-28 15:37:13 · 155 阅读 · 0 评论 -
TCP/IP协议栈在Linux内核中的运行时序分析
本文主要是讲解TCP/IP协议栈在Linux内核中的运行时序,文章较长,里面有配套的视频讲解,建议收藏观看。1 Linux概述 1.1 Linux操作系统架构简介Linux操作系统总体上由Linux内核和GNU系统构成,具体来讲由4个主要部分构成,即Linux内核、Shell、文件系统和应用程序。内核、Shell和文件系统构成了操作系统的基本结构,使得用户可以运行程序、管理文件并使用系统。内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/I原创 2021-06-18 20:37:19 · 623 阅读 · 1 评论 -
从底层原理出发,了解Linux内核之内存管理
本文讲解更加底层,基本都是从Linux内核出发,会更深入。所以当你都读完,然后再次审视这些功能的实现和设计时,我相信你会有种豁然开朗的感觉。1、页内核把物理页作为内存管理的基本单元。尽管处理器的最小处理单位是字(或者字节),但是MMU(内存管理单元,管理内存并把虚拟地址转换为物理地址的硬件)通常以页为单位进行处理。所以从虚拟内存看,页也是最小单元。体系不同,支持的页大小不同。大多数32位体系结构支持4KB的页,而64位体系结构一般会支持8KB的页。内核用struct page结构体表示.原创 2021-06-08 16:41:31 · 304 阅读 · 0 评论 -
Linux内核之进程管理《Linux内核设计与实现》
文章相关视频详解:(文末附上基于Linux内核4.0版本学习路线思维导图)详解:讲解Linux内核 进程管理,调度器的5种实现 看完视频还不会来找我。1、进程的概念进程就是处于执行器的程序(目标代码放在某种存储介质上)。但进程并不仅仅局限于一个可执行程序代码,通常还要包含其他资源,比如:打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间,一个或多个可执行线程,存放全局变量的数据段等。内核需要有效而又透明地管理所有细节。执行线程(thread o原创 2021-05-24 21:26:31 · 369 阅读 · 4 评论 -
perf-网络协议栈性能分析
分析 Linux 网络协议栈性能有多种方式和工具。本文主要通过 Perf 生成 On-CPU 火焰图的方式,分析 Linux 内核网络协议栈在特定场景下的性能瓶颈,从而知晓当前协议栈的网络状况。文章相关视频详解:深入浅出Linux内核网络协议栈Linux内核内存管理专题训练营-学习视频关于 On/Off-CPU概念定义 1 2 3 On-CPU:wherethreadsarespendingtimerunningon-CP...原创 2021-05-22 20:59:13 · 427 阅读 · 0 评论 -
深入浅出Linux内核网络协议栈|结构sk_buff|Iptables|Netfilter丨内核源码丨驱动开发丨内核开发丨C/C++Linux服务器开发
深入浅出Linux内核网络协议栈视频讲解如下,点击观看:深入浅出Linux内核网络协议栈|结构skC/C++Linux服务器开发高级架构师知识点精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接进入订阅不迷路随时观看:C/C++Linux服务器开发/Linux后台架构师-学习视频Linux服务器开发高级架构qun:原创 2021-05-15 16:43:29 · 160 阅读 · 2 评论 -
“红黑树”详解丨红黑树的应用场景
今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入、搜索、删除的效率都比较高。红黑树也是实现 TreeMap 存储结构的基石。文章相关视频讲解:红黑树在linux中的3种应用场景,听完受益匪浅5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶c/c++Linux后台服务器开发高级架构师视频资料二叉搜索树二叉搜索树又叫二叉查找树、二叉排序树,我们先看一下典型的二叉搜索树,这样的二叉树有何规则特点呢?二原创 2021-05-08 16:38:15 · 2532 阅读 · 0 评论 -
挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程
挑战360无死角讲解 进程管理,调度器的5种实现1. 8500行 CFS是什么2. RT调度器使用场景3. IDLE/Dealine调度器视频讲解如下,点击观看:挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程丨web服务器C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,D原创 2021-05-06 21:29:51 · 125 阅读 · 0 评论 -
Linux内核源码分析:基于最新的Linux 4.0内核(学习路线总结)
今天给大家分享的是基于最新的Linux 4.0内核学习路线总结,本文由8个专题组成,文末附上学习路线思维导图。一、进程管理专题1、进程原理1.1 进程生命周期1.2 task_struct结构1.3 进程优先级1.4 进程系统调用2、 进程调度机制2.1 调度器实现schedule()2.2 完全公平调度类CFS2.3 实时调度类原理2.4 多核模式调度SMP3、进程竞争机制3.1 RCU机制原理3.2 内存优化与屏障3.3 大内核锁3.4 p原创 2021-04-27 15:41:59 · 742 阅读 · 0 评论 -
解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统
剖析Linux内核源码数据同步1、pdflush机制原理2、超级块同步/inode同步3、拥塞及强制回写技术视频讲解如下,点击观看:解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK..原创 2021-04-15 11:34:53 · 129 阅读 · 0 评论 -
详解5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶丨Linux服务器开发丨Linux后端开发
5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶1.进程调度CFS的红黑树场景2.虚拟内存管理的红黑树场景3.共享内存slab的红黑树场景视频讲解如下,点击观看:【干货篇】详解5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶丨Linux服务器开发丨Linux后端开发丨内存管理丨进程调度C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音...原创 2021-04-10 19:45:48 · 258 阅读 · 0 评论 -
Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易的想到可以利用数组,来实现这种数据结构。但是本文要讨论的并不是软件层面的栈,而是硬件层面的栈。大多数的处理器架构,都有实现硬件栈。有专门的栈指针寄存器,以及特定的硬件指令来完成 入栈/出栈 的操作。例如在 ARM.原创 2021-04-10 19:40:36 · 357 阅读 · 0 评论 -
理解Linux内核漏洞:(内核开发人员必读)
初步理解内核漏洞:(内核开发人员必读)内核开发人员,如果不了解内核漏洞的话,容易在开发时引入漏洞,轻则导致内核崩溃,影响上面的所有应用程序;重则导致内核提权,即可以突破应用层的沙箱,进入内核,并在内核里面为所欲为。本文章就是讲解一下常见的内核漏洞类型,让内核开发人员有个初步的了解,从而在开发时就会有潜意识,不会制造比较明显的漏洞了。(对于专门挖过内核漏洞的人来说,该文章就没必要看了:)。常见的内核漏洞有下面几种:栈溢出(stack overflow)、堆溢出(heap overflow)、整型溢原创 2021-04-10 15:22:04 · 483 阅读 · 0 评论 -
深度剖析Linux内核地址映射机制
深度剖析Linux内核地址映射机制1、虚拟空间数据结构 2、进程虚拟空间3、内存映射视频讲解如下,点击观看:Linux内核开发系列第7讲——深度剖析Linux内核地址映射机制C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接观看:C/C++Linux服务器开发/Linux后台...原创 2021-03-09 15:10:18 · 205 阅读 · 1 评论 -
深入理解 Linux 内核中的 RCU 机制
RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是“读,拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完成修改,再一次性地替换旧数据”。这是 Linux 内核实现的一种针对“读多写少”的共享数据的同步机制。不同于其他的同步机制,它允许多个读者同时访问共享数据,而且读者的性能不会受影响(“随意读”),读者与写者之间也不需要同步机制(但需要“复制后再写”),但如果存在多个写者时,在写者把更新后的“副本”覆盖到原数据时,写者与写者原创 2021-03-08 21:04:13 · 766 阅读 · 0 评论 -
究竟什么是Linux内核?我该如何高效学习?附学习路线思维导图
本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是内核是什么,它用于什么?什么是内核内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。内核还要分种类?是的,没错。3.1 微内核微内核.原创 2021-03-02 21:04:56 · 330 阅读 · 0 评论 -
剖析Linux进程fork&vfork&clone原理机制丨进程管理指令及监控工具
剖析Linux进程fork&vfork&clone原理机制丨进程管理指令及监控工具视频讲解如下,点击观看:剖析Linux进程fork&vfork&clone原理机制丨进程管理指令及监控工具C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。视频学习资料点击:C/C++原创 2021-03-02 16:31:27 · 177 阅读 · 0 评论 -
Linux内核设计与实现
一. linux内核简介1. linux简介1.1 unix的特点unix很简洁,仅提供几百个系统调用,并有非常明确的设计目的 unix所有东西都当作文件对待,这种抽象使对数据和设备都通过一套相同的系统调用接口进行 内核用C语言编写,移植能力很强 进程创建迅速,独特的fork调用 提供了简洁但是稳定的进程间通讯原语1.2 unix和linuxlinux克隆unix,但不是unix linux借鉴了unix很多的设计,并且实现了 unix的api linux没有直接使用unix的原创 2021-02-24 16:09:05 · 1998 阅读 · 1 评论 -
Linux内核OOM机制的详细分析
Linux内核根据应用程序的要求分配内存,通常来说应用程序分配了内存但是并没有实际全部使用,为了提高性能,这部分没用的内存可以留作它用,这部分内存是属于每个进程的,内核直接回收利用的话比较麻烦,所以内核采用一种过度分配内存(over-commit memory)的办法来间接利用这部分“空闲”的内存,提高整体内存的使用效率。一般来说这样做没有问题,但当大多数应用程序都消耗完自己的内存的时候麻烦就来了,因为这些应用程序的内存需求加起来超出了物理内存(包括swap)的容量,内核(OOM killer)必须杀掉一些原创 2021-02-22 16:34:47 · 609 阅读 · 0 评论 -
Linux内核内存管理架构
内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高的要求。本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手,尝试对内存管理的软硬件架构做一些宏观上的分析总结。内存管理硬件架构因为内存管理是内核最为核心的一个功能,针对内存管理性能优化,除了软件优化,硬件架构也做了很多的优化设计。下图是一个目前主流处理器上的存储器层次结构设计方案。.原创 2021-01-23 15:39:31 · 256 阅读 · 1 评论 -
【Linux内核系列】花90分钟了解4种红黑树的Linux内核应用场景
90分钟了解4种红黑树的Linux内核应用场景1.进程管理与调度的红黑树2.虚拟内存区域的红黑树3.网络sk_buff的红黑树4.epoll的红黑树【Linux内核系列】花90分钟了解4种红黑树的Linux内核应用场景丨epoll的红黑树讲解C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。...原创 2021-01-21 21:45:35 · 471 阅读 · 2 评论 -
Linux进程间通信的几种方式总结-——linux内核剖析
进程间通信概述Linux内核通信相关视频讲解:Linux内核,进程间通信组件的实现 linux内核,进程调度器的实现,内核源码分析进程通信的目的 传输数据 一个进程须要将它的数据发送给还有一个进程。发送的数据量在一个字节到几M字节之间 共享数据 多个进程想要操作共享数据,一个进程对共享数据 通知事 一个进程须要向还有一个或一组进程发送消息。通知它(它们)发生了某种事件(如进程终...原创 2021-01-20 17:22:29 · 450 阅读 · 0 评论 -
深度:一文看懂Linux内核!Linux内核架构和工作原理详解
简介作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ ---- 提供虚拟机技术的支持。全文导读 Linux内核预备工作 Linux内核体系结构简析简析 Linux体原创 2021-01-08 17:25:13 · 2571 阅读 · 1 评论 -
Linux内核设计与实现——内核数据结构
主要内容链表 队列 映射 二叉树1. 链表单向链表、双向链表 环形链表linux内核中的链表使用方法和一般数据结构中定义的链表是有所不同的。传统链表:传统双向链表.png传统的链表有个最大的缺点就是不好共通化,因为每个node中的data1,data2等等都是不确定的(无论是个数还是类型)。linux中的链表巧妙的解决了这个问题,linux的链表不是将用户数据保存在链表节点中,而是将链表节点保存在用户数据中。linux的链表节点只有2个指针(pre和next),这样的话原创 2020-12-29 20:12:53 · 1383 阅读 · 5 评论