6.S081-2021
文章平均质量分 93
6.S081-2021
汐织海纳_Hina
这个作者很懒,什么都没留下…
展开
-
6.S081-2021-Lab6: Multithreading
每当线程进入时,根据屏障中已有的线程数,只有当它是最后一个线程时,线程才会将屏障状态设置为“通过”,以便所有线程都可以离开屏障。期望的行为是每个线程在barrier()中阻塞,直到nthreads的所有线程都调用了barrier()。在本作业中,您将实现一个屏障)(Barrier):应用程序中的一个点,所有参与的线程在此点上必须等待,直到所有其他参与线程也达到该点。文件notxv6/ph.c包含一个简单的哈希表,如果单个线程使用,该哈希表是正确的,但是多个线程使用时,该哈希表是不正确的。原创 2024-01-20 17:53:09 · 748 阅读 · 0 评论 -
6.S081-2021-Lab5: Copy-on-Write Fork for xv6
xv6中的fork()系统调用将父进程的所有用户空间内存复制到子进程中。如果父进程较大,则复制可能需要很长时间。更糟糕的是,这项工作经常造成大量浪费;例如,子进程中的fork()后跟exec()将导致子进程丢弃复制的内存,而其中的大部分可能都从未使用过。另一方面,如果父子进程都使用一个页面,并且其中一个或两个对该页面有写操作,则确实需要复制。原创 2023-12-22 12:42:43 · 1454 阅读 · 0 评论 -
6.S081-2021-Lab4: traps
在一个窗口执行# 实验指导书上说, 调试的时候指定一个CPU运行会更好一些在另一个窗口执行转为调试用户空间的call文件在main主函数打上断点输出解析:在0x1c处打上第一个断点,其中0x1c来自call.asm,main函数的入口地址和第一行命令的地址。再输入c,此时程序卡住不动在第一个窗口执行call命令此时第二个窗口输出再输入命令。原创 2023-12-21 19:21:12 · 773 阅读 · 1 评论 -
6.S081-2021-Lab3: page tables
walk为输入的va找到其对应的最后一级页表的PTE。如此遍历,walk最后返回的是最后一级页表的PTE,且路径上经过的三级页表都一定已经被分配了物理帧,并被建立起来。需要注意的是,如果传入的是新va,相关的映射未被建立,那么walk只会建立第二级和第三级页表(根页表是已经存在的),为它们分配新的物理帧,walk并没有为最后一级页表的PTE所指向的物理帧分配新的一页。也就是说,如果这个映射是新的,通过walk返回的PTE是无效的(全0),如果原来就有这个映射,那么walk就返回包含映射内容的PTE。原创 2023-12-07 17:54:56 · 1094 阅读 · 1 评论