随笔分类 -  6.s081

摘要:这里讲讲有关锁的基础知识点 coordination 为啥需要coordination?当我们在写线程代码时,有些场景需要等待一些特定的事件/条件,或者不同的线程之间需要交互,考虑这样一种情形:有一个进程从pipe中读数据,需要等待一个pipe不空的事件,所以就有: void busy_wait() 阅读全文
posted @ 2022-07-15 15:27 我是小BH 阅读(244) 评论(0) 推荐(0)
摘要:Lab9 File System 由于本人这段时间忙于其他事务,这一篇可能会写得比较简略,并且文件系统的有关知识和前面课程的知识不同,文件系统的知识十分庞杂,相应的笔记都会记录在另一篇文章中。 1. Large files(moderate) 1.1 题目 在原始xv6中,每个inode有13个bl 阅读全文
posted @ 2022-07-15 15:26 我是小BH 阅读(137) 评论(0) 推荐(0)
摘要:Lab10 mmap(hard) (期末复习操作系统的时候,过于无聊,因为题目都写不来,于是做了这个lab,比做题有意思多了。这个实验是hard,不过我做的很顺利,感觉有一种自己变强的假象hhh) void *mmap(void *addr, size_t length, int prot, int 阅读全文
posted @ 2022-07-15 15:23 我是小BH 阅读(137) 评论(0) 推荐(0)
摘要:Lab7 Multithreading ~~迄今为止做到的最简单的lab~~ 1. Uthread: switching between threads(moderate) 1.1 题目 可以算是对课程里讲的线程切换的简化实现版本。已知给了user/uthread.c和user/uthread_sw 阅读全文
posted @ 2022-07-15 15:19 我是小BH 阅读(104) 评论(0) 推荐(0)
摘要:Lab5 xv6 lazy page allocation 1. Eliminate allocation from sbrk()(easy) 1.1 题目 删除sbrk系统调用中的页面分配代码,旧的sbrk将进程的内存大小增加n个字节,然后返回新分配区域的开始部分(即旧的大小),新的sbrk应该只 阅读全文
posted @ 2022-07-15 15:17 我是小BH 阅读(148) 评论(0) 推荐(0)
摘要:Lab4 traps 1. 理解栈和栈帧 故事要从一张图片说起: 进程的创建和程序的运行: 举个例子来说,比如shell要运行一个程序,首先通过fork来创建进程,allocproc会映射user address space顶部的trampoline和trapframe(用于处理trap),然后ex 阅读全文
posted @ 2022-07-14 22:40 我是小BH 阅读(128) 评论(0) 推荐(0)
摘要:Lab3 Page Tables 1. Print a page table(easy) 1.1 题目 写一个vmprint()函数,该函数的参数是一个pagetable,以指定的形式打印pagetable。在exec.c的exec函数中插入if (p->pid == 1) vmprint(p->p 阅读全文
posted @ 2022-07-14 22:30 我是小BH 阅读(332) 评论(0) 推荐(0)
摘要:Lab8 Locks 这个实验还是蛮难的... 1. Memory allocator(moderate) 1.1 题目 众所周知,在xv6中,我们申请的内存是在结构体struct kmem中申请的,struct kmem中的链表struct run *freelist存放了所有的空闲内存(以pag 阅读全文
posted @ 2022-07-14 22:24 我是小BH 阅读(133) 评论(0) 推荐(0)