Appearance
练习
- 为什么在
balloc中 panic?xv6 能恢复吗? - 为什么在
ialloc中 panic?xv6 能恢复吗? - 为什么
filealloc在文件用完时不会 panic?为什么这种情况更常见,因此值得处理? - 假设与
ip对应的文件在sys_link调用iunlock(ip)和dirlink之间被另一个进程取消链接。链接会正确创建吗?为什么或为什么不? create进行了四个函数调用(一个到ialloc和三个到dirlink),它要求这些调用必须成功。如果任何一个不成功,create会调用panic。为什么这是可以接受的?为什么这四个调用都不会失败?sys_chdir在iput(cp->cwd)之前调用iunlock(ip),而iput(cp->cwd)可能会尝试锁定cp->cwd,然而推迟iunlock(ip)到iput之后不会导致死锁。为什么不呢?- 实现
lseek系统调用。支持lseek还需要你修改filewrite以在lseek将off设置到f->ip->size之外时用零填充文件中的空洞。 - 向
open添加O_TRUNC和O_APPEND,以便>和>>运算符在 shell 中工作。 - 修改文件系统以支持符号链接。
- 修改文件系统以支持命名管道。
- 修改文件和虚拟机系统以支持内存映射文件。