其他分享
首页 > 其他分享> > OS-lab5实验报告

OS-lab5实验报告

作者:互联网

lab5实验报告

一、实验思考题

Thinking 5.1
查阅资料,了解 Linux/Unix 的 /proc 文件系统是什么?有什么作用? Windows 操作系统又是如何实现这些功能的?proc 文件系统这样的设计有什么好处和可以改进的地方?

Thinking 5.2
如果我们通过 kseg0 读写设备,我们对于设备的写入会缓存到 Cache 中。通过 kseg0 访问设备是一种错误的行为,在实际编写代码的时候这么做会引发不可预知的问题。请你思考:这么做这会引起什么问题?对于不同种类的设备(如我们提到的串口设备和 IDE 磁盘)的操作会有差异吗?可以从缓存的性质和缓存刷新的策略来考虑。

Thinking 5.3
一个磁盘块最多存储 1024 个指向其他磁盘块的指针,试计算我们的文件系统支持的单个文件的最大大小为多大?

Thinking 5.4
查找代码中的相关定义,试回答一个磁盘块中最多能存储多少个文件控制块?一个目录下最多能有多少个文件?

Thinking 5.5
请思考,在满足磁盘块缓存的设计的前提下,我们实验使用的内核支持的最大磁盘大小是多少?

Thinking 5.6
如果将 DISKMAX 改成 0xC0000000, 超过用户空间,我们的文件系统还能正常工作吗?为什么?

Thinking 5.7
阅读 user/file.c,思考文件描述符和打开的文件分别映射到了内存的哪一段空间。

Thinking 5.8
阅读 user/file.c,你会发现很多函数中都会将一个 struct Fd* 型的 指针转换为 struct Filefd* 型的指针,请解释为什么这样的转换可行。

Thinking 5.9
请解释 Fd, Filefd, Open 结构体及其各个域的作用。比如各个结构体会在哪些过程中被使用,是否对应磁盘上的物理实体还是单纯的内存数据等。说明形式自定,要求简洁明了,可大致勾勒出文件系统数据结构与物理实体的对应关系与设计框架。

Thinking 5.10
阅读serv.c/serve函数的代码,我们注意到函数中包含了一个死循环for (;

标签:文件,file,struct,int,dev,lab5,磁盘,实验报告,OS
来源: https://www.cnblogs.com/mashiqing/p/14840206.html