Loading

上一页 1 2 3 4 5 6 7 ··· 35 下一页
摘要: ![img](https://img2023.cnblogs.com/blog/1942408/202308/1942408-20230814095102135-891355553.png) > RocketMQ中的领域概念,RTFM!!!! > # NameServer篇 ## 作为一个MQ的设计 阅读全文
posted @ 2023-08-14 15:33 yudoge 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 前言 我还记得在我大一的时候上C语言课,老师的期末实验是用C语言写一个命令行的管理系统,本着模块化的思想,我很自然的想到系统中具有不同职责的模块应该分到不同的文件里去,但我真的不知道C语言该怎么做这种拆分,所以最后我用一个巨大无比的文件完成了实验。 现代编程语言经过层层抽象封装,绝大部分复杂的细节都 阅读全文
posted @ 2023-05-05 18:48 yudoge 阅读(141) 评论(0) 推荐(0) 编辑
摘要: ASM层面的例程调用 在x86-64中,指令集本身提供了用于实现子例程调用(函数调用)的一些指令。其它指令集架构,如risc-v、arm,也都提供了这些指令。 x86-64以4条核心指令提供了一个调用栈的模型,以实现子例程调用。 push指令 语法 push push push 语义 push指令将 阅读全文
posted @ 2023-04-27 17:46 yudoge 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 虚拟内存提供了一个中间层:内核可以通过将PTE标记为invalid或者read-only来拦截内存引用,这会导致page fault,此时,你可以通过修改PTE来改变地址的含义。在计算机系统中有一种说法,任何系统问题都可以通过中间层解决。lazy allocation实验提供了一个例子,本次实验将探 阅读全文
posted @ 2023-04-21 11:13 yudoge 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 文件系统的一个目标是组织和存储数据。文件系统通常支持在用户和应用之间共享数据,以及持久化它们以让重启后数据仍然可用。 xv6文件系统提供Unix风格的文件、目录以及路径名(查看第一章)并且将它的数据存储在virtio磁盘上以持久化(查看第四章)。文件系统面临多种挑战: 文件系统需要磁盘数据结构来表示 阅读全文
posted @ 2023-04-11 13:48 yudoge 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 任何操作系统都希望运行比计算机所拥有的CPU数量更多的进程,所以,我们需要一个在进程之间时分CPU的计划,理想状态下,这种共享对用户进程透明。给每一个进程提供它拥有自己的虚拟CPU的通用方式是在多个硬件CPU上多路复用进程。这一章解释了xv6如何实现多路复用。 7.1. 多路复用 xv6会在每个CP 阅读全文
posted @ 2023-03-30 10:15 yudoge 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 包括xv6在内的大多数内核都会交错的执行多个活动,一个原因来自于多处理器硬件:计算机有多个独立运行的CPU,比如xv6的RISC-V,这些CPU共享物理内存,并且xv6利用这一点来维护被所有CPU共同读写的数据结构。这种共享提高了在一个CPU正在更新数据结构的过程中另一个CPU读取该数据结构的可能, 阅读全文
posted @ 2023-03-27 08:00 yudoge 阅读(334) 评论(0) 推荐(0) 编辑
摘要: Trap和系统调用 中断和设备驱动 驱动是操作系统用于管理特定设备的代码:它配置设备硬件,通知设备执行操作,处理返回的中断,并且与可能在该设备上进行I/O等待的进程交互。编写驱动代码可能很棘手,因为驱动与它管理的设备是并行执行的,此外,驱动必须理解设备硬件接口,这可能是复杂的并且缺乏文档。 需要被系 阅读全文
posted @ 2023-03-22 16:17 yudoge 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 当硬件对用户使用的虚拟地址进行翻译时,若该虚拟地址不正确,比如尚未映射、权限不足等,硬件会产生一个page fault陷阱给操作系统,就是这样一个看似简单平常的机制,却给了操作系统很大的能力,它可以做很多有趣的事。 lazy allocation:操作系统在给用户进程分配内存时,可以先不分配实际的物 阅读全文
posted @ 2023-03-17 15:23 yudoge 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 今天分析一下xv6中的内核页表挂载流程,可能会做下pagetable lab。 启动 // start()会在每一个CPU上,以supervisor mode跳转到这里 void main() { // 确保只有一个CPU执行一次 if(cpuid() == 0){ kinit(); // 物理页分 阅读全文
posted @ 2023-03-05 16:01 yudoge 阅读(238) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 35 下一页