6.s081 xv6
文章平均质量分 92
greyjoy_wh
即将毕业的非科班,努力学习中
展开
-
Traps and system calls
原因是内核在给每一个用户进程分配内存的时候,都会将同一段代码的,也就是这列的trampoline代码映射给用户的虚拟空间,同时这段代码的用户的虚拟空间地址,与内核中的虚拟空间地址是一样的,所以尽管切换了代码,但是还是能够在内核页表的映射下也能正确执行。COW 的总体思路就是fork()的时候不拷贝物理内存,只是让新的进程的页表 有着与父进程相同的映射,这样就不存在浪费时间复制了,当然子进程的页表项中会将这也映射设置成只读不可写,当子进程需要写时,就会把内存的拷贝,然后在新的拷贝上面去写。原创 2023-08-23 21:34:50 · 86 阅读 · 1 评论 -
page tables
有了页表的存在,每一个进程实际的物理地址就不可能冲突,此外页表还可以让多个虚拟地址映射到相同的物理地址上来节约内存(例如每一个进程中断都要进去的trampoline代码段),以及页表还能以一种简单的方法来保护内核或者用户栈。当然这都是猜测,后面肯定要具体学linux的页表的。每一个进程都有自己的用户页表,但是所有进程都是共享内核的,所以每一个进程都需要一个用户页表,但是所有进程的内核只需要一个内核页表。总的来说这些函数中,开头带有kvm的是操作内核页表的,开头带有uvm的是操作用户页表的。原创 2023-08-23 21:33:06 · 82 阅读 · 1 评论 -
Operating system organization
这一节课本介绍了一些硬件资源的抽象以及这样抽象的原因。在第一章的时候已经简单介绍过了。这里就不赘述。原创 2023-08-04 16:06:18 · 45 阅读 · 1 评论 -
Operating system interfaces
xv6 介绍的第一章。原创 2023-08-04 16:05:01 · 44 阅读 · 1 评论 -
File system
介绍xv6中的file system原创 2023-08-04 16:02:37 · 80 阅读 · 1 评论