- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 cgroup之attach
本文主要介绍cgroup的结构,观察cgroup如何通过对外开放的文件系统接口,将进程和对应的资源控制(css)联系起来
2023-08-14 15:03:10 171
原创 Linux死锁检测:lockdep
对于大型系统而言,因为长调用链,多核调度,中断等一系列原因很难保证系统上锁遵循lock ordering,所以linux引用lockdep机制检查死锁。
2023-08-06 10:50:31 806 1
原创 Btrfs之NV(二):log root
如果采用cow,他需要等待所有线程都退出trans后将所有dirty data都落盘而不是只落盘inode,这样会导致fsync inode花费相当长的时间。所以在这种情况下Btrfs 会通过log_root进行journal的方式保证inode的一致性。
2023-07-28 13:46:51 209 1
原创 Btrfs之NV(一):COW
Btrfs采用了两种方法:COW和,保证磁盘能够在断电之后保证数据的一致性,以防止super或者meta_data数据被破环而导致整个文件系统的崩溃。
2023-07-28 13:43:29 436 3
原创 Btrfs之RAID(三):RAID应用
在Btrfs中由于Btree有着很好的扩展性,使得底层存储设备也能随之增添、移除或者替换。这些存储设备组成一个存储池,经过RAID抽象后供Btrfs使用。这会使得RAID在加快文件读写速度,设备失效后数据恢复的同时,也能使Btrfs在存储特性上更加。
2023-07-07 09:30:15 711 1
原创 文件的预读
为了优化读取文件的时间延迟,文件系统(FS)在去磁盘读取文件时会有一个read_ahead的动作。主要思路是:当FS发现用户读取文件是按照文件的顺序读取,FS就假定用户在下一次读取时大概率会读取下一个block。所以FS在把当前的block读取到内存后,会发送读取下一个block的命令,然后将当前block数据返回给用户。这样用户在处理数据的时候,磁盘IO也在并行的执行(如果是DMA的方式,磁盘IO在完成之后,会通过中断的方式告诉FS)
2023-06-12 08:52:40 309
原创 Btrfs之RAID(一):Chunk抽象和使用
将物理device抽象成上层逻辑chunk,让上层软件可以像访问数组一样访问device。这层封装既能并发的读写device,加快文件的读写速度;也能对device做备份,保证一定数量的device失效后数据仍然可以恢复。
2023-06-12 08:40:55 429
原创 Btrfs之RAID(二):RAID读写
Btrfs在读(__do_readpage)写(btrfs_writepages)文件时,会查询inode的逻辑地址到底层的映射(extent_map)。如果使用将device抽象成chunk,那么Btrfs在extent_map中查询到的是chunk的地址,所以需要RAID进一步将chunk的地址映射到device上,然后根据RAID类型对相应的device进行读写。
2023-06-12 08:34:27 412
原创 C语言变参的实现
今天在群里突然看见有人询问printf的多个参数是怎么实现的,因为之前也没研究printf的源码,最近在研究linux,对这些底层实现比较感兴趣,所以研究了一下。1.普通传参的底层实现:1 将参数压入栈,call的函数通过读取栈中的数据进行传参,具体怎么调用2 参数通过寄存器传递,例如linux中的FASTCALL(eax edx ecx ...),inifinion单片机中参数传递(d2 d3 ...),这些都是编译器在汇编的时候约定好的。2....
2022-01-05 18:43:46 906
linux2.4.0流程图
2022-01-05
linux0.11流程图
2022-01-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人