助教:田成锦、汪睿、游翎璟 吴加禹、李佳伟、唐凯成

Slides:



Advertisements
Similar presentations
1 97 年度新住民子女教育研討會 九十七年十月二十九日 柯伯儒 [1] 詹雅琄 [2] [1] [2] [1] [1] 國立台北教育大學課程與教學研究所博士生、 彰化縣二林鎮廣興國小主任 [2] [2] 國立台中教育大學課程與教學研究所研究生、 彰化縣二林鎮廣興國小教師 有效提升國小新住民子女 語文學習的策略.
Advertisements

語文教學分享心得 組員: B 蘇品綺 B 張慈真 B 陳怡君 B 蕭美玲 B 王雅萍 B 蔡佳珍.
環保 環保問題社會病態行為 從選購產品方面 家庭廢棄物的處理 住家的節約能源方面. 環保問題社會病態行為 社會功利主義過盛,疏忽善盡設備的責任; 缺乏惜福愛物的觀念,以自我為重心,任 意破壞使用資源; 「家」的觀念過度狹隘,只顧裝修生活的 表面,缺乏公同經營人類共有的家 — 地球 的概念; 無正確的理財觀念,而以金錢的謀取為目.
縮短公共工程工期之 招標決標策略及作法 行政院公共工程委員會 1. 簡報大綱 壹、前言 貳、招標決標策略及作法 参、適用案件類型 肆 、 結語 2.
做 荷 包 的 主 人 第 一 桶 金 督導 張宏仁 財團法人「張老師」基金會 桃園分事務所 督導 張宏仁
推销自己是一种才华,是一种艺术。 有了这种才华, 你就能安身立命, 使自己处于不败之地。 卡耐基.
宿建德江 內容探究 問題討論 語文小詞典 絕句淺說 借代修辭 (補充說明借代法) 延伸閱讀 應用練習 (二)
母親的教誨 胡適 投影片設計:邱芳芸、謝瑞珍.
普通高等学校 本科教学工作水平评估方案.
工 业 产 品 设 计 广义的工业设计:产品设计、环境设计、视觉传达设计。 狭义的工业设计:产品设计。
时间与我们的世界 Pb 段心蕊.
第五章银行负债业务 孙小平 经济教研室.
會計資訊系統 專章A.
第三章 調整與編表.
建设工程保险制度案例分析 班级:建工134 学号: 姓名:韩秀昆.
教育年鉴条目的撰写.
岳麓版历史必修一 近代西方资本主义政体的建立 近代西方资本主义政体的建立 山东师大附中 侯新磊.
如何生动形象地 写人记事.
小组工作实训课(1) 第 教案 04.
“计算机与网络”工作室和相关特需课程建设
香港普通話研習社科技創意小學 周順強老師.
大家都来关注国家安全 南京市江宁中学 傅德柱.
第12课时 对自己的行为负责 在承担责任中成长 考 点 聚 焦 考 题 探 究 考 点 拓 展 1.
不为追"星"所累 (三) 第四课 青春故事 授课人:商城县汪桥一中王启学.
我是情緒管理小高手 黃玲蘭老師.
歡迎蒞臨 一年二班家長日.
<<文獻學學習報告>>
计算机基础与实训教材系列 《电脑办公自动化实用教程(第三版)》.
2007 學校國民教育 交流研討會 學校經驗分享.
Ubuntu 驱动安装准备 1. 确认ubuntu操作系统版本 2. 运行安装脚本 3.驱动Controller.
第7章:文件共享与远程控制 第6章:vi/vim——回顾 本章教学目标: vi/vim的三种工作模式 vi/vim的基本用法
尋找世界文明的曙光 美索不達米亞 將地方圖案插入此投影片 選取〔插入〕功能表 〔圖片〕指令 選取〔從檔案〕指令 選取你的標幟圖片檔案
典藏豐富、深具特色的小型博物館 鹽分地帶文化館興建募款啟事 施工中 歡迎蒞臨參觀 建館緣由
网络仿真工具介绍
Computer Network Lab 資碩一 黃麒瑋
主題課程的設計與實例 黃繼仁 課程發展與設計.
網路安全技術 – 期末報告 A 高名勳 指導教授:梁明章 老師.
DM81X 视频采集处理 ——软硬件环境介绍 广州创龙电子科技有限公司
编译与多文件.
第二天 计算机基础技能培训 (一)linux基础知识
伺服器探索營 Day 1 指導老師: 張啟中 (JohnAxer) 教學助理:
第3章 Linux免安裝版學習與操作 課前指引
摩擦力.
永远的 Autotools ——GNU Build System 简介(一)
Red Hat Linux 安装与使用方法的简单介绍
TinyOS开发环境安装 基于Ubuntu14.04.
Linux核心編譯與模組管理 2013/01/19.
小太陽兒童人文藝術學院兒童畫展 地點:住院大樓9F、11F外走道( )
注音符號 首冊教學 說明.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
第三冊第十四課記承天夜遊 王永榮 將地方圖案插入此投影片 選取〔插入〕功能表 〔圖片〕指令 選取〔從檔案〕指令 選取你的標幟圖片檔案
閩南語初階研習報告 《我的冊包》 改編自康軒版第一冊第二課 程詩嵐 林幸玫 李佩瑾 吳瑛瑛 李逸琦 朱嬿蓉.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
香港傳統的農村生活.
團體衛生教育護理創意競賽 報告者:護理科 計畫主持人邱馨誼講師
幼稚園課程標準中的節奏樂器教學 4990U014李宜芸 4990U047陳靜芳 4990U049黃鈴珊 4990U050葉佩汾
实验一:编译运行Linux内核并使用gdb进行调试
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
WINDOWS 7 磁盘管理.
分組專題報告 陳錦蓮、陳麗妃製作.
沪粤版八年级物理 3.5 奇妙的透镜.
客語歌謠-四季歌 台中市葫蘆墩國小教師 吳國銘 張郁棻.
注音符號教學 實務分享 公正國小 簡美月.
§4 连续型随机变量.
鏈球的力學分析 日本奧運鏈球冠軍(82米91) 室伏廣治因小腿肌肉受傷,退出杜哈亞運。 俄羅斯「鐵娘子」泰亞娜.李森科 九十五年八月八日在
Linux网络配置管理.
6.1.1 平方根.
第二章 一元一次不等式和一元一次不等式组 回顾与复习(一).
第四章 買賣業會計.
太陽能車、船競賽分享 主講:電子資訊學程 吳冠蓓 老師.
Presentation transcript:

助教:田成锦、汪睿、游翎璟 吴加禹、李佳伟、唐凯成 实验四:FAT文件系统的实现 助教:田成锦、汪睿、游翎璟 吴加禹、李佳伟、唐凯成

实验目的 熟悉FAT16的存储结构 利用FUSE实现一个只读的FAT16文件系统 拓展实验:实现功能完整的FAT16文件系统(选做) 支持长文件名 支持写操作 实现线程安全 2019/6/5

实验环境 主机:Ubuntu 32位 14.04 (或其他32位Ubuntu系统) 本次实验通过FUSE来实现一个FAT文件系统,需要根据 FUSE提供的接口实现具体的文件操作 下载教学主页上的lab-4基础代码并解压即可开始实验 2019/6/5

实验内容——1.熟悉使用FUSE 了解FUSE FUSE(Filesystem in Userspace,用户态文件系统)是一个实现在用 户空间的文件系统框架,通过FUSE内核模块的支持,使用者只需要 根据fuse提供的接口实现具体的文件操作就可以实现一个文件系统。 FUSE主要由三部分组成:FUSE内核模块、用户空间库libfuse以及挂载 工具fusermount: 1. fuse内核模块:实现了和VFS的对接 2. fuse库libfuse:负责和内核空间通信 3. 挂载工具:实现对用户态文件系统的挂载。 更多详细内容可参考博客: https://blog.csdn.net/ty_laurel/article/details/51685193 2019/6/5

实验内容——1.熟悉使用FUSE 配置FUSE环境 linux kernel在2.6.14后添加了FUSE模块,因此对于目前的大多数发 行版来说只需要安装libfuse库即可。 在<https://github.com/libfuse/libfuse>下载libfuse 2.9.5,并编译安装: wget -O libfuse-2.9.5.zip https://codeload.github.com/libfuse/libfuse/zip/fuse_2_9_5 unzip libfuse-2.9.5.zip cd libfuse-fuse_2_9_5/ ./makeconf.sh ./configure --prefix=/usr make -j4 sudo make install 2019/6/5

实验内容——1.熟悉使用FUSE 配置FUSE环境 编译出错处理: 在执行./makeconf.sh可能会遇到“ libtoolize: not found ”或 “autoreconf: not found”,需要安装libtool和autoconf软件包,ubuntu下可以通过下面的命 令安装: sudo apt install libtool sudo apt install autoconf 2019/6/5

实验内容——1.熟悉使用FUSE 测试FUSE 通过libfuse-fuse_2_9_5/example下的fusexmp进行测试: 这时候在文件管理器中打开fuse_test_dir目录,可以看到当前Linux 系统的“/”被挂载到这个目录下。 结束测试可以直接在当前终端中Ctrl + C结束程序,或者在新的终端 中输入: 提示:当执行用户自己实现的fuse程序时,如果出现错误:fuse:bad mount point `fat_dir/`: Transport endpoint is not connected,可通过执 行上面这条命令卸载对应的文件夹来解决。 cd example mkdir fuse_test_dir ./fusexmp -d fuse_test_dir fusermount -u fuse_test_dir 2019/6/5

实验内容——2.FAT文件系统 FAT格式磁盘镜像的制作过程 分为三步:创建文件,格式化文件,挂载使用 dd if=/dev/zero of=fat-disk.img bs=1M count=100 mkfs.vfat -F 16 fat-disk.img mkdir mdir mount fat-disk.img mdir 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 FAT16文件系统的基本结构依次为: FAT16格式的磁盘的组织方式为: DBR扇区、FAT表1、FAT表2、根目录和数据区 FAT16格式的磁盘的组织方式为: 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 DBR扇区 DBR是操作系统可以直接访问的第一个扇区,包括一个引导程序和一个 称为BPB的本分区参数记录表。BPB参数块记录着本分区的启始扇区、 结束扇区、文件存储格式、硬盘介质描述符、根目录大小、*FAT*个数、 分配单元的大小等重要参数。 下图是一个FAT16文件系统的DBR扇区 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 DBR扇区 DBR扇区每个字段代表的含义如下: 根据上面的DBR扇区,我们可以算出各FAT的偏移地址,根目录的偏移地址,数据区的偏移地址。FAT1偏移地址:保留扇区(FAT1之前的扇区,包括DBR扇区)之后就是FAT1。因此可以得到,FAT1的偏移地址就是1个扇区的位置,也就是512。FAT2偏移地址:FA1偏移地址+FAT1的大小,512+21*512 = 11264。根目录偏移地址: FAT2偏移地址+FAT2的大小,11264+21*512= 22016。数据区的偏移地址:根目录偏移地址+根目录大小,22016+32*512=38400。其中根目录大小是由根目录项数决定的,每项占32字节 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 FAT表 FAT是簇的链表,FAT2与FAT1的内容通常是即时同步的,可以认为两 个FAT表完全相同。在根据目录项获取文件的首簇号后,在FAT中找到 对应的簇,可以找到下一个簇,一直到文件结束。每个簇用2字节表示 簇的状态, 具体意义如下表所示: 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 目录 每个32字节目录项表示的具体含义如下: 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 目录 系统将文件名分成两部分进行存储,即主文件名+扩展名。 不记录主文件名与扩展名之间的".",并且存储成大写字母。 主文件名不足8个字符以空白符(20H)填充,扩展名不足3个字符同样以 空白符(20H)填充。 0x0偏移处的取值若为0x0,表明目录项为空;若为0xE5,表明目录项 曾被使用,但对应的文件或文件夹已被删除。 文件名中的第一个字符若为“.”或“..”表示记录的是一个子目录的目录项, “.”代表当前目录;“..”代表上级目录。 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 FAT表与文件定位 FAT表以"F8 FF FF FF" 开头,为介质描述单元,并不参与FAT表簇链关系, 下图展示了FAT表的内容。为了定位一个文件或目录,需要先找到其对应 的目录项,然后根据首簇号查找FAT中的相应表项。 2019/6/5

实验内容——2.FAT文件系统 FAT16的存储结构 FAT表与文件定位 假设一个文件,其首簇号是2,则查看FAT的相对偏移0x4~0x5的内容, 此处为0xFFFF,表示存储在2号簇上的文件是个小文件,只占用1个簇 便结束了。 假设另一个文件的首簇号是8,则查看FAT的相对偏移0x10-0x11的内容, 为0x0009,就是说该文件继8号簇后的内容会存放在9号簇中;继续查 看9号簇的FAT表项内容是0x000A,该文件继9簇后的内容会存放在10 号簇中,继续这个过程,会发现文件在11号簇结束。 2019/6/5

实验要求 实验任务 补全代码包simple_fat16.c中的标记TODO(一共9处)的部分,实现 一个只读的FAT16文件系统。 提示:有需要的话,可采用Linux下的xxd和hexdump等命令或者 Windows下的WinHex等十六进制文件编辑工具,分析对应的磁盘镜 像文件。 2019/6/5

实验要求 运行与测试 使用如下的命令编译并测试程序: #进入源码目录 make #测试一 ./simple_fat16 --test 2019/6/5

实验要求 运行与测试 测试一是为了验证程序的FAT相关部分的代码正确性(以 fat16_test.img作为磁盘镜像文件),一共有6个测试目标: 2019/6/5

实验要求 运行与测试 通过测试一后,运行如下的命令进行FUSE功能的测试(以fat16.img 作为磁盘镜像文件) #测试二 ./simple_fat16 -d fat_dir 2019/6/5

实验要求 运行与测试 这时候在文件管理器中打开fat_dir目录,需要能够看到里面的文件 列表,以及正常访问里面的文件 2019/6/5

评分标准 得分由两部分构成 代码运行得分 回答问题得分 未能通过测试一,按照完成的测试目标数给分; 能正常通过测试二(看到文件+访问文件)得8分 只能看到文件列表但无法正常访问文件得7分。 回答问题得分 针对代码实现,助教提问问题,根据回答情况在代码运行分的基础上 加分/扣分。 2019/6/5

提交方式 将实验报告、源代码打包为压缩包提交 提交至邮箱:ustc_os2019@163.com 本次实验只要求修改simple_fat16.c文件,不能修改其他文件,所以 源代码只提交simple_fat16.c文件即可。 提交至邮箱:ustc_os2019@163.com 邮件主题、文件名称、压缩包名称 均采用以下格式命名 x-学号-姓名(x:代表第x次实验) 例如张三的第1次实验命名为“1-PB17011010-张三” 未按照规范命名的邮件会被忽略、删除 实验验收和报告提交截止日期请关注课程主页 2019/6/5

拓展实验(选做) 实验目标 实现一个功能完整的FAT16文件系统 2019/6/5

拓展实验内容1 支持长文件名的FAT 16文件系统 在之前的实验中,我们只关注了短文件名(8+3格式) 的实现,这种这种方式有很大的局限性。 要求:参考相关资料,实现能够支持长文件名的FAT文 件系统,要求能够正常显示fat.img中的文件名。 2019/6/5

拓展实验内容2 支持写操作的FAT 16文件系统 在已有的只读文件基础上,实现可支持创建文件,写文 件,删除文件的功能,同时能够支持文件属性的修改。 要求:能够在文件系统中支持touch,mkdir,cp,rm等 命令,支持的功能越多越好。 2019/6/5

拓展实验内容3 实现线程安全的FAT 16文件系统 要求:在多线程访问文件系统时,需要保证读写请求被 正确处理,能够使用fio工具测试文件系统,并且有不错 的性能结果。 2019/6/5