博客
分类
标签
归档
友链
关于
Dark Mode
博客
分类
标签
归档
友链
关于
Dark Mode
Mens et Manus
QOM系统的"对象构建"子系统
Preface关于为何需要使用device_class_set_parent_realize()的讨论 1234567void device_class_set_parent_realize(DeviceClass *dc, DeviceRealize dev_realize, ...
2022-03-01
Read More
如何让已经运行的程序到后台运行
<c-z>挂起, 再开tmux, 在tmux里fg jobs fg bg disown <pid>shell退出不影响程序 中途改变想法了想记录日志,可以使用调试器修改描述符,从而记录日志123$ gdb -p <pid>(gdb) P (int)dup2((long)open("path/to/file", ...
2022-02-27
Read More
qemu中设备实例化过程
设备实例化过程:vcpu线程和cpu实例如何对接Abstractqemu设备实例化大致可以分为两个阶段: QOM系统的初始化 具体设备的初始化 纯c编写的qemu为了实现面向对象开发了自己的一套QOM系统(qemu object module)。用户掌握QOM提供的接口后就可以在qemu开发过程中用上一些面向对象的特性。 这里1.2章将先会讨论qemu中用面向对象方式进行实例化的原理,然...
2022-02-24
Read More
DDIA reading note
DDIA reading note存储结构Q 高吞吐量 TODO: 重看 append only SSTables(Sorted String Table) 分制(归并)的思想,合并有序段 有序 => 快找 append only => 磁盘顺序写入 LSM tree(日志结构合并树) 保存一系列在后台合并的SSTables 顺序写 => 写入更快 考虑写放大问...
2022-01-18
Read More
linux虚拟网桥创建
linux虚拟网桥创建 ethernet https://wiki.archlinux.org/title/Network_configuration/Ethernet https://www.youtube.com/watch?v=rSxK_08LSZw&ab_channel=SethJennings https://wiki.archlinux.org/title/Netwo...
2022-01-15
Read More
绘制火焰图
On-CPU 性能分析On-CPU即”CPU密集型” 12345$ git clone https://github.com/brendangregg/FlameGraph$ cd FlameGraph$ sudo perf record --call-graph=dwarf <cmd>$ sudo perf script | ....
2022-01-01
Read More
MIT6.S081 lazy allocate lab
lazy page allocationxv6使用sbrk系统调用申请内存。sbrk系统调用申请到内存后映射到用户空间中。当在申请大量内存时会带来很大的耗时,而且程序往往会预先申请暂时不用的内存。使用lazy allocate以提高效率,sbrk可以只标记以申请的虚拟地址但立刻申请物理页,当真正使用到该物理页时,产生缺页中断,然后真正分配物理内存,初始化为0, 映射。 Eliminate a...
2022-01-01
Read More
MIT6.S081 cow lab
Copy on Write虚拟内存可以通过修改标记位来让内存地址由不同含义,如通过标记PTE为只读或invalid可以触发page fault。lazy allocation和这个lab的COW都是例子。 fork会拷贝父进程的所有内容,但是这往往是浪费的,因为如果fork后立马exec执行新程序这fork花费那么大代价拷贝就浪费了。COW就是当子进程和父进程fork时先共享相同内存,当由写...
2022-01-01
Read More
MIT6.S081 fs lab
File system添加对大文件和符号链接的支持。可查阅参考书Chapter 8 Large files修改xv6支持的最大文件(目前是268block(即BSIZE,BSIZE=1024byte))。 之所以由这样的限制是因为xv6的inode用的12个直接块和1个”singly-indirect”块。所以总的有12+256 = 268block 每个块号是uint(8B),那么一个b...
2022-01-01
Read More
MIT6.S081 lock lab
Locks重新设计代码,提高并行度,降低锁竞争。降低锁的竞争会涉及数据结构和锁策略的改变。 提升xv6内存分配和块缓存的并行度。 Section 3.5: “Code: Physical memory allocator”Section 8.1 through 8.3: “Overview”, “Buffer cache layer”, and “Code: Buffer cache” ...
2022-01-01
Read More
Previous
11 / 28
Next