博客
分类
标签
归档
友链
关于
Dark Mode
博客
分类
标签
归档
友链
关于
Dark Mode
Mens et Manus
CMU15-445学习笔记(上)
CodingGoogle c++ style guide 检查丑代码: 1234make formatmake check-lintmake check-censoredmake check-clang-tidy Hybrid OS 操作系统中的启发(可能有用) fs: 分段多级索引 Mind Map Storage 缓存管理策略 lru/mru/clock 磁盘文件优化 hea...
2022-06-06
Read More
The Hapdoop Distributed File System
The Hapdoop Distributed File System论文笔记三类分布式存储系统的区别有三类存储系统:块存储系统, 对象存储系统, 文件存储系统。块存储面向的用户是软件系统,文件存储面向的用户的人,对象存储面向的用户是其他计算机软件 文件存储 数据存储在文件系统上,用户通过文件路径索引获取到文件,底层文件系统会解析文件系统会以目录树的方式解析文件系统 优点:用户可以以”目录...
2022-06-05
Read More
MIT6.824 lab 2 记录与bug总结
MIT6.824 lab 2 记录与bug总结两个主要问题:乱序RPC和”Figure 8问题”(小论文Figure 8, 大论文Figure 3.7) 两阶段写中间有gap,你以为的原子也许不那么原子不那么livenss 论文Figure 8中描述的问题Figure8问题:leader的日志被另一个leader的日志覆盖 根源: 两阶段写, 而中间gap时没”互斥” 举个例子: 123...
2022-05-26
Read More
宏内核, 微内核, 多内核
宏内核架构 linux 整个单分两层:内核与应用。 CPU负责提供权限模式,高权限就是内核模式。 所有内核功能实现在一起:文件系统, 内存管理, 设备驱动, 进程调度等。拥有最高权限 结构性缺陷: 安全性可靠性 模块间没有很强的隔离,单点错误 如频繁更新的驱动,他的bug就可能影响到其他模块 实时性支持不足 系统太复杂,无法做出最坏分析 过于庞大阻碍创新 2800行代码 微...
2022-05-21
Read More
读写锁与RCU
读写锁实现本质上仍是通过写锁来互斥,只是读锁减小的锁影响的范围,读锁仅用于保证reader++的安全。 可以看到虽然看起来读者”不互斥”,但是内部读者还是存在锁竞争的。所以引入RCU 1234567891011121314151617181920212223242526struct rwlock { int reader; struct lock read_lock; struct...
2022-05-19
Read More
MIT6.824 lab 3B 记录与bug总结
MIT6.824 lab 3B bug总结记录 到目前lab3为止,可以导致状态变更的,有潜在是不一致风险的事件有:状态变更,日志追加,日志恢复 这些事件在我看来是类似操作系统中”中断”的存在,但我目前还无法用我的语言来抽象概括,大概是要防止mock的序列被破坏吧,总之需要多加小心 bug总结概括:引入”Snapshot中断”后,对整个raft集群状态的控制大失败。TODO:抽象 lab2...
2022-05-17
Read More
MIT6.824 lab 3A 记录与bug总结
MIT6.824 lab 3A 记录与bug总结debug真的很搞心态,不过对理解很有帮助(我觉得,当然看别经验贴可能效率会更高)。anyway如果一次都没跌倒过,我也许永远都注意不到这些bug呢 所以这里 严重剧透警告, 严重剧透警告 , 严重剧透警告 欢迎批评指正,欢迎讨论补充,欢迎分享自己遇到的corner case 3Afuck the lab 出问题时不要害怕再次重头阅读你写的代...
2022-05-13
Read More
Are You Sure You Want to Use MMAP in Your Database Management System?论文笔记
TODO review Are You Sure You Want to Use MMAP in Your Database Management System?论文笔记Abstract 我要重启window时它居然自动更新了 mmap看起来好用,是因为其让一些操作”透明”,而这个”透明”将导致很多严重的问题。就是说OS偷偷执行的, 通用的服务带来不可控性。即使熟悉OS的各种操作仍然可以把...
2022-05-10
Read More
虚拟化概述
summary “总是从简单的分层抽象开始,逐渐打破分层,然后融合” 虚拟化 = fake interface, thanks to layered 加速法 硬件打配和 bypass VMM 考虑拷贝开销:共享内存,减少拷贝 要隔离那再建”转换表” 抽象: 新接口 虚拟: 旧接口 用户态也是可以访问硬件的哦,注意操作系统的抽象, 这时在理解”OS是服务提供者” 如, mov, 访存等 扩...
2022-05-08
Read More
A fork() in the road论文笔记
Abstract fork()对于现代程序员来说是一个糟糕的抽象 别再使用fork()了,可以使用更现代的posix_spawn() 是时代的错误,与现代系统格格不入 不是线程安全的 不可扩展(unscalable) 不再简易 万恶之源: fork管得太多了 fork即同时插手了进程和它的地址空间 a. 这就导致从IO buffer到kernel bypass网络的一些实现变得tri...
2022-05-07
Read More
Previous
6 / 25
Next