会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
第七子007
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
7
8
9
10
11
12
13
14
15
···
22
下一页
2022年1月13日
linux源码解读(十四):红黑树在内核的应用——红黑树原理和api解析
摘要: 1、红黑树是一种非常重要的数据结构,有比较明显的两个特点: 插入、删除、查找的时间复杂度接近O(logN),N是节点个数,明显比链表快;是一种性能非常稳定的二叉树! 中序遍历的结果是从小到大排好序的 基于以上两个特点,红黑树比较适合的应用场景: 需要动态插入、删除、查找的场景,包括但不限于: 某些数
阅读全文
posted @ 2022-01-13 21:42 第七子007
阅读(2671)
评论(0)
推荐(0)
2022年1月8日
linux源码解读(十三):内核驱动module加载kprobe&字节跳动Elkied简要分析
摘要: 要想在计算机里干点事,权限肯定是越高越好的。正常情况下,cpu硬件层面保证了运行在0环的操作系统和运行在3环的用户app互相隔离,3环app要想进入0环执行代码只能通过中断或系统调用的形式,执行最多代码的应该就是硬件的驱动了,常见的屏幕打印、磁盘读写、网卡/wifi收发数据都要执行硬件驱动。因为需要
阅读全文
posted @ 2022-01-08 17:13 第七子007
阅读(1847)
评论(0)
推荐(1)
2022年1月5日
linux源码解读(十二):系统调用(strace命令0和中断&字节跳动HIDS简要分析
摘要: 中断是整个计算机体系最核心的功能之一,关于中断硬件原理可以参考文章末尾的链接1(https://www.cnblogs.com/theseventhson/p/13068709.html),这里不再赘述;中断常见的种类如下: 硬件中断:键盘、鼠标、网卡等输入 软件中断:int 3、int 0xe(p
阅读全文
posted @ 2022-01-05 20:58 第七子007
阅读(1619)
评论(0)
推荐(1)
2021年12月24日
linux源码解读(十一):多进程/线程的互斥和同步&JVM同步原理
摘要: 为了提高cpu的使用率,硬件层面的cpu和软件层面的操作系统都支持多进程/多线程同时运行,这就必然涉及到同一个资源的互斥/有序访问,保证结果在逻辑上正确;由此诞生了原子变量、自旋锁、读写锁、顺序锁、互斥体、信号量等互斥和同步的手段!这么多的方式、手段,很容易混淆,所以这里做了这6种互斥/同步方式要点
阅读全文
posted @ 2021-12-24 15:26 第七子007
阅读(893)
评论(0)
推荐(0)
2021年12月21日
linux源码解读(十):内存管理——内存分配和释放关键函数分析&ZGC垃圾回收
摘要: 上文介绍了buddy和slab内存管理的思路,本文看看这些算法的关键代码都是怎么写的,这里用的是4.9版本的源码;重新把这个图贴出来,方便后续理解代码! 1、如上图所示,slab算法的入口就是kmem_cache结构体了,和其他重要结构体管理的方式类似,这里也统一采用数组的形式管理所有的kmem_c
阅读全文
posted @ 2021-12-21 16:32 第七子007
阅读(1227)
评论(0)
推荐(0)
2021年12月19日
linux源码解读(九):内存管理——buddy和slab
摘要: cpu硬件管理内存是以页(4KB)为最小颗粒度的,因为页描述符设置内存属性就是按照页为单位设置的!这个颗粒度是非常大的,用户如果只要几十Byte的内存也分配4KB的话,再多的内存也会很快被败光,同时带来了内存碎片化的问题,所以迫切需要小颗粒度的内存分配方式!buddy和slab孕育而生! 1、先看看
阅读全文
posted @ 2021-12-19 20:20 第七子007
阅读(3057)
评论(0)
推荐(0)
2021年12月15日
linux源码解读(八):内存管理——分页和分段
摘要: 1、计算的内存和磁盘都是用来存储数据的,作用上没有本质区别,但是这两种存储介质的特性却差异巨大: 内存需要上电才能存储数据,一旦掉电数据就没了,磁盘却不需要用电也能保存数据 内存的速度很快,大约100ns就能读写数据,而磁盘是毫秒级别的,理论速度差了几万倍; 所以计算机运行时为了追求速度,会尽量把数
阅读全文
posted @ 2021-12-15 21:46 第七子007
阅读(1886)
评论(0)
推荐(0)
2021年12月12日
linux源码解读(七):文件系统——可执行文件的加载和执行
摘要: 1、windows中可执行文件是PE格式的,以exe作为后缀结尾(当然驱动sys和动态链接dll也是PE格式的,但普通用户用不上);用户使用也很方便,直接双击exe文件就能开始运行了;linux也类似,可执行文件是ELF格式的,用户双击也能运行;这么方便的功能在底层是怎么实现的了?先阐述一下大概的流
阅读全文
posted @ 2021-12-12 21:25 第七子007
阅读(1685)
评论(0)
推荐(0)
2021年12月9日
linux源码解读(六):文件系统——虚拟文件系统VFS
摘要: linux的设计理念:万物皆文件!换句话说:所有的设备,包括但不限于磁盘、串口、网卡、pipe管道、打印机等统一看成是文件。对于用户来说,所有操作都是通过open、read、write、ioctl、close等接口操作的,确实很方便;但是对于linux,底层明明是不同的硬件设备,这些设备怎么才能统一
阅读全文
posted @ 2021-12-09 12:15 第七子007
阅读(1967)
评论(0)
推荐(0)
2021年12月7日
linux源码解读(五):文件系统——文件和目录的操作
摘要: 对于普通用户,平时使用操作系统是肯定涉及到创建、更改、删除文件(比如mkdir、rmdir、rm、chmod、ln等);有些文件是高权限用户建的,低权限用户甚至都打不开,也删不掉;为了方便管理不同业务类型的文件,还需要在不同的逻辑分区建文件夹,分门别类各种文件;linux下用ls -l命令还可以查看
阅读全文
posted @ 2021-12-07 18:17 第七子007
阅读(2111)
评论(1)
推荐(0)
上一页
1
···
7
8
9
10
11
12
13
14
15
···
22
下一页
公告