来源:考而思在线
近日,有位同学咨询了考而思在线的老师关于美国本科文件系统project课程的相关内容,考虑到可能并不是只有这一位同学遇到过这样的情况,本次我们就来一同分享一下。美国本科文件系统project课程代码为CS270,也就是“文件系统类项目”课程的意思。
这个类项目的教学目标是让学生有为Linux构建一个工作文件系统的经验。这样做可以让学生熟悉系统调用、Linux 文件抽象和设备 I/O 的概念。
从工程的角度来看(即学生需要做什么),项目分解为三个任务:
系统调用实现 -- 实现 Linux 可以对文件发出的系统调用;
实现文件抽象 -- 构建实现文件所需的内部数据结构和过程;
实施辅助存储管理 -- 构建文件系统中保留在辅助存储中的部分。
文件系统调用:
对于系统调用组件,学生需要使用名为 FUSE 的软件工具。FUSE(用户空间中的文件系统)可用于大多数 Linux 系统。它提供了一种方法来拦截 Linux 程序发出的文件系统调用,并将程序流重定向到作为用户级进程运行的守护程序中。也就是说,当 Linux 程序(任何 Linux 程序)进行文件系统调用时,FUSE 将调用学生编写的守护进程中的例程,而不是将该系统调用发送到内核中的 Linux 文件系统实现。
因此,通过使用 FUSE,学生可以像测试任何其他文件系统一样测试文件系统。更重要的是,学生可以将文件系统生成的结果与 Linux 文件系统本身生成的结果进行比较。这个“A / B”将是在季度末评估学生的工作的方式。
文件系统抽象:
在这里,学生有一些自由度。只要学生正确实现了文件系统调用的语义,内部结构的设计和实现就由学生决定。任何内部组织都是可以接受的,但它必须只在内存中(即学生不能只是把东西放在数据库中)。
辅助存储:
练习的第三部分是编写辅助存储管理,用于在计算机重新启动后保留文件系统状态。目标是能够关闭文件系统(通过和卸载或计算机重新启动),并使所有文件在重新挂载文件系统时保持原样和相同状态。
对于项目的这一部分,学生需要以4K块的形式读取和写入原始存储分区。也就是说,对持久性存储的所有访问都必须读取或写入完整的 4K 块。
项目可交付成果:
为了帮助使此练习按计划进行,我们将分阶段进行此项目,其中每个阶段都会收到一个项目分数。
第 1 阶段 -- 使用 FUSE 实现基本的打开/关闭/读/写/查找和目录功能。要完成此阶段,学生必须实现 mkfs 以使用磁盘块设备制作文件系统,实现基本的文件抽象(块管理、块映射、目录等),将文件系统实现与 FUSE 集成在阶段 1 结束时,学生应该有一个基本文件系统,它适用于大多数使用最小 POSIX 文件系统接口(打开/关闭/读/写/查找)的程序。
阶段 2 - 完成尽可能多的 FUSE 文件操作并优化性能。在阶段 1 结束时,学生可能有一个正常工作的文件系统,但如果学生小心持久性,它可能会非常慢和/或不完整。
在第 2 阶段结束时,学生应该能够在文件系统中运行任何常规 Linux 命令(例如.tar、gcc、grep、vi 等),就像在 Linux 文件系统本身上运行一样。为此,学生需要确保正在处理访问时间,权限等问题。
对第2阶段的期望是,它将比第1阶段更快,它将适用于更多的公用事业,但同样可靠。也就是说,第 2 阶段版本是必需的 Linux 功能的更完整版本,它也可以提高性能。
上述就是关于美国本科文件系统project课程重点的相关内容了,希望能够为正在学习这门课程或者后续要学习这门课程的同学提供到一定的帮助。当然了,若是有在课程辅导上相关需求,可以通过我们右侧的微信来与专业老师取得联系哦。
当前文章链接:
凡来源标注“考而思”均为考而思原创文章,版权均属考而思教育所有,任何媒体、网站或个人不得转载,否则追究法律责任
免费获得学习规划方案
已有 2563 位留学生获得学习规划方案
马上领取规划
*已对您的信息加密,保障信息安全。