日常Bug排查-连接突然全部关闭
日常Bug排查系列都是一些简单Bug的排查。笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材。
【全网首发】一步一图带你构建 Linux 页表体系—详解虚拟内存如何与物理内存进行映射
笔者这次想让虚拟内存和物理内存两者一起动态联动起来,在这个联动的过程中将之前的这些静态知识点统统串联起来,形成一条内存管理的主线
操作系统
处理机调度
在多道程序环境下,内存中存在着多个进程,进程的数目往往多于处理机的数目。这就要求系统能按某种算法,动态地将处理机分配给一个处于就绪状态的进程,使之执行。分配处理机的任务是由处理机调度程序完成的。 对于大型系统运行时的性能,如系统吞吐量、资源利用率、作业周转时间或响应的及时性等,在很大程度上都取决于
如果让你来设计中断机制
哈喽,我是子牙,一个很卷的硬核男人从这篇文章开始,准备系统性给大家讲讲中断这个玩意。对于中断,很多小伙伴为什么学不明白呢?因为中断很底层,底层到CPU层面,有些中断更是由CPU+操作系统配合实现的。作为一个写过操作系统的男人,我就以我独特的手法带大家玩转中断本系列文章预计分四篇:深刻理解
图文详解 Linux 分页机制!
分页机制可以用于任何一种分段机制,也可以理解为先有分段机制才有分页机制,这是由于历史原因,分段机制要比分页机制更轻,先出现的分段后出现的分页。
【全网首发】深度解析 slab 内存池回收内存以及销毁全流程
笔者详细地为大家介绍了 slab cache 进行内存分配的整个链路实现,本文我们就来到了 slab cache 最后的一部分内容了,当申请的内存使用完毕之后,下面就该释放内存了。
图文详解 Linux 分段机制!
上一篇聊到分段机制是为了提供了隔绝代码、数据和堆栈区域的机制,能够使得多个程序运行在同一个内存空间中不会相互干扰,这是对内存平坦模型的一种保护。内存经过分段机制后会变为一个个的段,这称为多段模型。多段模型能够利用分段机制的功能提供由硬件增强代码、数据结构、程序和任务的保护措施。现在我们知道了分段
保护模式下的内存管理
我们知道,内存可以看做一个非常大的数组,我们想要查找内存中某个元素的话,会通过数组的下标来指定,内存也是如此,不过这有一个前提是这个数组是由一组有序的字节组成的,在这个有序的字节数组中,每个字节都有一个唯一的地址,这个地址也叫做内存地址。内存中存储着很多对象,每个对象是由不同字节组成的,比如一个
【全网首发】深入理解 slab cache 内存分配全链路实现
最后我们介绍了 slab 所在内存页的详细初始化流程,其中包括了对  slab freelist 链表的初始化,以及 slab 对象的初始化~
【全网首发】从内核源码看 slab 内存池的创建初始化流程
slab cache 机制确实比较复杂,涉及到的场景又很多,大家读到这里,我想肯定会好奇或者怀疑笔者在上篇文章中所论述的那些原理的正确性,毕竟 talk is cheap ,所以为了让大家看着安心,理解起来放心,从本文开始,我们将正式进入 show you the code 的阶段
【全网首发】深度剖析 Linux 伙伴系统的设计与实现
本文笔者就为大家完整地介绍一下伙伴系统这部分的内容,我们将基于内核 5.4 版本的源码来详细的讨论一下伙伴系统在内核中的设计与实现
内核优化之 PSI 篇:快速发现性能瓶颈,提高资源利用率
一个进程的运行过程实际上是一个不断等待不断执行的过程,过多的等待会对进程的吞吐和延时造成负面影响,是否有一种内核机制能够量化这些等待时间呢?
【全网首发】你的新进程是如何被内核调度执行到的?
大家好,我是飞哥!在前面的文章《Linux进程是如何创建出来的?》 和 《聊聊Linux中线程和进程的联系与区别》 中我们都讲过了,进程和线程在创建出来后会加入运行队列里面等待被调度。但咱们之前提的太笼统了。所谓的运行队列到底长什么样子、新进程是如何被加入进来的、调度是如何选择一个新进程的、新进
【译】那些没有人教你的最重要的Linux命令(高手私藏篇)
这些并非常见的必备20个命令,或者10个基础命令,而是一个高手分享的不常见的一些私家命令列表!
利用可挂载内核模块进行高负载处理
概述本程序在谢宝友老师[1]所提供的高负载处理模块的代码[2]基础上,根据5.15版内核的变化,修改出的。本程序是一个内核模块,用于监控系统负载,在平均负载超过4时,打印所有进程的调用栈。本程序分为三个文件:main.c、load.h、Makefile。其中,main.c是本内核模块的主程序;l
寻找已经发生高上下文切换问题的原因
作者介绍:张子恒,西安邮电大学研一在读,导师陈莉君老师,刚刚踏入Linux内核学习的小白一枚。段落引用背景介绍:问题:vmstat只能实时统计进程上下文切换的次数,具有一定的局限性,如果已经发生了高上下文切换的情况,那么该如何找到高上下文切换问题的原因在哪?想法:进程切换最核心的地方就
【全网首发】聊聊Linux中线程和进程的联系与区别!
大家好,我是飞哥!关于进程和线程,在 Linux 中是一对儿很核心的概念。但是进程和线程到底有啥联系,又有啥区别,很多人还都没有搞清楚。在网上对进程和线程的讨论中,很多都是聚集在这二位有啥不同。但事实在 Linux 上,进程和线程的相同点要远远大于不同点。在 Linux 下的线程甚至都被称为了轻
一次磁盘占用率 100% 的排查记录
你好,我是悟空。最近遇到一个服务器的问题:磁盘满了,占用率 100%~这个问题太常见了,于是先来排查一波是哪些文件占用了大量磁盘。一、排查磁盘占用率100%1.1 查看磁盘使用的大致情况第一个命令就是 df -h,来查看磁盘的占用情况。df 是 disk free 的缩写,用于显示目前在 L
Linux进程是如何创建出来的?
大家好,我是飞哥!在 Linux 中,进程是我们非常熟悉的东东了,哪怕是只写过一天代码的人也都用过它。但是你确定它不是你最熟悉的陌生人?我们今天通过深度剖析进程的创建过程,帮助你提高对进程的理解深度。在这篇文章中,我会用 Nginx 创建 worker 进程的例子作为引入,然后带大家了解一些进程
给32位系统装8g内存条能用吗?为什么?
关于32位和64位,这个概念一直让人比较懵。在买电脑的时候,我们看到过32位和64位CPU。下软件的时候,我们也看到过32位或64位的软件。就连装虚拟机的时候,我们也看过32位和64位的系统。在写代码的时候,我们的数值,也可以定义为int32或者int64。我们当然很清楚,装软件的时候,
网络编程里的Socket
当今互联网中的大千世界都驻足于TCP/IP协议之上。而通过Socket操作TCP/IP协议已经成为了事实上的标准,Socket甚至已经成为了网络编程的同义词。当然了,由于我们早已习惯于各种封装/框架,很少裸用Socket,所以对它的理解始终有一种模糊的感觉。今天,我就来介绍一下Socket。S
从linux源码看socket的close
笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。上篇博客讲了socket的阻塞和非阻塞,这篇就开始谈一谈socket的close(以tcp为例且基于linux-2.6.24内核版本)TCP关闭状态转移图:众所周知,TCP的close过程是四次挥手,状态

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

Flutter是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,作为一个ios、androd和web兼容的开发平台,Flutter赢得了很多大厂前端工程师的喜爱,而掌握熟练的Flutter开发和优化技术也是进入阿里系、美团、携程、京东、腾讯等公司必不可少的敲门砖,本周的专题给大家带来的就是Flutter的应用实战,希望大家在阅读的同时多多思考!
8篇文章9513阅读量
如果想透析Linux,深入操作系统的本质,阅读源码是最有效的途径。我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写。透过阅读Linux源码的方式,我们学习到的不光是Linux相关的知识,在我看来更具价值的是学习和体会它们的编程技巧以及对计算机的理解。
8篇文章20826阅读量