
linux 操作系统技能树
文章平均质量分 80
针对Linux操作系统各个子模块:进程管理,线程管理,文件系统管理,内存管理,CPU,设备驱动(IO栈)将自己所见所闻所思 进行整理,欢迎各抒己见。
z_stand
远离颠倒梦想,究竟涅槃
展开
-
centos 自定义内核模块 编译运行
centos 自定义内核模块 编译运行记录原创 2022-01-14 23:45:29 · 1082 阅读 · 0 评论 -
Linux NUMA 架构 :基础软件工程师需要知道一些知识
一些numa 架构相关的基础知识原创 2021-03-27 21:54:29 · 2070 阅读 · 0 评论 -
从 unlink/rm 底层实现来看Linux文件系统管理
探索一下unlink的底层实现原创 2021-03-20 18:36:14 · 2186 阅读 · 2 评论 -
vim 键盘宏操作 -- 大道至简
vim 神级编辑器 -- 利用键盘宏批量操作文本,简直 “嗨翻天”。原创 2021-02-28 19:34:14 · 1232 阅读 · 0 评论 -
git submodule 使用场景汇总
submodule 使用过程中的一些问题记录:包括 切换子分支,修改.gitmodules文件之后 更新不生效问题 等。原创 2021-02-05 18:00:35 · 1631 阅读 · 0 评论 -
关于cpu 分支预测 以及 cpu pipeline 的一些思考
本文能够回答如下问题:- 分支预测 __builtin_expect 或者 LIKELY/UNLIKELY 原理是什么?- cpu pipeline架构是如何演进的?- CPU分支预测是如何体现在 pipeline 执行指令 的过程中的?- 对CPU友好的分支预测 能够有多少的性能提升?原创 2021-01-19 01:15:21 · 3071 阅读 · 0 评论 -
磁盘I:O 性能指标 以及 如何通过 fio 对nvme ssd,optane ssd, pmem 性能摸底
文章目录1. 磁盘I/O性能指标1.1 性能指标1.2 I/O 观测1.2.1 磁盘I/O 观测1.2.2 进程I/O观测2. Fio 性能测试2.1 环境准备2.2 测试维度选择2.3 测试2.3.1 optane ssd和nvme ssd性能测试2.3.2 aep性能测试(intel persistent memory)真正测试之前 我们需要清楚 评判磁盘I/O性能 是通过哪一些指标以及以查看相关指标的工具,这样在实际测试以及生产环境中才能对磁盘I/O性能又有一个全面而正确的评估。本文并没有对文中原创 2020-12-09 00:37:54 · 6338 阅读 · 0 评论 -
vim 成“神“之路 (一)
当然打造自己的vim 感觉 就像是公元前1500年前后 印欧语系游牧的蛮族潜心打造的青铜器,青铜战车 ,马具马鞍,戴着他们横扫了整个欧亚大陆的古代文明,从尼罗河的埃及文明到地中海的米诺斯文明,到幼发拉底河和底格里斯河的美索不达米亚文明,到印度河文明和中国的商朝(北方的游牧民族)都被精良高效的战争民族所取代,颠覆了整个大陆的格局。vim所做的就是能够一统整个ide的大陆,用灵活的插件搭配强大的快捷操作实现 ,我们只需要在这个大陆上专注耕耘,建立自己的的伟大帝国。原创 2020-09-22 02:25:12 · 790 阅读 · 0 评论 -
一文带你看透 GDB 的 实现原理 -- ptrace真香
文章目录Ptrace 的使用GDB 的基本实现原理Example1 通过ptrace 修改 被追踪进程的内存数据Example2 通过ptrace 对被追踪进程进行单步调试Ptrace的实现GDB本身能够attach到一个运行的进程,实时获取运行中进程的内存数据,增加断点,函数变量值,甚至直接修改函数的变量。这个机制本身就很有趣,同时也很实用,接下来探索一下GDB以上过程的详细实现。GDB基本的调试功能都是通过一个系统调用ptrace来实现的。ps: 限于本人能力有限,对底层CPU 执行的正确逻辑原创 2020-09-05 17:35:22 · 6070 阅读 · 2 评论 -
git 的release-notes以及对应的changelog管理
我们在github 或者gitlab上做项目管理的时候需要对 对应的项目做历史版本的管理,同时包括每个版本中所做的一些改动:feature,bugfix,improv。如果我们能够有一个统一的自动化管理方式,那么对于我们后续的版本回顾就能提供巨大的便捷,同时能够提供每个commit对应的commit链接,那就更好了。最终的版本管理CHANGELOG.md文件的效果如下:同时在github对应的tags 处也能够看到一些release-notes的信息。创建仓库按照自己的方式或者根据github的原创 2020-07-08 23:54:17 · 6203 阅读 · 0 评论 -
Linux创建线程时 内存分配的那些事
文章目录问题描述问题分析针对问题1 的猜测:针对问题2 的猜测:原理追踪总结问题描述事情开始于一段内存问题,通过gperf工具抓取进程运行过程中的内存占用情况。分析结果时发现一个有趣的事情,top看到的实际物理内存只有几兆,但是pprof统计的内存信息缺达到了几个G。很明显是创建线程时产生的内存分配,且最终的分配函数是__pthread_create_2_1,这是当前版本glibc创建线程时的实现函数,且在该函数内进行线程空间的分配。查看进程代码,发现确实有大量的线程创建,我们知道线程是有自己独原创 2020-05-30 21:23:45 · 3352 阅读 · 0 评论 -
g-gdb 调试多线程
代码调试工具gdb是一个能够让我们在工作中高效排查代码异常根源的利器。在此将gdb针对多线程的调试方式做一个笔记,也方便后续回顾以及分享大家。本文采用的是一个简单的多线程代码示例,同时调试是在mac上进行的mac安装gdb brew install gdb即可基本命令介绍开始之前先简单介绍几个gdb调试多线程的子命令layout next 开启子窗口,显示当前程序运行所在的源码位置b xxx 在某一行,或者某一个函数处增加断点info b 查看断点信息r 运行程序info thread原创 2020-05-23 22:49:32 · 329 阅读 · 0 评论 -
网络故障排查命令
ping #检测目标主机是否畅通traceroute #追踪路由mtr #检查到目标主机之间是否有数据包丢失nslookup #查看域名并解析,获取IP地址telnet #检查端口链接状态tcpdump #细致分析数据包发送接收 的详细内容netstat #查看网络端口连接状态ss #另外一种各式的查看网络端口连接状态检测过程:ping www.baidu.com #...原创 2020-04-17 21:24:53 · 1511 阅读 · 0 评论 -
Linux内存管理:bufferCache和PageCache
参考文档:https://zhuanlan.zhihu.com/p/42364591https://zhuanlan.zhihu.com/p/32354613《深入理解Linux 内核》原创 2020-01-05 11:28:06 · 525 阅读 · 0 评论 -
Linux文件系统:概览(思维导图)
原创 2020-01-05 11:35:25 · 789 阅读 · 0 评论 -
linux系统目录树/内核源码目录树
关于系统目录树和源码目录树的结构图如下系统:centos 7.0内核版本:3.10.0-957-5.1.e17原创 2019-11-19 13:15:54 · 671 阅读 · 0 评论 -
partprobe源码分析
partprobe工具操作系统目录/usr/sbin/partprobe程序安装包parted-3.1-17.el7.x86_64.rpm命令用法:partprobe是用来告知操作系统内核 分区表发生变化的工具,告知方式是请求内核重读分区表选项如下:-d 不会让内核重读分区表,分区表发生变化后使用该命令partproe -d /dev/sdi不会告知内核分区发生了变化-s 先让内...原创 2019-06-05 23:09:45 · 1322 阅读 · 2 评论 -
使用dd查看磁盘前4个扇区的内容
想要获取磁盘前四个扇区的内容可以先将扇区内容从磁盘dd出来,使用如下命令dd if=/dev/sdb of=mbr.txt bs=1 count=2048改命令将sdb磁盘的前2048个字节内容即4个扇区内容备份到文件mbr.txt里面。其中bs为块大小1即为1个字节,count表示块个数,即2048个字节。一个扇区默认为512字节,即此时备份4个扇区到mbr.txt文件中如果我们想要备份...原创 2019-04-24 22:29:11 · 2338 阅读 · 0 评论 -
s-sgdisk源码分析 “--set-alignment=value分区对齐参数”
sgdisk命令是由gdisk-0.8.6-4.el7.x86_64程序包安装sgdisk源码路径 https://github.com/Shihta/gdisk边界对齐子命令使用本节主要描述sgdisk源码中关于命令-a --set-alignment=value的边界对齐逻辑描述,借此各位可以看到sgdisk命令集的其他参数源码白编写的逻辑该参数使用方式一般是在创建分区过程中...原创 2019-04-10 23:35:26 · 906 阅读 · 0 评论 -
f-fdisk做磁盘分区,起始扇区从2048块开始
First Sector 起始扇区默认从第2048块扇区开始是因为,由于EFI的兴起,要给EFI 代码留磁盘最开始的1M空间,即2048*521/(1024*1024)=1MWith the death of the legacy BIOS (ok, its not quite dead yet) and its replacement with EFI BIOS, a special bo...原创 2019-03-28 22:24:43 · 11014 阅读 · 0 评论 -
BIOS三种硬盘模式
文章目录IDE模式RAID模式AHCI模式IDE模式IDE表示硬盘的传输接口,我们常说的IDE接口,也叫ATA(Advanced Technology Attachment)接口,现在PC机使用的硬盘大多数都是IDE兼容的,只需用一根电缆将它们与主板或接口卡连起来就可以了优点:易于使用与价格低廉,问世后成为最为普及的磁盘接口缺点:速度慢只能内置使用对接口的电缆长度有很严格的限制...原创 2019-03-28 21:39:50 · 11345 阅读 · 0 评论 -
sgdisk 磁盘操作命令
划分磁盘分区sgdisk -n 1:+2G:+50G /dev/sda划分磁盘分区,一号分区划分为50G,同时预留2G的空间磁盘格式化sgdisk -z -og /dev/sda查看分区详情sgdisk -i 1 /dev/hda查看hda第一分区的详情信息[root@node3 ~]# sgdisk -i 1 /dev/sdbPartition GUID code: 4FBD...原创 2019-03-27 21:28:56 · 3734 阅读 · 0 评论 -
HDD工作原理 导图
以上导图介绍了我们使用的 (HDD)机械硬盘的基本构造以及核心工作原理,对于大家扫盲有所帮助参考文档:https://blog.youkuaiyun.com/yizhaoxin/article/details/53615740...原创 2020-01-05 11:07:29 · 1594 阅读 · 0 评论 -
linux文件IO与内存映射:用户空间的IO缓冲区
文章目录用户空间IO缓冲区产生IO缓冲区 描述IO缓冲区的写模式自定义IO缓冲区用户空间IO缓冲区产生系统调用过程中会产生的开销如下:切换CPU到内核态进行数据内容的拷贝,从用户态到内核态或者从内核态到用户态切换CPU到用户态以上为普通到系统调用过程中操作系统需要产生的额外开销,为了提升系统调用的性能,这里推出用户空间的IO缓冲区,即文件读写在用户空间时写入IO缓冲区,后续的写入或...原创 2019-10-06 20:09:04 · 1268 阅读 · 0 评论 -
linux 文件IO与内存映射:page cache页高速缓存
描述:页高速缓存(page cache)是从实际物理内存中开辟出来一部分内存空间,用作操作系统的磁盘读写缓存。比如客户端写入的数据并不直接写入磁盘,而是写入到这一段物理内存中即代表已经写完,这样由内存本身的高速读写性能是能够提升系统整体io性能。基本管理单位:页原理:页高速缓存的淘汰原理是根据:时间局部原理,空间局部原理;即最长时间未被访问(时间局部性)或者被进程引用次数最少(空间局部性)...原创 2019-10-06 16:13:26 · 1715 阅读 · 0 评论 -
Linux系统性能分析: I/O栈 优化
原始文件路径Mind-mappingLinux I/O栈性能分析及优化原创 2020-01-23 16:47:33 · 567 阅读 · 0 评论 -
Linux系统性能分析: CPU
CPUCPU上下文切换CPU使用率原创 2020-01-16 21:17:53 · 521 阅读 · 1 评论