文件系统课程设计指导
文件系统设计课程设计

文件系统设计课程设计一、教学目标本课程的教学目标是使学生掌握文件系统设计的基本原理和方法,培养学生分析和解决文件系统相关问题的能力。
具体分为以下三个部分:1.知识目标:学生需要掌握文件系统的概念、组成、基本操作和存储分配策略等基本知识;了解不同类型的文件系统结构及其优缺点;熟悉文件系统的性能评价指标和优化方法。
2.技能目标:学生能够运用所学知识分析和设计简单的文件系统;具备使用文件系统相关工具软件进行维护和优化的能力;能够阅读和理解文件系统相关的技术文档。
3.情感态度价值观目标:培养学生对文件系统的兴趣,使其认识到文件系统在计算机系统中的重要性;培养学生严谨的科学态度和良好的团队合作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文件系统概述:介绍文件系统的基本概念、作用、发展历程和分类。
2.文件系统的组成:讲解文件系统的结构、组件及其功能,包括文件、目录、存储器等。
3.文件系统的实现:深入剖析文件系统的核心实现技术,如文件分配策略、目录结构、文件访问控制等。
4.文件系统的性能评价:介绍文件系统的性能评价指标,如读写速度、空间利用率等,并讲解优化方法。
5.常见文件系统分析:对比分析不同类型的文件系统结构及其适用场景,如FAT32、NTFS、ext4等。
6.文件系统的维护与优化:讲解如何使用文件系统工具软件进行维护和优化,以提高系统性能。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:教师通过讲解、演示等方式,向学生传授文件系统的基本概念、原理和实现方法。
2.案例分析法:教师通过分析实际案例,引导学生运用所学知识解决实际问题。
3.实验法:学生通过动手实验,加深对文件系统结构、操作和维护的理解。
4.讨论法:学生在课堂上相互交流、讨论,分享学习心得和经验,提高团队合作能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用国内外优秀教材,如《计算机操作系统》、《文件系统设计与实现》等。
课程设计文件系统地实现

课程设计文件系统地实现一、教学目标本课程的教学目标是使学生掌握系统的文件系统知识,包括文件的概念、文件的存储、文件的访问和操作、文件的管理和保护等。
具体来说,知识目标要求学生了解文件系统的基本概念和原理,熟悉常见的文件操作命令和文件管理系统;技能目标要求学生能够熟练使用文件系统进行文件的存储、访问和管理,能够进行文件系统的维护和优化;情感态度价值观目标要求学生树立正确的文件使用观念,注重文件的安全和保护,培养良好的文件管理习惯。
二、教学内容本课程的教学内容主要包括文件系统的基本概念和原理、常见的文件操作命令和文件管理系统、文件系统的维护和优化等。
具体来说,第一部分将介绍文件系统的基本概念和原理,包括文件的概念、文件系统的结构和工作原理等;第二部分将介绍常见的文件操作命令和文件管理系统,包括文件的创建、删除、复制、移动等操作,以及常见的文件管理系统如Linux的文件系统、Windows的文件系统等;第三部分将介绍文件系统的维护和优化,包括文件系统的检查和修复、文件系统的性能优化等。
三、教学方法为了达到本课程的教学目标,将采用多种教学方法进行教学。
首先,将采用讲授法,向学生讲解文件系统的基本概念和原理,让学生了解文件系统的工作原理和结构;其次,将采用讨论法,学生进行小组讨论,让学生通过交流和合作解决问题,提高学生的思维能力和团队合作能力;此外,还将采用案例分析法,通过分析实际案例,让学生了解文件系统的应用和实际操作,提高学生的实际操作能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,将选择和准备适当的教学资源。
教材方面,将选择内容全面、系统,适合学生水平的教材;参考书方面,将选择一些经典的文件系统方面的参考书,供学生自主学习和参考;多媒体资料方面,将准备一些与文件系统相关的多媒体资料,如PPT课件、视频教程等,帮助学生更好地理解和掌握文件系统的知识;实验设备方面,将准备一些计算机和网络设备,供学生进行文件系统的实际操作和实验。
操作系统课程设计-文件系统

操作系统课程设计-文件系统一、引言文件系统是操作系统中的重要组成部分,负责对计算机中的文件进行管理和组织。
在操作系统课程设计中,文件系统的设计和实现是一个重要的任务。
本文将介绍文件系统的设计原则、功能和实现过程。
二、设计原则1. 可靠性文件系统需要确保数据的可靠性,能够有效地进行错误检测和纠正。
它应该能够处理文件的损坏、删除或丢失等情况,并能够进行数据恢复。
2. 效率文件系统需要具备高效的存取和查找功能,能够在较短的时间内完成对文件的操作。
它应该对文件进行良好的组织和管理,以提高文件的读写速度。
3. 安全性文件系统要能够保护文件的机密性和完整性,确保只有授权用户才能访问文件,并防止数据被恶意篡改或破坏。
4. 可扩展性文件系统应该能够适应不同容量和规模的存储设备,并能够随着存储需求的增长而进行扩展。
三、功能1. 存储管理文件系统需要对存储设备进行管理,包括磁盘空间的分配、回收和整理等操作,确保文件能够高效地存储和读取。
2. 目录管理文件系统需要提供目录管理功能,能够对文件进行组织和分类。
用户可以根据目录结构查找和管理文件,方便文件的查找和访问。
3. 文件操作文件系统需要支持各种文件操作,包括创建、删除、打开、关闭、读取和写入等操作。
它应该提供一组接口供用户和应用程序使用。
4. 错误处理文件系统需要对各种错误情况进行处理,包括磁盘故障、读写错误和用户操作错误等。
它应该能够识别和纠正错误,并提供相应的错误提示和恢复机制。
四、实现过程1. 文件分配文件系统需要确定如何将磁盘空间分配给文件,以实现高效的存储和检索。
常见的文件分配方式包括连续分配、链式分配和索引分配等。
2. 目录结构文件系统需要设计合适的目录结构,以方便用户查找和管理文件。
常见的目录结构包括树状目录结构、索引节点和哈希表等。
3. 文件读写文件系统需要实现高效的文件读写功能,包括将文件从磁盘读入内存和将文件从内存写入磁盘。
它应该提供缓存机制来加速读写操作。
文件系统演示课程设计

文件系统演示课程设计一、课程目标知识目标:1. 让学生了解文件系统的基本概念,掌握文件的组织、存储和检索方式。
2. 使学生掌握不同类型的文件系统,如FAT32、NTFS等,以及它们的特点和适用场景。
3. 引导学生了解文件系统的安全性和权限设置,学会合理分配文件权限。
技能目标:1. 培养学生运用文件系统进行数据存储、管理和检索的能力。
2. 培养学生利用文件系统进行资源组织、共享和协作的能力。
3. 提高学生解决文件系统相关问题的能力,如文件丢失、磁盘空间不足等。
情感态度价值观目标:1. 培养学生对计算机科学技术的兴趣和求知欲,激发他们探索文件系统奥秘的热情。
2. 培养学生具有良好的信息素养,尊重知识产权,遵循法律法规,合理使用文件系统。
3. 培养学生具备团队协作精神,学会在文件系统管理和使用过程中与他人沟通、分享和合作。
课程性质:本课程为计算机科学与技术领域的基础课程,旨在帮助学生建立文件系统知识体系,提高实际操作能力。
学生特点:学生具备一定的计算机操作基础,对文件系统有初步了解,但缺乏系统深入的认识。
教学要求:结合学生特点,注重理论与实践相结合,以案例驱动、任务导向的教学方法,引导学生主动探究,提高综合运用能力。
通过本课程的学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。
二、教学内容1. 文件系统基本概念:文件、目录、磁盘空间分配、文件存储结构。
2. 文件系统的类型:FAT32、NTFS、EXT4等,以及它们的优缺点和适用场景。
3. 文件操作与管理:创建、删除、复制、移动、重命名文件和文件夹;文件属性和权限设置。
4. 文件系统的性能与优化:磁盘碎片整理、文件压缩、磁盘配额。
5. 文件系统安全与保护:访问控制、加密、备份与恢复。
6. 文件系统故障处理:文件丢失、磁盘损坏、系统错误等常见问题的解决方法。
教学内容安排与进度:第一课时:文件系统基本概念及类型介绍。
第二课时:文件操作与管理,如创建、删除、复制、移动文件和文件夹。
文件系统设计课程设计

文件系统设计课程设计一、课程目标知识目标:1. 理解文件系统的基本概念、组成和功能;2. 掌握文件系统的设计原理和实现方法;3. 了解不同类型的文件系统及其特点;4. 学习文件系统的性能评价和优化方法。
技能目标:1. 能够分析实际需求,设计适合的文件系统方案;2. 学会使用相关工具和技术进行文件系统的实现和调试;3. 能够评估文件系统的性能,并提出优化措施;4. 培养解决文件系统设计过程中遇到问题的能力。
情感态度价值观目标:1. 培养学生对计算机科学和文件系统领域的兴趣和热情;2. 增强学生的团队合作意识和责任感,培养良好的工程素养;3. 引导学生关注文件系统在实际应用中的价值,提高社会责任感;4. 培养学生勇于探索、不断创新的精神。
课程性质分析:本课程为计算机科学与技术专业的高年级课程,旨在帮助学生掌握文件系统设计的基本原理和方法,提高解决实际问题的能力。
学生特点分析:学生已具备一定的编程基础和操作系统知识,具有较强的逻辑思维能力和动手能力,但对文件系统的设计与应用尚缺乏深入了解。
教学要求:结合学生特点,课程注重理论与实践相结合,强调动手实践和创新能力培养。
通过本课程的学习,使学生能够独立完成文件系统的设计与实现,并具备一定的优化能力。
二、教学内容1. 文件系统基本概念:文件、目录、磁盘空间分配、文件系统结构等;教材章节:第1章 文件系统概述2. 文件系统设计原理:文件存储结构、文件存取控制、文件系统一致性等;教材章节:第2章 文件系统设计原理3. 常见文件系统类型:FAT、NTFS、EXT2/3/4等;教材章节:第3章 常见文件系统类型4. 文件系统实现技术:文件存储布局、目录实现、磁盘空间管理、文件系统恢复等;教材章节:第4章 文件系统实现技术5. 文件系统性能评价与优化:性能指标、性能评价方法、文件系统优化策略等;教材章节:第5章 文件系统性能评价与优化6. 文件系统应用案例:Linux文件系统、Windows文件系统等;教材章节:第6章 文件系统应用案例教学内容安排与进度:第1周:文件系统概述,基本概念第2周:文件系统设计原理第3周:常见文件系统类型第4周:文件系统实现技术第5周:文件系统性能评价与优化第6周:文件系统应用案例分析与讨论三、教学方法本课程采用以下教学方法,旨在激发学生的学习兴趣,提高教学效果:1. 讲授法:通过系统的讲解,使学生掌握文件系统的基本概念、原理和关键技术。
文件处理系统课程设计

文件处理系统课程设计一、课程目标知识目标:1. 理解文件处理系统的基本概念,掌握文件类型、存储方式及文件管理的基本原则;2. 学会使用常用的文件处理软件,并对文件进行有效的分类、存储、检索和管理;3. 了解文件处理系统在日常工作、学习中的应用场景,提高信息处理能力。
技能目标:1. 培养学生熟练操作文件处理软件的能力,包括创建、编辑、保存和分享文件;2. 培养学生运用文件处理技巧,提高文件检索、整理和管理效率;3. 培养学生运用文件处理系统解决实际问题的能力,如团队协作、信息共享等。
情感态度价值观目标:1. 培养学生认真负责的工作态度,注重文件的规范性和准确性;2. 培养学生养成良好的文件管理习惯,提高学习、工作效率;3. 增强学生的信息安全意识,遵循法律法规,保护个人和他人隐私。
课程性质:本课程为实用技能型课程,结合学生年级特点和教学要求,注重培养学生的实际操作能力,提高信息素养。
学生特点:学生具备一定的计算机操作基础,对文件处理系统有一定了解,但缺乏系统性的学习和实践。
教学要求:课程内容紧密联系实际,注重操作实践,强调学以致用。
教学过程中,教师应关注学生的个体差异,提供个性化指导,确保学生达到课程目标。
通过本课程的学习,使学生能够熟练运用文件处理系统,提高学习、工作效率,为今后的学习和工作打下坚实基础。
二、教学内容1. 文件处理系统基础知识- 文件类型与格式- 文件存储与读取- 文件管理原则与方法2. 常用文件处理软件操作- 文本编辑软件的使用(如Word)- 电子表格软件的使用(如Excel)- 演示文稿软件的使用(如PowerPoint)3. 文件处理技巧与策略- 文件分类与命名规范- 文件检索与共享方法- 文件备份与恢复策略4. 文件处理系统在实际应用中的案例- 学习场景下的文件处理- 工作场景下的文件处理- 团队协作与信息共享教学大纲安排:第一课时:文件处理系统基础知识第二课时:常用文件处理软件操作(文本编辑软件)第三课时:常用文件处理软件操作(电子表格软件、演示文稿软件)第四课时:文件处理技巧与策略第五课时:文件处理系统在实际应用中的案例教学内容与教材关联性:本教学内容与教材《计算机应用基础》中关于文件处理系统的章节内容紧密相关,涵盖了教材中所提及的知识点,并根据课程目标进行了适当的拓展和深化。
多级文件系统课程设计

多级文件系统课程设计一、课程目标知识目标:1. 理解多级文件系统的概念,掌握其基本结构和原理;2. 学会使用多级文件系统进行文件的组织、存储和管理;3. 了解多级文件系统在不同操作系统中的应用和区别。
技能目标:1. 能够运用所学知识,对文件进行有效的分类、命名和存储;2. 掌握多级文件系统的基本操作,如创建、删除、修改文件和文件夹;3. 提高学生在计算机操作中的信息检索和处理能力。
情感态度价值观目标:1. 培养学生对多级文件系统学习的好奇心和探究欲,激发学习兴趣;2. 培养学生良好的计算机使用习惯,提高信息素养;3. 增强学生的团队协作意识,学会在小组合作中共同解决问题。
课程性质:本课程属于信息技术学科,以理论联系实践为主,注重培养学生的实际操作能力。
学生特点:六年级学生,具有一定的计算机操作基础,对新鲜事物充满好奇,但注意力集中时间有限。
教学要求:结合学生特点,采用任务驱动法,以实践操作为主线,引导学生掌握多级文件系统的相关知识。
教学过程中,注重激发学生的学习兴趣,提高他们的信息素养和团队协作能力。
通过分解课程目标为具体的学习成果,为教学设计和评估提供依据。
二、教学内容1. 多级文件系统基本概念:介绍文件、文件夹、路径等基本术语,阐述多级文件系统的定义及其作用。
2. 文件系统结构:讲解文件系统的层次结构,包括根目录、子目录、文件等组成部分,并以实例说明多级文件系统的组织方式。
3. 文件操作命令:学习常用的文件操作命令,如创建、删除、复制、剪切、重命名等,以及如何在不同操作系统中使用这些命令。
- 教材章节:第三章“文件与文件夹的操作”4. 文件存储原理:介绍文件的存储方式,包括磁盘空间分配、文件存储位置等,让学生了解文件在计算机中的存储过程。
- 教材章节:第四章“文件的存储与管理”5. 文件管理技巧:教授如何高效地管理文件,包括文件分类、命名规则、文件夹组织等,提高学生的信息管理能力。
- 教材章节:第五章“文件管理技巧”6. 多级文件系统应用案例:分析不同操作系统中的多级文件系统应用,如Windows、Mac、Linux等,了解各自的特点和优缺点。
操作系统课程设计文件系统

操作系统课程设计:文件系统一、引言文件系统是操作系统中的一个重要组成部分,负责管理计算机存储设备上的文件和目录。
一个高效可靠的文件系统对于操作系统和用户来说都至关重要。
在操作系统课程中,设计一个文件系统是一项重要的任务,可以帮助学生深入了解文件系统的原理和实现细节。
本文档将介绍一个简单的文件系统设计,旨在帮助初学者理解文件系统的基本概念和工作原理。
我们将首先介绍文件系统的基本概念,然后讨论文件系统的设计思路和关键组成部分。
最后,我们将讨论如何实现和测试文件系统。
二、文件系统的基本概念文件系统是操作系统提供的一种存储管理机制,用于将文件组织成有层次的结构并提供对文件的访问和管理。
在一个文件系统中,文件被组织成目录(或文件夹)的层次结构,用户可以使用文件路径来访问文件和目录。
文件系统通常提供以下功能: - 文件和目录的创建、删除和重命名 - 文件和目录的读取和写入 - 文件和目录的权限管理 - 文件的共享和保护 - 文件的存储管理三、设计思路在设计文件系统时,需要考虑以下几个关键方面:1. 文件系统的组织结构文件系统可以采用不同的组织结构,常见的包括层次结构、网络结构和日志结构。
在设计文件系统时,需要根据具体需求选择合适的结构。
2. 文件和目录的管理文件系统需要提供对文件和目录的管理功能,包括创建、删除、重命名和移动等操作。
此外,还需要支持文件和目录的权限管理,确保只有授权用户可以进行相应操作。
3. 文件的存储管理文件系统需要负责将文件存储在磁盘或其他存储设备上,并提供高效的读写操作。
存储管理的关键是如何将文件划分为适当大小的块并将它们存储在存储设备上。
4. 文件的共享和保护文件系统需要支持文件的共享和保护。
共享可以使多个用户同时访问同一文件,保护则确保只有合法用户可以进行读写操作。
四、文件系统的关键组成部分一个典型的文件系统通常由以下几个关键组成部分构成:1. 文件控制块(FCB)文件控制块是文件系统中一个重要的数据结构,用于记录文件的相关信息,包括文件名、大小、权限和存储位置等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件系统课程设计指导要将文件存储在磁盘(带)上,必须为之分配相应的存储空间,这就涉及到对文件存储空间的管理;采取何种方式存储,又涉及到文件的物理结构;为了简化对文件的访问和共享,还应设置相应的用户文件描述表及文件表。
1、文件存储空间的管理(1)文件卷的组织UNIX中,把每个磁盘(带)看作是一个文件卷,每个文件卷上可存放一个具有独立目录结构的文件系统。
一个文件卷包含许多物理块,并按块号排列如下图:其中,0#块用于系统引导或空闲,1#为超级块(superblock),存放文件卷的资源管理信息,如整个文件卷的盘块数、磁盘索引结点的盘块数、空闲盘块号栈及指针等。
2#~K#存放磁盘索引结点。
每个索引结点64B,第K+1#~N#存放文件数据。
(2)空闲盘块的组织UNIX采用成组链接法组织空闲盘块。
它将若干个空闲盘块划归一个组,将每组中所有盘块号存放在其前一组的第一个空闲盘块中,而第一组中所有空闲盘块号放入超级块的空闲盘块号栈中。
例:超级块表(3)空闲盘块的分配与回收内核要从文件系统中分配一盘块时,先检查超级块空闲盘块号栈是否已上锁。
是则调用sleep睡眠,否则将超级块中空闲盘块栈栈顶盘块号分配出去。
回收时,若空闲盘块号栈未满,直接将回收盘块编号记入空闲盘块号栈中。
若回收时栈已满,须先将栈中的所有空闲盘块号复制到新回收的盘块中,再将新回收盘块的编号作为新栈的栈底块号进栈。
2、文件的物理结构UNIX未采用传统的三种文件结构形式,而是将文件所占用盘块的盘块号,直接或间接地存放在该文件索引结点的地址项中。
查找文件时,只需找到该文件的索引结点,便可直接或间接的寻址方式获得指定文件的盘块。
过程bmap可将逻辑文件的字节偏移量转换为文件的物理块号。
先将字节偏移量转换为文件逻辑块号及块内偏移量,再把逻辑块号转换为文件的物理块号。
3、用户文件描述符表和文件表的管理每个进程的U区中设置一张用户文件描述符表。
只在首次打开文件时才需给出路径名。
内核在该进程的用户文件描述符表中,分配一空项,取其在该表中的位移量作为文件描述符fd(file discriptor)返还给用户。
当用户再次访问该文件时,只需提供fd,系统根据fd便可找到相应文件的内存索引结点。
fd表项的分配由ufalloc完成。
为了方便用户对文件进行读/写及共享,系统中设置了一张文件表。
每个用户在打开文件时,都要在文件表中获得一表项,其中包含下述内容:f.flag:文件标志,指示该文件打开是为了读或写;f.inode:指向打开文件的内存索引结点指针;f.offset:文件读写指针偏移值;f.count:文件引用计数。
二、目录管理UNIX中,为了加速对文件目录的查找,将文件名和文件说明分开,由文件说明形成一个称为索引结点的数据结构,而相应的文件目录项则只由文件符号名和指向索引结点的指针构成。
对目录的管理应包括的功能有:1、对索引结点的管理每个文件都有一唯一的磁盘索引结点(di_node)。
文件被打开后,还有一个内存索引结点(i_node)。
创建一新文件时,就为之建立一个磁盘索引结点,以将文件的有关信息记入其中,并将用户提供的文件名和磁盘索引结点号一并组成一个新目录项,记入其父目录文件中。
文件被撤消时,系统要回收该文件的磁盘索引结点,从其父目录中删除该目录项。
随着文件的打开与关闭,系统还要为之分配和回收内存索引结点。
(1)磁盘索引结点磁盘索引结点中,包含有关文件的下述一系列信息:文件模式di_mode。
可以是正规文件、目录文件、字符特别文件、块特别文件和管道文件等几种;文件所有者用户标识符di_uid。
指拥有该文件的用户标识符;同组用户标识符di_gid。
与拥有该文件的用户在同一小组的用户标识符;文件长度di_size。
以字节计数的文件大小;文件的联接计数di_nlink。
表明在本文件系统中所有指向该文件的文件名计数;文件的物理地址di_addr。
di_addr地址项共有13项,即di_addr(0) 到di_addr(12),每个地址项占3字节;文件的访问时间di_atime。
指文件最近被进程访问的时间;文件的修改时间di_mtime。
指文件和索引结点最近被进程修改的时间;文件的建立时间di_citime。
(2)内存索引结点文件被打开后,系统为它在内存索引结点表区中建一内存索引结点,以方便用户和系统对文件的访问。
其中,一部分信息是直接从磁盘索引结点拷贝过来的,如i_mode、i_uid、i_gid、i_size、i_addr、i_nlink等,并又增加了如下各信息:索引结点编号i_number。
作为内存索引结点的标识符;状态i_flag。
指示内存索引结点是否已上锁、是否有进程等待此i结点解锁、i结点是否被修改、是否有最近被访问等标志;引用计数i_count。
记录当前有几个进程正在访问此i结点,每当有进程访问此i结点时,对i_count+1,退出-1;设备号i_dev。
文件所属文S件系统的逻辑设备号;前向指针i_forw。
Hash队列的前向指针;后向指针i_back。
Hash队列的后向指针;(3)磁盘索引结点的分配与回收分配过程ialloc:当内核创建一新文件时,要为之分配一空闲磁盘i结点。
如分配成功,便再分配一内存i结点。
其过程如下:检查超级块上锁否。
由于超级块是临界资源,诸进程必须互斥地访问它,故在进入ialloc 后,要先检查它是否已上锁,若是则睡眠等待;检查i结点栈空否。
若i结点栈中已无空闲结点编号,则应从盘中再调入一批i结点号进栈。
若盘中已无空闲i结点,则出错处理,返回;从空闲i结点编号栈中分配一i结点,并对它初始化、填写有关文件的属性;分配内存i结点;将磁盘i结点总数-1,置超级块修改标志,返回。
回收过程ifree:当删除文件时,应回收其所占用的盘块及相应的磁盘i结点。
具体有:检查超级块上锁否。
若是,直接返回,即不把本次回收的i结点号记入空闲i结点编号栈中;检查i结点编号栈满否。
若已满,无法再装入新回收的i结点号,立即返回,若未满,便将回收的i结点编号进栈,并使当前空闲结点数+1;置超级块修改标志,返回。
(4)内存索引结点的分配与回收分配过程iget:虽然iget用在打开文件时为之分配i结点,但由于允许文件被共享,因此,如果一文件已被其他用户打开并有了内存i结点,则此时只需将i结点中的引用计数+1。
如果文件尚未被任何用户(进程)打开,则由iget过程为该文件分配一内存i结点,并调用bread过程将其磁盘i结点的内容拷贝到内存i结点中并进行初始化。
回收过程iput:进程要关闭某文件时,须调用iput过程,先对该文件内存i结点中的引用计数-1。
若结果为0,便回收该内存i结点,再对该文件的磁盘i结点中的连接计数减1,若其结果也为0,便删除此文件,并回收分配给该文件的盘块和磁盘i结点。
2、构造目录make_node文件系统的一个基本功能是实现按名存取,它通过文件目录来实现。
为此须使每一个文件都在文件目录中有一个目录项,通过查找文件目录可找到该文件的目录项和它的索引结点,进而找到文件的物理位置。
对于可供多个用户共享的文件,则可能有多个目录项。
如果要将文件删除,其目录项也应删除。
构造目录先调用ialloc为新建文件分配一磁盘i结点及内存i结点。
若分配失败则返回,分配成功时须先设置内存i结点的初值(含拷贝),调用写目录过程wdir,将用户提供的文件名与分配给该文件的磁盘i结点号一起,构成一新目录项,再将它记入其父目录文件中。
3、检索目录namei用户在第一次访问某文件时,需要使用文件的路径名,系统按路径名去检索文件目录,得到该文件的磁盘索引结点,且返回给用户一个fd。
以后用户便可利用该fd来访问文件,这时系统不需再去检索文件目录。
namei根据用户给出的路径名,从高层到低层顺序地查找各级目录,寻找指定文件的索引结点号。
检索时,对以'/'开头的路径名,须从根目录开始检索,否则,从当前目录开始,并把与之对应的i结点作为工作索引结点,然后用文件路径名中的第一分量名与根或与当前目录文件中的各目录项的文件名,逐一进行比较。
由于一个目录文件可能占用多个盘块,在检索完一个盘块中所有目录项而未找到匹配的文件分量名时,须调用bmap和bread过程,将下一个盘块中的所有目录项读出后,再逐一检索。
若检索完该目录文件的所有盘块而仍未找到,才认为无此文件分量名。
检索方式采用Hash方法。
三、主要文件操作的处理过程1、打开文件open检索目录。
内核调用namei从根目录或从当前目录,沿目录树查找指定的索引结点。
若未找到或该文件不允许存取,则出错处理返回NULL,否则转入下一步;分配内存索引结点。
如果该文件已被其它用户打开,只需对上一步中所找到的i结点引用计数+1,否则应为被打开文件分配一内存i结点,并调用磁盘读过程将磁盘i结点的内容拷贝到内存i结点中,并设置i.count=1;分配文件表项。
为已打开的文件分配一文件表项,使表项中的f.inode 指向内存索引结点;分配用户文件描述表项。
2、创建文件creat核心调用namei,从根目录或当前目录开始,逐级向下查找指定的索引结点。
此时有以下二种情况:重写文件。
namei找到了指定i结点,调用free释放原有文件的磁盘块。
此时内核忽略用户指定的许可权方式和所有者,而保持原有文件的存取权限方式和文件主。
最后打开。
新建。
namei未找到。
调用ialloc,为新创建的文件分配一磁盘索引结点,并将新文件名及所分配到的i结点编号,写入其父目录中,建立一新目录项。
利用与open相同的方式,把新文件打开。
3、关闭文件close根据用户文件描述符fd,从相应的用户文件描述符表项中,获得指向文件表项的指针fp,再对该文件表项中的f.count-1。
四、主要数据结构1、i节点struct inode{ struct inode *i_forw;struct inode *i_back;char i_flag;unsigned int i_ino; /*磁盘i节点标号*/unsigned int i_count; /*引用计数*/unsigned short di_number; /*关联文件数,当为0时,则删除该文件*/unsigned short di_mode; /*存取权限*/unsigned short di_uid; /*磁盘i节点用户id*/unsigned short di_gid; /*磁盘i节点组id*/unsigned int di_addr[NADDR]; /*物理块号*/2、磁盘i节点struct dinode{ unsigned short di_number; /*关联文件数*/unsigned short di_mode; /*存取权限*/unsigned short di_uidunsigned short di_gid;unsigned long di_size; /*文件大小*/unsigned int di_addr[NADDR]; /*物理块号*/}3、目录项结构struct direct{ char d_name[DIRSIZ]; /*目录名*/unsigned int d_ino; /*目录号*/}4、超级块struct filsys{ unsigned short s_isize; /*i节点块块数*/ unsigned long s_fsize; /*数据块块数*/unsigned int s_nfree; /*空闲块块数*/unsigned short s_pfree; /*空闲块指针*/unsigned int s_free[NICFREE]; /*空闲块堆栈*/unsigned int s_ninode; /*空闲i节点数*/unsigned short s_pinode; /*空闲i节点指针*/unsigned int s_inode[NICINOD]; /*空闲i节点数组*/unsigned int s_rinode; /*铭记i节点*/char s_fmod; /*超级块修改标记*/ }5、用户密码struct pwd{ unsigned short p_uid;unsigned short p_gid;char password[PWOSIZ];};6、目录struct dir{ struct direct direct [DIRNUM];int size;};7、查找内存i节点的hash表struct hinode{ struct inode *i_forw;};8、系统打开表struct file{ char f_flag; /*文件操作标志*/ unsigned int f_count; /*引用计数*/struct inode *f_inode; /*指向内存i节点*/unsigned long f_off; /*读/写指针*/};9、用户打开表struct user{ unsigned short u_default_mode;unsigned short u_uid; /*用户标志*/unsigned short u_gid; /*用户组标志*/unsigned short u_ofile[NOFILE]; /*用户打开表*/ };三、主要函数1、i节点内容获取函数iget( )2、i节点内容释放函数iput( )3、目录创建函数mkdir( )4、目录搜索函数namei( )5、磁盘块分配函数balloc( )6、磁盘块释放函数bfree( )7、分配i节点区函数ialloc( )8、释放i节点区函数ifree( )9、搜索当前目录下文件的函数iname( )10、访问控制函数access( )11、显示目录和文件用函数_dir( )12、改变当前目录用函数chdir( )13、打开文件函数open( )14、创建文件函数create( )15、读文件用函数read( )16、写文件用函数write( )17、用户登录函数login( )18、用户退出函数logout( )19、文件系统格式化函数format( )20、进入文件系统函数install( )21、关闭文件系统函数close( )22、退出文件系统函数halt( )23、文件删除函数delete( )四、主程序说明beginstep1 对磁盘进行格式化step2 调用install( ),进入文件系统step3 调用_dir( ),显示当前目录step4 调用login( ),用户注册step5 调用mkdir( )和chdir( )创建目录step6 调用creat( ),创建文件0step7 分配缓冲区step8 写文件0step9 关闭文件0和释放缓冲step10 调用mkdir( )和chdir( )创建子目录step11 调用creat( ),创建文件1step12 分配缓冲区step13 写文件1step14 关闭文件1和释放缓冲step15 调用chdir将当前目录移到上一级step16 调用creat( ) ,创建文件2step17 分配缓冲区step18 调用write( ),写文件2step19 关闭文件2和释放缓冲step20 调用delete( ) ,删除文件0step21 调用creat( ) ,创建文件3step22 为文件3分配缓冲区step23 调用write( ),写文件3step24 关闭文件3和释放缓冲step25 调用open( ),打开文件2step26 为文件2分配缓冲区step27 调用open( ),打开文件2step28 释放缓冲step29 用户退出(logout)step30 关闭(halt)end由上述描述过程可知,该文件系统实际是为用户提供一个解释执行相关命令的环境。