首页
学习
活动
专区
工具
TVP
发布

Linux内核那些事

专栏成员
127
文章
331783
阅读量
73
订阅数
图解|Linux文件预读原理
所谓预读,是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次读请求到来时部分页面直接从page cache读取即可。当然,这个细节对应用程序透明,应用程序可能的感觉就是下次读的速度会更快,当然这是好事。文中我们会通过设置几个情境(顺序读、随机读、多线程交织读)来分析预读的逻辑。
用户7686797
2024-04-15
2190
图解|Deadline 调度器
严格来说,Linux 不是实时操作系统,但 Linux 却支持实时调度算法。与通用调度算法(如完全公平调度算法)相比,实时调度算法更注重任务(进程)的实时性。为什么 Linux 支持实时调度算法,却不是实时操作系统呢?有兴趣的同学可以去网上查阅相关的文献或者资料。
用户7686797
2023-12-24
4340
一文读懂|zRAM 内存压缩机制
内存是计算机系统最重要的资源之一,当操作系统内存不足时,进程申请内存将会失败,从而导致其运行异常或者崩溃。
用户7686797
2023-10-06
2.6K0
一文读懂|内核顺序锁
Linux 内核有非常多的锁机制,如:自旋锁、读写锁、信号量和 RCU 锁等。本文介绍一种和读写锁比较相似的锁机制:顺序锁(seqlock)。
用户7686797
2023-09-14
3080
图解|低精度定时器原理
Linux 内核通常会使用 定时器 来做一些延时的操作,比如常用的 sleep() 系统调用就是使用定时器来实现的。
用户7686797
2023-09-02
2010
细说|Linux Out Of Memory机制
有时候我们会发现系统中某个进程会突然挂掉,通过查看系统日志发现是由于 OOM机制 导致进程被杀掉。
用户7686797
2023-02-26
2.9K0
细说|Linux虚拟文件系统原理
在 Unix 的世界里,有句很经典的话:一切对象皆是文件。这句话的意思是说,可以将 Unix 操作系统中所有的对象都当成文件,然后使用操作文件的接口来操作它们。Linux 作为一个类 Unix 操作系统,也努力实现这个目标。
用户7686797
2023-02-26
1.3K0
图解|Linux内存碎片整理
我们知道物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外)。申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的。随着系统运行时间变长后,将会出现以下情况:
用户7686797
2022-12-07
3.2K0
细说|Linux内存泄漏检测实现原理与实现
在使用没有垃圾回收的语言时(如 C/C++),可能由于忘记释放内存而导致内存被耗尽,这叫 内存泄漏。由于内核也需要自己管理内存,所以也可能出现内存泄漏的情况。为了能够找出导致内存泄漏的地方,Linux 内核开发者开发出 kmemleak 功能。
用户7686797
2022-12-07
1.3K0
一文读懂|Linux系统平均负载
我们经常会使用 top 命令来查看系统的性能情况,在 top 命令的第一行可以看到 load average 这个数据,如下图所示:
用户7686797
2022-12-07
1.6K0
图解原理|Linux I/O 神器之 io_uring
io_uring 是 Linux 于 2019 年加入到内核的一种新型异步 I/O 模型,io_uring 主要为了解决 原生AIO(Native AIO) 存在的一些不足之处。下面介绍一下原生 AIO 的不足之处:
用户7686797
2022-12-07
2.2K0
Linux内核调试利器|kprobe 原理与实现
在《Linux 内核调试利器 | kprobe 的使用》一文中,我们介绍过怎么使用 kprobe 来追踪内核函数,而本文将会介绍 kprobe 的原理和实现。
用户7686797
2022-08-24
3.2K0
自己动手写一个GDB|设置断点(原理篇)
在上一篇文章《自己动手写一个GDB|基础功能》中,我们介绍了怎么使用 ptrace() 系统调用来实现一个简单进程追踪程序,本文主要介绍怎么实现断点设置功能。
用户7686797
2022-05-17
2.3K0
自己动手写一个GDB|基本功能
GDB 全称 the GNU Project debugger,主要用来调试用户态应用程序。
用户7686797
2022-05-17
1.3K0
一文读懂eBPF|即时编译(JIT)实现原理
在《eBPF实现原理》一文中,我们介绍了 eBPF 的实现原理,这篇文章我们主要介绍 eBPF 运行加速器 JIT(Just In Time)的实现原理。
用户7686797
2022-05-17
3K0
一文看懂eBPF|eBPF实现原理
在上一篇文章中,我们主要简单介绍了什么是 eBPF 和 eBPF 的简单使用,而本文重点介绍 eBPF 的实现原理。
用户7686797
2022-03-31
2.4K0
一文看懂eBPF|eBPF的简单使用
eBPF(extended Berkeley Packet Filter) 可谓 Linux 社区的新宠,很多大公司都开始投身于 eBPF 技术,如 Goole、Facebook、Twitter 等。
用户7686797
2022-03-31
2.2K0
一文读懂|栈溢出攻击
简单来说,栈 是一种 LIFO(Last In Frist Out,后进先出) 形式的数据结构。栈一般是从高地址向低地址增长,并且栈支持 push(入栈) 和 pop(出栈) 两个操作。如下图所示:
用户7686797
2022-03-31
2K0
容器网络|深入理解Cilium
本文翻译自 2019 年 DigitalOcean 的工程师 Nate Sweet 在 KubeCon 的一篇分享:
用户7686797
2022-03-31
1.4K0
图解|Linux 组调度
一般来说,在操作系统中会运行多个进程(几个到几千个不等),但一台计算机的 CPU 资源是有限的,如 8 核的 CPU 只能同时运行 8 个进程。那么当进程数大于 CPU 核心数时,操作系统是如何同时运行这些进程的呢?
用户7686797
2022-01-25
3.4K0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档