摘要:
参考资料 近期学习git内部概念及原理,为了加强效果和日后回忆,还是写了这篇笔记进行输出。 参考资料如下: 这才是真正的Git——Git内部原理 - LZANE | 李泽帆(靓仔) 《Version Control with git》 实验环境:unbuntu 18 objects(blobs tr 阅读全文
摘要:
# 概览 mmap是Linux中使用频率非常高的一个系统调用: - 程序运行前,mmap会先将动态链接库映射到进程的地址空间。 - 用户调用malloc,如果分配的内存大小大于阈值,则直接使用mmap分配 - 使用POSIX的有名信号量时,自动调用mmap将共享文件(其中包括futex锁)映射至进程 阅读全文
摘要:
const变量/对象的存储位置 const局部变量 const局部基础变量和自定义变量都存储在栈上 struct diy_class{ int a; int b; diy_class(int a, int b ) : a(a), b(b){ } }; int main() { int b = 1; 阅读全文
摘要:
本文为CMU15-445(2021Fall)的lab记录。 推荐博客 : https://blog.csdn.net/twentyonepilots/article/details/120868216, 逻辑写得比较清楚 CMU-15445官方网页 https://15445.courses.cs. 阅读全文
摘要:
# 从std::mutex到futex机制 我原本出发点是C++ std::mutex的实现原理,但是经过一番查阅,发现C++ std::mutex是对glibc-nptl库pthread_mutex的封装;而nptl库在用户态完成了futex机制的一部分;最后在以linux为内核的操作系统中,又提 阅读全文
摘要:
# 概览 这篇文章从内核、glibc库源码的角度整理一下Linux的进程间通信机制。 众所周知,Linux操作系统的通信机制有以下几种: - 信号 - 管道(分为匿名管道和有名管道) - 信号量 - 共享内存 - 消息队列 - Socket 本文主要内容包括其中前五个。 **其中信号量、共享内存、消 阅读全文
摘要:
## 本文结构 前面4节先展开讲讲linux内核2.6.24版本的调度器实现,其中包括CFS调度器。 然后对linux历史上出现过的O(1)和O(n)调度器做一个比较,看看它们的优缺点。 ## 优先级和调度策略 linux中进程优先级在用户试图和内核视图两个方面有着不同表达。 在用户层面,对普通进程 阅读全文
摘要:
## 高速缓存的基本原理 > 参考资料: > > - CSAPP 相关章节 > - [Gallery of Processor Cache Effects (igoro.com)](http://igoro.com/archive/gallery-of-processor-cache-effects 阅读全文
摘要:
> 主要是关于标准库容器的整理 # 空间配置器 主要看SGI的实现,有两个空间配置器 - _malloc_alloc_template - __default_alloc_template 用户可以选择单独使用第一个分配器,或者一起使用两个分配器。 当用户选择使用两个分配器时,编译器会分别将上述两个 阅读全文
摘要:
# C++基础语法 ## 基本数据类型的大小 不同编译器的内置类型大小不同,比如指针类型,同是x86-64的CPU,g++的指针大小为8,visual的指针大小为4,minGW指针大小为8 C++标准只保证基本数据类型有一个最小大小: [图源](https://www.learncpp.com/cp 阅读全文