摘要: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec10-multiprocessors-and-locking 10.1 为什么要使用锁? 一个进程可以运行在多个CPU核上(虽然有CPU的亲和性),所以XV6存在很多共享 阅读全文
posted @ 2022-04-06 20:20 抿了抿嘴丶 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 记录问题 https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec09-interrupts/9.1-memory-in-real-os 9.1 真实操作系统内存使用情况 os(mit的Athena计算机)把大量内存都用在bu 阅读全文
posted @ 2022-04-06 15:42 抿了抿嘴丶 阅读(66) 评论(0) 推荐(0) 编辑
摘要: Page Fault 触发page fault之后,进程被kill,会触发panic,page fault会使用trap机制, 并将出错的地址虚拟地址放到STVAL寄存器中, 并将trap的原因放入SCAUSE寄存器中,那么usertrap函数就能够对page fault做出处理,一般就是kill进 阅读全文
posted @ 2022-04-03 10:43 抿了抿嘴丶 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 对于page fault,xv6采取保守的方式,也就是直接killed进程。但是在Linux存在着lazy allocation,copy-on-write fork,demand paging,memory mapped files这些功能 Eliminate allocation from sb 阅读全文
posted @ 2022-04-02 15:45 抿了抿嘴丶 阅读(119) 评论(0) 推荐(0) 编辑
摘要: https://pdos.csail.mit.edu/6.S081/2020/labs/pgtbl.html 简述 这个lab有三个task: 写一个打印页表内容的函数 给每个进程都创建一个内核页表,这个主要的优化点是具体点,就是将用户态页表的映射也放到每个进程的内核页表中,那么从用户态传入到内核态 阅读全文
posted @ 2022-04-01 21:22 抿了抿嘴丶 阅读(409) 评论(0) 推荐(0) 编辑
摘要: linux中的内核页表与进程用户态页表 阅读全文
posted @ 2022-04-01 15:47 抿了抿嘴丶 阅读(30) 评论(0) 推荐(0) 编辑
摘要: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec06-isolation-and-system-call-entry-exit-robert Trap机制 Trap机制就是用户空间有内核空间的切换,目的是为了安全性隔离 阅读全文
posted @ 2022-03-31 20:03 抿了抿嘴丶 阅读(174) 评论(0) 推荐(1) 编辑
摘要: https://pdos.csail.mit.edu/6.S081/2020/labs/syscall.html 这个lab主要为xv6添加新的系统调用 xv6中的系统调用的实现 对于initcode.S,最后需要执行exec系统调用用来装载可执行程序,可以看到用户代码将exec系统调用的参数int 阅读全文
posted @ 2022-03-30 20:58 抿了抿嘴丶 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 语言特点 Go语言引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在 天然支持并发(所以非常支持云计算) 语言层面支持并发,实现简单 gorotine,轻量级线程,可实现大并发处理,高效利用多核 基于CPS并发模型(Communicating Sequential P 阅读全文
posted @ 2022-03-30 18:23 抿了抿嘴丶 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 这个lab主要是用SS2PL(不需要index lock,因为不需要实现可序列化)实现三种隔离级别下lock的acquire与release, SS2PL可以实现REPETABLEREADS,因为SS2PL只有在一个txn commit的时候才会去释放锁,这样别人就不能修改当前txn所读的数据,也就 阅读全文
posted @ 2022-03-29 18:38 抿了抿嘴丶 阅读(423) 评论(0) 推荐(0) 编辑