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 中工作。 - 修改文件系统以支持符号链接。
- 修改文件系统以支持命名管道。
- 修改文件和虚拟机系统以支持内存映射文件。