实验六 磁盘文件存取实验(设计性实验)
磁盘管理的实验报告
磁盘管理的实验报告实验报告:磁盘管理一、引言(100字)磁盘是计算机中主要的存储介质之一,磁盘管理是操作系统中的一项重要任务。
本实验旨在通过模拟磁盘管理的相关操作,加深对磁盘管理的理解,并学习实际应用中磁盘管理的策略。
二、实验目的(100字)1.了解磁盘管理的基本原理和相关概念;2.学习磁盘分区的原理及实践;3.理解磁盘调度算法的工作原理;4.掌握常用的磁盘管理策略。
三、实验内容(300字)1.磁盘分区:a.使用磁盘分区工具将物理磁盘划分为若干个分区;b.使用命令查看已分区、格式化后的磁盘分区。
2.磁盘调度算法:a.了解并实现FCFS(先来先服务)、SSTF(最短寻道时间优先)和SCAN(扫描)等磁盘调度算法;b.分别使用模拟程序测试不同算法的性能。
3.磁盘缓存:a.实现一个简单的磁盘缓存管理系统;b.学习并使用命令进行磁盘缓存管理的相关操作。
四、实验步骤(400字)1.磁盘分区:a.打开磁盘分区工具,选择对应磁盘进行分区,设置分区大小和类型;b.格式化已分区的磁盘,创建文件系统;c.使用命令查看分区情况,确认分区操作是否成功。
2.磁盘调度算法:a.阅读并理解给定的FCFS、SSTF和SCAN算法的伪代码;b.根据伪代码实现相应的算法,并进行测试;c.分别使用模拟程序测试不同算法的性能,根据性能结果评估各算法的优劣。
3.磁盘缓存:a.阅读并理解磁盘缓存管理的相关原理和命令;b.实现一个简单的磁盘缓存管理系统,包括缓存页面的替换策略;c.使用命令进行磁盘缓存管理的相关操作,通过测试验证缓存管理系统的正确性。
五、实验结果(150字)1.磁盘分区工具成功将物理磁盘划分为若干个分区,并格式化后创建了文件系统;2.使用命令查看分区情况,确认分区操作成功;3.实现了FCFS、SSTF和SCAN算法,并成功模拟了它们的运行过程;4.使用模拟程序测试了不同算法的性能,分析并比较了各算法的优劣;5.成功实现了一个简单的磁盘缓存管理系统,并通过测试验证了其正确性。
管理磁盘存储实训报告
Windows网络操作系统管理课程实训报告实训名称:管理磁盘存储实训h-OX»|I G,T fl.SQ-QOflifidJXlB gw QJCT2.使用服务器管理器,在第一个磁盘上创建一个主分区号为X;文件系统为ReFS;卷标为Data。
4.使用磁盘管理,将卷X ,扩展到4096 MB 。
文世闺»^AJ« = M 品沏林0 31目USr X 01 BE工■可闰市! 凌串 |胃行蓄差W7S一三二二・ 二回-0« i» 网 -rue 花+周干 置羊 虫 *唯 S3:SiNTK挈工 而陪艇NJF5状石艮F L-iUiBUJ(-4XHR1F L 状哼吃21© Me 200 MB 里他G& 47.W 驰 杂 XGB 4.30 GB 加 MB4&1MBtoo % 79 U97% 年了 M.叱i 於工■55.M GB 呢C-sta -X: 5.00 GB 3汽54J87 G :B■丑士2设ttA (曲凤敦胧 G6 504 M B NIF S 聚仁UlSff■ * 4 ■ _ -.■二■ F 3堂5M9 GB iWffi■吐[之任里年. |概t旨i 、Eax» miME己叩印用1 】g#3 理事..不%48 仃寤融 79%C-dLa Dtl降百庆时: 一11£0日i^bM& 至**由川寿四土费NTFSWi M s4MMRq 『,ww gi ; moo ME NTFSH.ROfl装万良牙5.将C:\Windows\System32\imgageres.dll复制到卷Z,再复制出9个副本文件。
a. 茎事至百G 5号一■楸摩田 3 \:青=*。
诏(7:'停表3 If ML*也博时可■ S3mg—时=ru.dl25,仃.弓。
15:: 2宜阳等寸温力Kfi・Egag白七-副豆.dll2C 寸:0口15:1.5度用磐F属OKE♦卜科E!X.L3J dll15455.!wr©*tj p fl IIICB* 1力呜d拒rl - E S® 3 dll20"仃巧1。
磁盘管理实验报告心得
磁盘管理实验报告心得引言磁盘是计算机中重要的硬件设备,负责存储和管理大量的数据。
磁盘管理是操作系统中非常重要的一部分,对系统的性能和稳定性有着直接的影响。
在这次磁盘管理实验中,我深入了解了磁盘的内部组织结构以及常见的磁盘管理算法,并通过实验学习了磁盘的分区、格式化、文件读写等操作。
这次实验让我对磁盘管理有了更深入的理解,并且增强了我在操作系统方面的实践能力。
实验内容这次实验主要包括以下几个方面的内容:1. 磁盘的组织结构和工作原理:了解磁盘的物理结构,包括道、磁头和扇区的概念,以及磁盘读写的基本原理。
2. 分区与格式化:了解磁盘分区和格式化的概念和操作方法,并通过实验进行磁盘分区和格式化的操作。
3. 文件读写:学习文件的逻辑结构和文件读写的基本原理,通过实验实现一些简单的文件读写操作。
4. 空闲空间管理:了解磁盘上空闲空间的管理方法,包括位图法和链表法,并通过实验实现了位图法的空闲空间管理算法。
实验过程在实验过程中,我首先通过阅读相关资料了解了磁盘的组织结构和工作原理。
磁盘是由多个碟片组成的,每个碟片分为若干个圆环状的道,每个道又被划分为若干个弧段,也就是扇区。
每个碟片上还有一个或多个磁头,可以在碟片上进行磁道和扇区的读写操作。
接着,我进行了磁盘的分区和格式化操作。
分区是将一个物理磁盘划分为多个逻辑区域,每个逻辑区域可以独立管理。
格式化是对分区进行初始化操作,以便后续的文件读写等操作。
通过实验,我成功地对磁盘进行了分区和格式化,并对分区和格式化的过程有了更深入的了解。
在文件读写方面,我学习了文件的逻辑结构和文件读写的基本原理。
文件是操作系统中的基本单位,有顺序文件和随机文件两种不同的逻辑结构。
顺序文件的读写是按照文件中记录的顺序进行的,而随机文件的读写则是按照文件中记录的位置进行的。
通过实验,我实现了一些简单的文件读写操作,并加深了对文件读写原理的理解。
最后,我学习了磁盘空闲空间的管理算法。
磁盘上有大量的空闲空间,如何高效地管理这些空闲空间对系统的性能有着重要的影响。
磁盘管理 实验报告
磁盘管理实验报告磁盘管理实验报告概述:磁盘管理是计算机操作系统中的重要组成部分,它负责管理计算机系统中的磁盘存储空间,确保数据的高效存取和安全性。
本实验旨在通过实际操作和测试,探究磁盘管理的原理和技术,并评估其对系统性能的影响。
实验目标:1. 理解磁盘管理的基本概念和原理。
2. 掌握磁盘分区和文件系统的创建与管理方法。
3. 了解磁盘调度算法的工作原理和性能特点。
4. 分析磁盘缓存和磁盘阵列技术对系统性能的影响。
实验环境:本次实验使用了一台配置较为普通的计算机,搭载了Windows 10操作系统和500GB机械硬盘。
实验步骤和结果:1. 磁盘分区和文件系统的创建与管理:在Windows 10操作系统中,我们使用了磁盘管理工具对硬盘进行了分区和格式化操作。
通过分区,我们将硬盘划分为多个逻辑驱动器,以便更好地管理和组织数据。
而文件系统的格式化则是为了在磁盘上创建文件系统,并对其进行初始化。
我们选择了NTFS文件系统,因为它支持更大的文件大小和更高的性能。
经过实验操作,我们成功地创建了多个分区,并将它们格式化为NTFS文件系统。
2. 磁盘调度算法的工作原理和性能特点:磁盘调度算法是为了优化磁盘访问的顺序和效率而设计的。
在本次实验中,我们选择了最常用的磁盘调度算法——SCAN算法,并通过实验测试其性能。
我们使用了一个模拟的磁盘访问序列,并记录了SCAN算法下的平均寻道时间和平均旋转延迟时间。
实验结果表明,SCAN算法在磁盘访问效率方面表现出色,能够较好地平衡磁盘访问的延迟和吞吐量。
3. 磁盘缓存和磁盘阵列技术对系统性能的影响:磁盘缓存和磁盘阵列技术是提高磁盘访问性能的两种常见方法。
磁盘缓存利用高速缓存存储器来暂存磁盘数据,以减少对磁盘的实际访问次数,从而提高系统的响应速度。
而磁盘阵列则是通过将多个磁盘组合成一个逻辑单元,实现数据的并行读写,从而提高磁盘的吞吐量。
通过实验测试,我们对比了启用和禁用磁盘缓存以及使用单个磁盘和磁盘阵列的情况下的磁盘访问性能。
磁盘管理实验报告
磁盘管理实验报告磁盘管理实验报告一、引言磁盘管理是计算机操作系统中的重要组成部分,它负责管理磁盘上的文件存储和访问。
在本次实验中,我们将通过模拟磁盘管理的过程,探索不同的磁盘调度算法对系统性能的影响。
本报告将介绍实验的背景和目的,并详细讨论实验过程和结果。
二、实验背景和目的磁盘是计算机中常用的存储设备之一,它将数据以磁场的形式存储在磁道上。
磁盘的读写速度较慢,而且在多个进程同时访问磁盘时容易出现冲突。
因此,磁盘管理的优化对于提高系统的性能至关重要。
本次实验的目的是通过模拟不同的磁盘调度算法,比较它们在不同场景下的性能差异。
我们将使用C语言编写模拟程序,通过生成随机的磁盘请求序列,并使用不同的磁盘调度算法进行处理。
通过比较不同算法的平均寻道时间、平均旋转延迟和平均传输时间等指标,评估算法的优劣。
三、实验过程实验的第一步是编写模拟程序,我们使用C语言实现了一个简单的磁盘调度模拟器。
该模拟器可以生成指定数量的磁盘请求,并使用不同的磁盘调度算法进行处理。
我们实现了以下几种磁盘调度算法:1. 先来先服务(FCFS):按照请求的到达顺序进行处理。
2. 最短寻道时间优先(SSTF):选择离当前磁道最近的请求进行处理。
3. 扫描算法(SCAN):按照一个方向进行扫描,直到最边缘,然后改变方向继4. 循环扫描算法(C-SCAN):类似于SCAN算法,但是当到达最边缘时,直接返回到最开始的磁道。
5. 电梯算法(LOOK):类似于SCAN算法,但是当到达最边缘时,改变方向继续扫描。
在模拟程序中,我们使用随机数生成器生成了1000个磁盘请求,并分别使用以上算法进行处理。
在每次处理完一个请求后,我们记录下当前的磁道位置,并计算出寻道时间、旋转延迟和传输时间。
最后,我们计算出每种算法的平均寻道时间、平均旋转延迟和平均传输时间,并进行对比分析。
四、实验结果和分析根据实验结果,我们得到了每种算法的平均寻道时间、平均旋转延迟和平均传输时间。
磁盘文件链接存储
操作系统课程设计报告书—————磁盘文件链接存储班级:学号:姓名:课题名:磁盘文件链接存储指导老师:徐向英实验时间:2010年6月28日至7月1日目录一、课程设计目的-----------------------------------1三、课题内容--------------------------------------1四、设计思路--------------------------------------11、基本设计思想-------------------------------------12、开发工具-----------------------------------------13、系统模块图---------------------------------------24、数据表-------------------------------------------2四、功能介绍---------------------------------------31、用户登录-----------------------------------------32、文件一览-----------------------------------------33、创建文件-----------------------------------------34、读出文件-----------------------------------------45、写入文件-----------------------------------------4五、源代码----------------------------------------5六、心得与体会------------------------------------14一、课程设计目的操作系统课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握操作系统的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。
磁盘调度实验报告
操作系统实验报告磁盘调度实验六:磁盘调度算法一.实验目的复习模拟实现一种磁盘调度算法,进一步加深对磁盘调度效率的理解。
二.实验属性该实验为设计性实验。
三.实验仪器设备及器材普通PC386以上微机四.实验要求本实验要求2学时完成。
本实验要求完成如下任务:(1)建立相关的数据结构,作业控制块、已分配分区及未分配分区(2)实现一个分区分配算法,如最先适应分配算法、最优或最坏适应分配算法(3)实现一个分区回收算法(4)给定一批作业/进程,选择一个分配或回收算法,实现分区存储的模拟管理实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。
实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。
五 .主要算法分析各个算法分析1.先来先服务算法(FCFS)先来先服务(FCFS)调度:按先来后到次序服务,未作优化。
最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。
例如,如果现在读写磁头正在50号柱面上执行输出操作,而等待访问者依次要访问的柱面为130、199、32、159、15、148、61、99,那么,当50号柱面上的操作结束后,移动臂将按请求的先后次序先移到130号柱面,最后到达99号柱面。
采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。
先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。
2.最短寻道时间优先算法(SSTF)最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问者到来的先后次序。
现在仍利用同一个例子来讨论,现在当50号柱面的操作结束后,应该先处理61号柱面的请求,然后到达32号柱面执行操作,随后处理15号柱面请求,后继操作的次序应该是99、130、148、159、199。
文件存储实验报告
实验目的:通过本次实验,了解文件存储的基本原理,掌握文件存储系统的组成和功能,熟悉不同文件存储方式的优缺点,并能够对文件存储系统进行性能测试和优化。
实验时间:2023年3月15日实验地点:计算机实验室实验器材:1. 计算机(配备Windows操作系统)2. 文件存储设备(如硬盘、固态硬盘、U盘等)3. 文件存储管理软件(如Windows资源管理器、Disk Management等)4. 文件压缩软件(如WinRAR等)实验内容:一、文件存储系统组成及功能1. 文件存储系统组成:(1)硬件:硬盘、固态硬盘、U盘等存储设备;(2)软件:操作系统中的文件系统、文件存储管理软件等。
2. 文件存储系统功能:(1)存储:将文件数据存储在存储设备上;(2)管理:对存储在设备上的文件进行分类、排序、检索、备份等操作;(3)保护:防止文件数据丢失、损坏,确保数据安全;(4)优化:提高文件存储系统的性能。
二、文件存储方式1. 磁盘存储方式:(1)优点:容量大、读写速度快、易于扩展;(2)缺点:存储速度受磁盘转速、寻道时间等因素影响。
2. 固态硬盘存储方式:(1)优点:读写速度快、无机械磨损、功耗低、体积小;(2)缺点:容量相对较小、价格较高。
3. U盘存储方式:(1)优点:携带方便、容量适中、易于扩展;(2)缺点:读写速度较慢、容量有限。
三、文件存储性能测试1. 测试工具:使用CrystalDiskMark软件进行测试。
2. 测试方法:(1)将测试文件复制到硬盘、固态硬盘、U盘中;(2)使用CrystalDiskMark软件分别对三种存储方式进行读写速度测试;(3)记录测试结果。
3. 测试结果分析:(1)硬盘:读写速度约为100MB/s;(2)固态硬盘:读写速度约为500MB/s;(3)U盘:读写速度约为20MB/s。
四、文件存储优化1. 合理分配磁盘空间:根据文件类型和用途,合理分配磁盘空间,提高磁盘利用率。
2. 定期整理磁盘:删除无用的文件,清理磁盘碎片,提高文件访问速度。
《操作系统》实验报告四磁盘文件操作
《操作系统》实验报告四磁盘文件操作实验目的:1.学会使用文件系统的相关API进行磁盘文件的创建、读写和删除。
2.加深对文件系统组织结构的理解。
实验内容:1.创建一个磁盘文件,并向文件中写入一定内容。
2.在磁盘文件中读取数据,并进行输出。
3.删除磁盘文件。
实验步骤:实验步骤一:创建磁盘文件在实验前,我们首先要分配一块磁盘空间来存放文件。
在操作系统中,通常会有一个文件系统来管理磁盘上的数据。
我们可以通过文件系统的相关API来创建磁盘文件。
在实验开始前,调用文件系统的API函数create(file_name)创建一个新文件,并将其命名为file_name。
实验步骤二:向磁盘文件中写入数据在创建磁盘文件之后,我们可以通过文件系统的write(file_name, data)函数来向文件中写入数据。
其中,file_name是要写入的文件名,data是要写入的内容。
实验步骤三:从磁盘文件中读取数据并输出在文件写入操作之后,我们可以通过文件系统的read(file_name)函数来读取文件中的数据,并进行输出。
其中,file_name是要读取的文件名。
实验步骤四:删除磁盘文件在实验结束后,我们可以使用文件系统的delete(file_name)函数来删除磁盘文件。
其中,file_name是要删除的文件名。
实验结果:经过以上实验步骤操作后,我们可以观察到以下结果:1. 在实验步骤一中,磁盘空间上创建了一个新文件,并赋予了文件名file_name。
2.在实验步骤二中,我们向磁盘文件中写入了一定的数据。
3.在实验步骤三中,我们成功地从磁盘文件中读取了数据,并进行了输出。
4.在实验步骤四中,我们成功地删除了磁盘文件。
实验心得:通过这次实验,我学会了如何使用文件系统的相关API进行磁盘文件的创建、读写和删除操作。
实验中,我们了解到了文件系统的组织结构,以及如何通过API函数来对磁盘文件进行操作。
在实验过程中,我深入理解了文件系统是如何将文件组织存储在磁盘上的,从而更好地理解了操作系统的内部机制。
操作系统实习报告(磁盘文件操作)
大学操作系统课程综合实践题目:磁盘文件操作班级:姓名:学号:指导教师:2011年 12 月 23日磁盘文件操作摘要:为了正确地实现文件的存取,文件系统设计了一组与存取文件有关的功能模块,用户可以用“访问指令”调用这些功能模块,以实现文件的存取要求。
我们把文件系统设计的这一组功能模块称为“文件操作“,实验就是要模拟实现一些文件操作。
文件操作不是独立的,它和文件系统的其他部分密切相关,若要实现文件操作就离不开文件的目录结构、文件的组织结构和磁盘空间的管理。
因此,这个实习虽然是文件操作的模拟实现,但还是必须模拟一部分文件的组织结构、目录结构和磁盘空间管理的实现。
关键字:磁盘、文件、目录、分配表。
一、实验内容:设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现;1.支持多级目录结构,支持文件的绝对路径;2.文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;3.采用文件分配表;4.实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件(追加方式)、关闭文件、改变文件属性。
最后编写主函数对所做工作进行测试。
二、实验目的:1、文件的操作。
2、文件的逻辑结构和物理结构3、磁盘空间的管理4、磁盘目录结构三、实验环境:Windows XP、VC++四、程序运行结果(详图):程序运行的主界面:用户运行命令7-建立目录用户运行命令1-建立文件:显示目录内容:打开文件:写文件:关闭文件:再次显示目录内容:以上为程序的运行的部分截图。
五、程序清单:#define false 0#define true 1#include "stdio.h"//#include <fcntl>#include<string.h>//#param warning(disable:4996)FILE*x1,*x2;typedef struct{char name[3]; /*文件或目录名*/char type[2]; /*文件类型名*/char attribute; /*属性*/char address; /*文件或目录的起始盘块号*/char length; /*文件长度,以盘块为单位*/}content; /*目录结构*/#define n 5 /*模拟实验中系统允许打开文件的最大数量*/ typedef struct{int dnum; /*磁盘盘块号*/int bnum; /*盘块内第几项*/}pointer; /*已打开文件表中读写指针的结构*/typedef structchar name[20]; /*文件绝对路径名*/char attribute;/*文件的属性,用1个字节表示,所以用了char类型*/ int number; /*文件起始盘块号*/int length; /*文件长度,文件占用的字节数*/int flag; /*操作类型,用"0"表示以读操作方式开文件,用"1"表示写操作方式打开文件*/pointer read; /*读文件的位置,文件刚打开时dnum为文件起始盘块号,bnum 为"0"*/pointer write; /*写文件的位置,文件建立时dnum为文件起始盘块号,bnum 为"0",打开时为文件末尾*/}OFILE; /*已打开文件表项类型定义*/struct{OFILE file[n]; /*已打开文件表*/int length; /*已打开文件表中登记的文件数量*/}openfile; /*已打开文件表定义*/char buffer1[64];/*模拟缓冲1*/content buffer2[8];/*模拟缓冲2*/FILE *fc; /*模拟磁盘的文件指针*/void copen(OFILE *x1,OFILE *x2)//OFILE *x1,*x2;{strcpy(x1->name,x2->name);x1->attribute=x2->attribute;x1->number=x2->number;x1->length=x2->length;x1->flag=x2->flag;x1->read.dnum=x2->read.dnum;x1->read.bnum=x2->read.bnum;x1->write.dnum=x2->write.dnum;x1->write.bnum=x2->write.bnum;}int sopen(char *name)/*在已打开文件表中查找文件name*/ //P172//char *name;{int i;i=0;while(i<openfile.length&&strcmp(openfile.file[i].name,name)!=0)/*依次查找已打开文件表*/i++;if(i>=openfile.length)return(-1);return(i);}/*查找sopen函数结束*/void dopen(char *name)/*在已打开文件表中删除文件name*///char *name;{int i;i=sopen(name);if(i==-1)printf("文件未打开\n");else{copen(&openfile.file[i],&openfile.file[openfile.length-1]);openfile.length--;}}/*删除函数结束*/int iopen(content *x)/*在已打开文件表中插入文件name*///content *x;{int i;i=sopen(x->name);if(i!=-1){printf("文件已经打开\n");return(false);}else if(openfile.length==n){printf("已打开文件表已满\n");return(false);}else{//copen(&openfile.file[openfile.length],x);openfile.length++;return(true);}}/*填写已打开文件表函数结束*/int allocate( )/*分配一个磁盘块,返回块号*/{int i;fseek(fc,0,SEEK_SET); /*将模拟磁盘的文件指针移至模拟磁盘FAT表*/fread(buffer1,64L,1,fc);/*将FAT表中第一个磁盘块读入模拟缓冲buffer1中*/for(i=3;i<63;i++)if(buffer1[i]==0){ /*FAT中的第i项为0,分配第i块磁盘块,修改FAT表,并且写回磁盘*/buffer1[i]=255; //P173fseek(fc,0,SEEK_SET);fwrite (buffer1,64L,1,fc);return(i); /*返回磁盘号*/}fread(buffer1,64L,1,fc);/*将FAT表中第二个磁盘块读入模拟缓冲buffer1中*/for(i=0;i<63;i++)if(buffer1[i]==0){/*FAT中的第i项为0,分配第i+64块磁盘块,修改FAT表,并且写回磁盘*/buffer1[i]=255;fseek(fc,-64L,SEEK_CUR);fwrite(buffer1,64L,1,fc);return(i+64); /*返回磁盘号*/}printf("已经没有磁盘空间\n");return(false);}/*分配磁盘块函数结束*/int read_file(char *name,int length)/*读文件函数,文件路径名name,读取长度length*///char *name;//int length;{int i,t;//char ch;if((i=sopen(name))==-1){printf("文件没有打开或不存在\n");return (false);}if(openfile.file[i].flag==1){printf("文件以写方式打开,不能读\n");return 0;}t=0;fseek(fc,openfile.file[i].read.dnum*64L,SEEK_SET);fread(buffer1,64,1,fc);while(t<length&&buffer1[openfile.file[i].read.bnum]!='#'){putchar(buffer1[openfile.file[i].read.bnum]);/*读出一个字符(这里是在屏幕上显示)*/if((t+1)%64==0)putchar('\n');/*修改读指针*/openfile.file[i].read.bnum++;if(openfile.file[i].read.bnum>=64)/*一块读完,读取下一个盘块*/{fseek(fc,openfile.file[i].read.dnum/64*64, SEEK_SET);fread(buffer1,64,1,fc);openfile.file[i].read.dnum=buffer1[openfile.file[i].read.dnum%64];/*修改读指针*/openfile.file[i].read.bnum=0;fseek(fc,openfile.file[i].read.dnum*64L,SEEK_SET);fread(buffer1,64,1,fc);/*读取下一个*/}t++;}}/*读函数结束*/int write_file(char *name,char *buff,int length) //P174/*写文件函数*///char *name;/*文件路径名*///char *buff;/*存放准备写入磁盘的内容*///int length;/*写入内容的长度*/{int i,t,dd;if((i=sopen(name))==-1)/*文件不存在,无法写*/{printf("文件没有打开或不存在\n");return (false);}if(openfile.file[i].flag==0){printf("文件以读方式打开,不能写\n");return (false);}t=0;fseek(fc,openfile.file[i].write.dnum*64L, SEEK_SET);fread(buffer1,64,1,fc);while(t<length){buffer1[openfile.file[i].write.bnum]=buff[t];openfile.file[i].write.bnum++;openfile.file[i].length++;if(openfile.file[i].write.bnum>=64){fseek(fc, openfile.file[i].write.dnum*64L, SEEK_SET);fwrite(buffer1,64,1,fc);/*一块写完,写回磁盘*/if((dd=allocate())==false){openfile.file[i].write.bnum--;openfile.file[i].length--;printf("无磁盘空间,部分信息丢失,写失败\n");return (false);}/*if*/fseek(fc,openfile.file[i].write.dnum/64*64L, SEEK_SET);fread(buffer1,64,1,fc);buffer1[openfile.file[i].write.dnum%64]=dd;fseek(fc,openfile.file[i].write.dnum/64*64L, SEEK_SET);fwrite(buffer1,64,1,fc);openfile.file[i].write.dnum=dd;openfile.file[i].write.bnum=0;}/*if*/t++;}/*while*/fseek(fc, openfile.file[i].write.dnum*64L, SEEK_SET);fwrite(buffer1,64,1,fc);/*一块写完,写回磁盘*/}/*写函数结束*/int search(char *name,int flag,int *dnum,int *bnum)/*查找路径名为name的文件或目录,返回该目录的起始盘块号 *///char *name;//int flag; /*flag=8表示查找目录,否则为文件*///int *dnum,*bnum;/*返回找到文件或目录的目录项的位置:盘块dnum中第bnum项*/{int k,i,s,j,last=0;char pna[3],type[2];if((strcmp(name,"")==0)||(strcmp(name,"/")==0))/*根目录*/ //P175return(2);k=0;if(name[0]=='/')k=1;i=2; /*i=根目录的起始盘块号*/while(last!=1){/*pna=从name中分离出"/"后一个目录名(或文件名)*/for(s=0;name[k]!='.'&&name[k]!='/'&&s<3&&name[k]!='\0';s++,k++)pna[s]=name[k];for(;s<3;s++)/*用空格补全名字长度*/pna[s]=' ';while(name[k]!='.'&&name[k]!='\0'&&name[k]!='/')/*除去多余字符*/k++;type[0]=type[1]=' ';if(name[k]=='.')/*取文件类型名type*/if(flag==8){printf("目录不应该有有类型名,查找失败\n");return(false);}else{/*文件遇到类型名认为结束,后面的字符作废*/k++;if(name[k]!='\0')type[0]=name[k];k++;if(name[k]!='\0')type[1]=name[k];if(name[k]!='\0'&&name[k+1]!='\0'){printf("文件名错误\n");return(false);}last=1;}elseif(name[k]!='\0')k++;if(name[k]=='\0')last=1;/*查找目录且名字等于pna的目录项*/fseek(fc,i*64L,SEEK_SET);fread(buffer2,64L,1,fc);j=0;if(last==1&&flag!=8)while(j<8&&!(buffer2[j].attribute!=8&&buffer2[j].name[0]==pna[0]& &buffer2[j].name[1]==pna[1]&&buffer2[j].name[2]==pna[2]&&buffer2[j].type[0]==type[0]&&buffer2[j].type[1]==type[1]))j++;elsewhile(j<8&&!(buffer2[j].attribute==8&&buffer2[j].name[0]==pna[0]&&buffer2[j].name[1]==pna[1]&&buffer2[j].name[2]==pna[2]))j++;if(j<8)/*找到该目录或文件*/if(last==1)/*查找结束*/{*dnum=i;*bnum=j;return(buffer2[j].address);} //P176else/*查找还未结束*/i=buffer2[j].address;/*读取下一个盘块*/elsereturn(false);}/*while 查找结束*/}/*search()结束*/int create_file(char *name,int attribute)/*建立文件函数,路径名name,文件属性attribute*///char *name;//int attribute;{int i,j,k,s,d,t,b,dd,dn,bn;char dname[3],tname[2],pathname[20];OFILE x;if(attribute%2==1){printf("只读文件,无法写,不能建立\n");return(false);}if(openfile.length==n){printf("已打开表已满,不能建立\n");return(false);}/* 将name分成两部分,目录路径pathname和目录名dname*/for(j=0;name[j]!='\0';j++)/*查找最后一个“/”*/if(name[j]=='/')s=j;/*分离目录路径*/for(j=0;j<s;j++)pathname[j]=name[j];pathname[j]='\0';/*分离文件名*/for(k=0,j=s+1;name[j]!='\0'&&k<3&&name[j]!='.';j++,k++) dname[k]=name[j];if(k==0){printf("错误文件名或目录名\n");return(false);}for(;k<3;k++)dname[k]=' ';k=0;if(name[j++]=='.')/*分离类型名*/{for(;name[j]!='\0'&&k<2&&name[j]!='.';j++,k++)tname[k]=name[j];}for(;k<2;k++)tname[k]=' ';if((d=search(pathname,8,&dn,&bn))==false)/*找到目录路径,返回该目录所在块号dn和项数bn*/{printf("目录不存在,不能建立");return(false);}/*确认该目录不存在的同时查找空目录项*/ b=-1; //P177fseek(fc,d*64L,SEEK_SET);fread(buffer2,64L,1,fc); /*读出dnum盘块的内容*/for(t=0;t<8;t++){if(buffer2[t].name[0]==dname[0]&&buffer2[t].name[1]==dname[1]&&buffer2[t].name[2]==dname[2]&&buffer2[t].type[0]==tname[0]&&buffer2[t].type[1]==tname[1]){/*找到名字dname的文件,建立失败*/printf("文件已经存在,不能建立\n");return(false);}if(buffer2[t].name[0]=='$'&&b==-1)b=t;}/*for*/if(b==-1)/*没有空目录项,建立失败*/{printf("目录无空间\n");return(false);}if((dd=allocate( ))==false)/*分配给建立目录的磁盘盘块dd*/{printf("建立文件失败\n");return(false);}/*填写目录项*/for(i=0;i<3;i++)buffer2[b].name[i]=dname[i];for(i=0;i<2;i++)buffer2[b].type[i]=tname[i];buffer2[b].attribute=attribute;buffer2[b].address=dd;buffer2[b].length=0;fseek(fc,d*64L,SEEK_SET);fwrite(buffer2,64L,1,fc);/*填写已打开文件表*/strcpy(,name);x.attribute=attribute;x.number=dd;x.length=0;x.flag=1;x.read.dnum=x.write.dnum=dd;x.read.bnum=x.write.bnum=0;//iopen(&x);}/*建立文件结束*/int open_file(char *name,int attribute)/*打开文件函数*///char *name;//int attribute;{OFILE x;int dnum,bnum,last,i,d;if((d=search(name,4,&dnum,&bnum))==false) {printf("文件不存在,打开操作失败\n");return(false);}fseek(fc,dnum*64L,SEEK_SET);/*读出对应目录项*/ //P178fread(buffer2,64,1,fc);if((buffer2[bnum].attribute%2==1)&& attribute==1)/*对只读文件要求写*/{printf("文件不能写,打开失败");return(false);}strcpy(,name);x.attribute=buffer2[bnum].attribute;x.number=buffer2[bnum].address;x.read.dnum=x.write.dnum=buffer2[bnum].address;x.read.bnum=x.write.bnum=0;x.flag=attribute;if(attribute==1){while(d!='\xff')/*寻找文件末尾*/{fseek(fc, d/64*64L, SEEK_SET);fread(buffer1,64L,1,fc);/*读出dnum项所在FAT*/last=d;d=buffer1[d%64];/*读出dnum块下一块内容赋给dnum*/}/*while*/x.write.dnum=last;/*填写写指针*/fseek(fc, last*64L, SEEK_SET);fread(buffer1,64L,1,fc);for(i=0;i<64&&buffer1[i]!='#';i++);x.write.bnum=i;x.length=(buffer2[bnum].length-1)*64+i;}iopen(&x);/*填写已打开文件表*/}int close_file(char *name)/*关闭文件函数*///char *name;{int i,dnum,bnum;if((i=sopen(name))==-1){printf("打开的文件中没有该文件,关闭失败\n");return(false);}if(openfile.file[i].flag==1)/*写文件的追加文件结束符*/{fseek(fc,openfile.file[i].write.dnum*64L, SEEK_SET);fread(buffer1,64,1,fc);buffer1[openfile.file[i].write.bnum]='#';fseek(fc,openfile.file[i].write.dnum*64L, SEEK_SET);fwrite(buffer1,64,1,fc);fputc('#',fc);search(name,4,&dnum,&bnum);/*查找该文件目录位置*//*修改目录中的文件长度*/fseek(fc,dnum*64L, SEEK_SET);fread(buffer2,64,1,fc);buffer2[bnum].length=openfile.file[i].length/64+1;fseek(fc, dnum*64L, SEEK_SET);fwrite(buffer2,64,1,fc);}/*在已打开文件表中删除该文件的登记项*/if(openfile.length>1) //P179copen(&openfile.file[i],&openfile.file[openfile.length-1]);openfile.length--;}int Delete(char *name)/*删除文件*///char *name;{int dnum,bnum,t;if((t=search(name,4,&dnum,&bnum))==false){printf("文件不存在\n");return(false);}if(sopen(name)!=-1){printf("该文件打开,不能删除\n");return(false);}fseek(fc,dnum*64L, SEEK_SET);fread(buffer2,64,1,fc);buffer2[bnum].name[0]='$';/*将该文件的目录置成空目录*/ fseek(fc,dnum*64L, SEEK_SET);fwrite(buffer2,64,1,fc);while(t!='\xff')/*通过FAT查找每一个盘块号,并依次删除*/ {dnum=t;fseek(fc, dnum/64*64, SEEK_SET);fread(buffer1,64,1,fc);t=buffer1[dnum%64];buffer1[dnum%64]=0;fseek(fc, dnum/64*64L, SEEK_SET);fwrite(buffer1,64,1,fc);}}/*文件删除结束*/int md(char *name)/*建立目录函数,目录路径名name*///char *name;{int i,j,k,s,d,t,b,dd,dn,bn;char dname[3],pathname[20];i=2;/* i=根目录的起始盘块号*//* 将name分成两部分,目录路径pathname和目录名dname*/for(j=0;name[j]!='\0';j++)/*查找最后一个“/”*/if(name[j]=='/')s=j;/*分离目录路径*/for(j=0;j<s;j++)pathname[j]=name[j];pathname[j]='\0';/*分离目录名*/for(k=0,j=s+1;name[j]!='\0'&&k<3&&name[j]!='.';j++,k++)dname[k]=name[j];if(k==0){printf("错误文件名或目录名\n");return(false); //P180}for(;k<3;k++)dname[k]=' ';if((d=search(pathname,8,&dn,&bn))==false)/*找到目录路径*/{printf("目录不存在,不能建立\n");return(false);}b=-1;/*确认该目录不存在的同时查找空目录项*/fseek(fc,d*64L,SEEK_SET);fread(buffer2,64L,1,fc);/*读出d盘块的内容*/for(t=0;t<8;t++){if(buffer2[t].name[0]==dname[0]&&buffer2[t].name[1]==dname[1]&&buffer2[t].name[2]==dname[2]&&buffer2[t].attribute==8){/*找到名字dname的目录,建立失败*/printf("目录已经存在,不能建立\n");return(false);}if(buffer2[t].name[0]=='$'&&b==-1)b=t;}/*for*/if(b==-1)/*没有空目录项,不能建立*/{printf("目录无空间\n");return(false);}if((dd=allocate( ))==false)/*分配给建立目录的磁盘盘块dd*/{printf("目录不能建立\n");return(false);}/*填写目录项*/for(i=0;i<3;i++)buffer2[b].name[i]=dname[i];buffer2[b].type[0]=buffer2[b].type[1]=' ';buffer2[b].attribute=8;buffer2[b].address=dd;buffer2[b].length=0;fseek(fc,d*64L,SEEK_SET);fwrite(buffer2,64L,1,fc);/*分给新建目录的盘块初始化*/for(t=0;t<8;t++)buffer2[t].name[0]='$';fseek(fc, dd*64L, SEEK_SET);fwrite(buffer2,64L,1,fc);}/*建立目录结束*/int dir(char *name)/*显示目录内容*///char *name;{int t,dnum,dn,bn;if((dnum=search(name,8,&dn,&bn))==false)/*找到目录路径,返回该目录所在块号dn和盘块内项数bn*/{printf("目录不存在\n");return(false);}printf("名称扩展名起始盘块长度\n"); //P181/*显示目录内容*/fseek(fc,dnum*64L, SEEK_SET);fread(buffer2,64L,1,fc);for(t=0;t<8;t++)/*显示该盘块中目录项的内容*/if(buffer2[t].name[0]!='$')printf(" %c%c%c %c%c %4d%7d\n", buffer2[t].name[0],buffer2[t].name[1],buffer2[t].name[2], buffer2[t].type[0],buffer2[t].type[1],buffer2[t].address, buffer2[t].length);}/*显示目录函数结束*/char typefile(char *name)/*显示文件内容*///char *name;{int dnum,dn,bn,t;if((dnum=search(name,1,&dn,&bn))==false){printf("文件不存在\n");return(false);}if(sopen(name)!=-1){printf("该文件打开,不能显示\n");return(false);}while(dnum!='\xff'){fseek(fc,dnum*64L,SEEK_SET);fread(buffer1,64,1,fc);/*读一个盘块到缓冲*/for(t=0;t<64&&buffer1[t]!='#';t++)/*显示缓冲中内容*/putchar(buffer1[t]);printf("\n");/*获得下一个盘块*/fseek(fc, dnum/64*64L, SEEK_SET);fread(buffer1,64,1,fc);dnum=buffer1[dnum%64];}}/*显示文件函数结束*/int change(char *name,int attribute)/*改变文件name的属性为attribute*///char *name;//int attribute;{int dnum,bnum;if(search(name,1,&dnum,&bnum)==false)/*查找文件目录*/{printf("文件不存在\n");return(false);}if(sopen(name)!=-1) //P182{printf("该文件打开,不能改变文件属性\n");return(false);}fseek(fc,dnum*64L,SEEK_SET);fread(buffer2,64,1,fc);/*读出该目录所在盘块*/buffer2[bnum].attribute=attribute;/*修改属性*/fseek(fc,dnum*64L,SEEK_SET);fwrite(buffer2,64,1,fc);/*写回磁盘*/}/*改变文件属性函数结束*/int main( ){char name[20];//FILE*x1,*x2;//errno_t err;//char err;int attribute,type,length,i,a,j;char buffer[64];/*建立文件,模拟磁盘*/if((fc=fopen("c:\c","w+"))==NULL)//{printf("无法打开文件\n");exit(0);}/*初始化已打开文件表*/openfile.length=0;/*初始化磁盘*//*初始化文件分配表*/buffer1[0]=buffer1[1]=buffer1[2]=255;/*磁盘第0、1块存放FAT表,第2块存放跟目录*/for(i=3;i<64;i++)buffer1[i]=0;buffer1[13]=buffer1[49]=254;/*假定模拟磁盘中有两个坏盘块:第13块和49块*/ //P183fwrite(buffer1,64L,1,fc);for(i=0;i<64;i++)buffer1[i]=0;fwrite(buffer1,64L,1,fc);/*初始化根目录*/for(i=0;i<8;i++)buffer2[i].name[0]='$';/*若目录项的第一个字符为“$”表示该目录项为空*/fwrite(buffer2,64L,1,fc);/*初始化已打开文件表*/while(1){printf("\n 0 - 结束\n");printf(" 1 - 建立文件\n");printf(" 2 - 打开文件\n");printf(" 3 - 读文件\n");printf(" 4 - 写文件\n");printf(" 5 - 关闭文件\n");printf(" 6 - 删除文件\n");printf(" 7 - 建立目录\n");printf(" 8 - 显示目录内容\n");printf(" 9 - 显示文件内容\n");printf(" 10 - 改变文件属性\n");printf(" 选择功能项(0~9):");scanf("%d",&a);switch(a){case 0: /*a=0程序结束*/fclose(fc);exit(0);case 1: /*a=1建立文件*/printf("输入文件路径名和文件属性(1-只读文件,3-只读系统文件,4-普通文件):");scanf("%s%d",name,&attribute);create_file(name,attribute); /*建立文件*/break;case 2: /*a=2打开文件*/printf("输入文件路径名和操作类型(0-读文件,1-写文件):");scanf("%s%d",name,&type);open_file(name,type); /*打开文件*/break;case 3: /*a=3读文件*/printf("输入文件路径名和读长度");scanf("%s%d",name,&length);read_file(name,length); /*读文件*/break;case 4: /*a=4写文件*/printf("输入文件路径名:");scanf("%s",name);printf("输入写的内容和和写长度");scanf("%s%d",buffer,&length);write_file(name,buffer,length); /*写文件*/break;case 5: /*a=5关闭文件*/ //P184printf("输入文件路径名");scanf("%s",name);close_file(name); /*关闭文件*/break;case 6: /*a=6删除文件*/printf("输入文件路径名");scanf("%s",name);Delete(name); /*删除文件*/break;case 7: /*a=7建立目录*/printf("输入目录路径名");scanf("%s",name);md(name); /*建立目录*/break;case 8: /*a=8显示目录*/printf("输入目录路径名");scanf("%s",name);dir(name); /*显示目录*/break;case 9: /*a=9显示文件*/printf("输入文件路径名");scanf("%s",name);typefile(name); /*显示文件*/break;case 10:/* a=10改变文件属性 */printf("输入文件路径名和文件属性(1-只读文件,3-只读系统文件,4-普通文件):");scanf("%s%d",name,&attribute);change(name,attribute);}/* switch */}/* while */}/*main( )结束*/ //P185六、结束语:通过对磁盘文件操作,使我了解了基本的磁盘文件的知识,再加上对程序流程的理解,更加明白了Windows对磁盘管理的方式,首先程序查找绝对路径名name,然后从name中分离出“/”后下一个目录(或文件名);若是文件,分离出类型名type,再进行之后的判断操作。
实验6 存储管理
广东技术师范学院实验报告学院:计算机科学院专业:物联网工程班级:成绩:姓名:赵佳炜学号:2012035743002 组别:组员:实验地点:工业中心204 实验日期:2014/04/02 指导教师签名:实验6项目名称:存储管理1、实验目的理解主分区与逻辑分区的联系与区别,掌握磁盘分区的基本方法,掌握磁盘配额管理的基本方法,初步掌握逻辑卷管理的基本方法。
2、实验内容2.1磁盘与分区2.1.1 主分区与逻辑分区(补充教材2.2.4节)我们知道,为适应不同的应用需求,一般地都需要对磁盘进行分区。
极端情况下,一整个磁盘可以划分为仅一个分区。
在Linux中,分区属于设备的概念。
既然是设备,因此有设备文件与分区对应。
同时,由分区组成的磁盘本身也是设备,而一个分区从属于某个磁盘,因此分区的设备文件与磁盘的设备文件有着对应关系。
举例如下:/dev/sda为SCSI0接口的主盘,它可以有分区:/dev/sda1,/dev/sda2…。
磁盘与分区的具体设备文件命名规律可参考教材2-2-4内容。
需要补充的是主分区与扩展分区的区别。
分区信息需要记录在分区表中,受磁盘主引导记录(计算机开机后访问硬盘时所必须要读取的首个扇区)空间限制,主引导记录的分区表只能记录四个分区的基本信息,该四个分区称为主分区。
可是实际要求能够支持磁盘划分多于四个分区。
解决的办法是取其中一个主分区作为扩展分区,扩展分区再包含逻辑分区。
扩展分区并非一个可实际使用的分区,它仅起到转换的作用,也即当访问主分区表的扩展分区信息时,实际将指向另一个分区表,该分区表记录了逻辑分区的基本信息。
2.1.2分区工具的使用划分分区需要有专门的分区工具。
在安装Linux时,系统会提供专门工具供用户对磁盘分区。
在已有系统中对磁盘(通常是新加的磁盘)进行分区需要另外其他其他工具。
常用的分区工具是fdisk。
命令:fdisk功能:划分磁盘分区格式:fdisk [选项] [磁盘设备文件]选项:-l:列出系统的磁盘个数和基本情况例:列出当前的分区表信息,注意观察各分区的起始与结束的柱面(cylinders)编号。
北理工汇编语言实验报告6
汇编语言实验报告
第六章 磁盘文件存取实验(设计性实 验)
班级:05611102 姓名:肖枫
学号:1120111431 实验日期:2013.9.14下午
第六章磁盘文件存取实验(设计性实验) 一、实验要求和目的
1. 理解文件、目录的概念; 2. 了解 FCB(文件控制块)方式文件管理方法; 3. 掌握文件代号式文件存取方式; 4. 学习使用文件指针读取文件
2、编写一个创建文件的程序,其要求如下: 1)用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行 结束; 2) 若目录创建成功,显示成功信息,否则,显示创建失败信息; 3) 从键盘输入20 个字符存放到新建立的文件中。 代码及流程图如下:
data segment handle dw ? msg1 db 'Please input the file route:', 0dh, 0ah, '$' msg2 db 0dh, 0ah, 'Error: create file failed!', 0dh, 0ah, '$' msg3 db 0dh, 0ah, 'Create file successful!', 0dh, 0ah, '$' msg4 db 0dh, 0ah, 'Error: write file failed!', 0dh, 0ah, '$' msg5 db 0dh, 0ah, 'Please input 20 characters:', 0dh, 0ah, '$' fn_buf db 64 db ? fn_str db 64 dup(0) wf_buf db 64
实验六文件管理与磁盘恢复
141516
实验报告表 6 -3删除文件过程实验记录表
删除的文件名
是否删除文件目录项
是否删除文件索引序列
flowers.png
D:\多媒体\图片
722 21
7
722 21
第3次操作
野生动物.wmv
D:\多媒体\有声读物\野生动物.wmv
4
41023
第4次操作
朱自清-匆匆.doc
D:\文档\朱自清-匆匆.doc
19
198227
实验报告表 6 -2创建文件过程演示实验记录表
创建的文件名
文件路径
分配的物理首地址
文件索引序列
鲁迅-朝花夕拾.doc
D:\文档\鲁迅-朝花夕拾.doc
实验六实验报告表
实验名称:文件管理与磁盘恢复
学号姓名班级: 实验时间:
实验报告表 6 -1打开文件过程演示实验记录表
操作序号
文件名
文件
命运交响曲.mp3
D:\多媒体\音乐\命运交响曲.mp3
9
91 12 25
第2次操作
flowers.png
D:\多媒体\图片\flowers.png
大学计算机实验6 实验报告
大学计算机实验6 实验报告一、实验目的本次大学计算机实验 6 的目的在于深入了解和掌握计算机系统中的某些关键技术和应用,通过实际操作和实践,提高我们对计算机知识的理解和应用能力,培养我们解决实际问题的思维和方法。
二、实验环境本次实验在学校的计算机实验室进行,使用的计算机配置为_____,操作系统为_____,安装了所需的实验软件,包括_____等。
三、实验内容(一)操作系统的基本操作1、文件和文件夹的管理熟练掌握了文件和文件夹的创建、复制、移动、删除、重命名等操作。
通过实际操作,了解了文件和文件夹的属性设置,如只读、隐藏等,以及如何查找和筛选特定的文件和文件夹。
2、任务管理器的使用学会了使用任务管理器查看系统中正在运行的进程、CPU 和内存的使用情况。
能够通过任务管理器结束无响应的进程,优化系统资源的分配。
(二)办公软件的应用1、 Word 文档的编辑使用 Word 进行了文档的排版,包括字体、字号、颜色、段落格式的设置。
学会了插入图片、表格、页眉页脚等元素,以及如何进行文档的页面设置和打印预览。
2、 Excel 数据处理在 Excel 中,掌握了数据的输入、编辑和格式化。
学会了使用函数和公式进行数据的计算和统计,如求和、平均值、最大值、最小值等。
还掌握了数据的排序、筛选和图表的创建,能够将数据以直观的方式呈现出来。
(三)网络应用1、浏览器的使用熟悉了常用浏览器的操作,如网页的浏览、书签的添加和管理、历史记录的查看等。
学会了设置浏览器的主页、隐私和安全选项。
2、电子邮件的收发通过实验,掌握了电子邮箱的注册和设置,能够熟练地发送和接收电子邮件,包括添加附件、设置邮件格式和优先级等。
(四)多媒体软件的使用1、图片处理软件使用图片处理软件对图片进行了裁剪、调整大小、色彩调整、添加文字和特效等操作,提高了图片的质量和美观度。
2、音频和视频播放软件学会了使用音频和视频播放软件播放各种格式的文件,掌握了播放控制、音量调节、画面调整等基本操作。
小学信息技术六下综合实践活动刺探磁盘和文件夹的秘密课件
计算机存储器的计量单位:
字节: 用B表示 千字节:用KB表示,1KB=1024B 兆字节:用MB表示,1MB=1024KB 吉字节:用GB表示,1GB=1024MB 太字节:用TB表示,1TB=1024GB
在“我的电脑”中查看每个磁盘使用情况, 填写下列表格:
磁盘 C:
卷标
D:
E:
总容量GB
已使用GB
剩余GB
课堂小结 :
谢谢观 看
2.磁盘的卷标及其修改方法
既可以右击图标,选“属性”,然后再修改卷标; 也可用“重命名”的方法改;还可以在卷标处单击 再修改。
注意:在我们自己家,我们可以根据自己的喜欢和需要修 改卷标,在学校机房等公用计算机上,不能随意更改
了解文件和文件夹 详细信息
1、查看文件夹的属性
刚才同学们学会了查看磁盘属性的方法,那么 用这种方法是不是也可以查看文件夹的属性呢 ?
如果希望列出所有磁盘的信息,那就用下面 的方法:
打开查看菜单,选择 详情信息栏目,这样 可使被选中的磁盘显 示比较详细的信息
2.磁盘的卷标及其修改方法
在“我的电脑”窗口中,C:、D:、E:都是盘符 ,为方便知道哪个盘主要保存什么内容,就要给我 们给磁盘取一个简单的“名字”,这就是显示在盘 符左边的卷标。比如C盘,我们可以把它叫“系统 盘”,保存音乐、电影的可以叫“娱乐盘”等等。 如何才能修改卷标呢?
现在我们都喜欢看高清电影,因为它 非常清晰,一部高清电影大约有 10~20GB,显然1GB的手机存不了, 能不能存放到电脑磁盘上呢?
进一步了解磁盘信息
1.在“我的电脑”中了解磁盘信息
进入“我的电脑”,用鼠标左键选中需要了 解的磁盘(如D盘),就能看到磁盘的总大 小和可用空间
第六章磁盘文件存取实验
第六章磁盘文件存取实验第六章磁盘文件存取实验(设计性实验)一、实验要求和目的1.理解文件、目录的概念;2.了解FCB(文件控制块)方式文件管理方法;3.掌握文件代号式文件存取方式;4.学习使用文件指针读取文件二、软硬件环境1.硬件环境:计算机系统windows;2.软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识单元DOS功能调用中断(INT 21H)提供了两类磁盘文件管理功能,一类是FCB(文件控制块)方式,另一类是文件代号式存取方式。
对于文件的管理,实际上是对文件的读写管理,DOS设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。
文件的处理步骤A)写之前必须先建立文件、读之前必须先打开文件。
B)写文件之后一定要关闭文件。
通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。
1、文件代号式存取方式:当用户需要打开或建立一个文件时,必须提供文件标识符。
文件标识符用ASCII Z字符串表示。
ASCII Z字符串是指文件标识符的ASCII字符串后面再加1个“0”字符。
文件标识符的字符串包括驱动器名、路径名和文件名。
其格式为[d:][path]filename[.exe]其中d为驱动器名,path为路径名,.exe为文件名后缀。
中断21H提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下:2、操作目录的常用功能39H——创建目录3BH——设置当前目录3AH——删除目录47H——读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。
3、用文件句柄操作文件的常用功能3CH——创建文件4EH——查找到第一个文件3DH——打开文件4FH——查找下一个文件3EH——关闭文件56H——文件换名3FH——读文件或设备57H——读取/设置文件的日期和时间40H——写文件或设备5AH——创建临时文件41H——删除文件5BH——创建新文件42H——设置文件指针67H——设置文件句柄数(最多文件数)43H——读取/设置文件属性6CH——扩展的打开文件功能有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之文件操作功能。
操作系统:实验6文件管理(实验报告)
操作系统:实验6文件管理(实验报告)班级:姓名:学号:在本节实验中,通过对Windows 提供的文件与文件夹加密、磁盘配额管理、创建紧急修复磁盘、进行磁盘清理、执行备份操作、使用CHKDSK 维护文件完整性和整理磁盘碎片等功能进行操作:1) 熟悉Windows 的文件系统。
2) 明确应用NTFS 文件系统的积极意义。
3) 掌握优化Windows 磁盘子系统的基本方法。
4) 进一步理解现代操作系统文件管理知识。
1. 工具/准备工作在开始本节实验之前,请回顾教材的相关内容。
需要准备一台运行Windows 系统的计算机。
2. 实验内容与步骤(1) 请回答:1) Windows 支持哪3种主要的文件系统:a.__________________________________________________________________b.__________________________________________________________________c.__________________________________________________________________2) NTFS 文件系统只能用于哪些操作系统环境:________________________________________________________________ ____(2) 加密文件或文件夹。
1) 右键单击想要加密的文件或文件夹,然后单击“属性”命令。
2) 在“常规”选项卡上,单击“高级”按钮。
在“高级属性”对话框中,可以设置的文件属性有:________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ________________________________________________________________________ 实验6 文件管理(3) 访问RSM服务。
操作系统实验6 磁盘存储空间管理
实验五磁盘存储空间管理一、实验内容模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。
二、实验目的磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。
用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。
一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。
怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实验使学生掌握磁盘存储空间的分配和回收算法。
三、实验题目本实验模拟三种磁盘存储空间的管理方法。
第一题:连续的磁盘存储空间的分配和回收。
[提示]:(1) 要在磁盘上建立顺序文件时,必须把按序排列的逻辑记录依次存放在磁盘的连续存储空间中。
可假定磁盘初始化时,已把磁盘存储空间划分成若干等长的块(扇区),按柱面号和盘面号的顺序给每一块确定一个编号。
随着文件的建立、删除、磁盘存储空间被分成许多区(每一区包含若干块),有的区存放着文件,而有的区是空闲的。
当要建立顺序文件时必须找到一个合适的空闲区来存放文件记录,当一个文件被删除时,则该文件占用的区应成为空闲区。
为此可用一张空闲区表来记录磁盘存储空间中尚未占用的部分,格式如下:态起始空闲块号空闲块个数状序号5 6 未分1 配未 2 分 3 14 配未分21 3 配30空表 4 目????????要建立文件时,先查找空闲区表,从状态为“未分配”的登记栏目中找出一个块数能满足要求的(2)区,由起始空闲块号能依次推得可使用的其它块号。
若不需要占用该区的所有块时,则剩余的块仍应为未分配的空闲块,这时要修改起始空闲块号和空闲块数。
若占用了该区的所有块,则相应登记栏中的状态修。
删除一个文件时,从空闲区表中找一个状态为“空表目”的登记栏目,把归还的起始块改成“空表目”号和块数填入对应的位置。
磁盘存储实验报告
一、实验目的1. 理解磁盘存储的基本原理和结构;2. 掌握磁盘分区、格式化、挂载等基本操作;3. 了解磁盘调度算法及其应用;4. 学会使用磁盘管理工具,提高磁盘存储效率。
二、实验环境1. 操作系统:Linux Ubuntu 20.042. 硬件设备:计算机、硬盘(至少一块)3. 软件:fdisk、mkfs.ext4、mount、df、du等三、实验内容1. 磁盘存储原理及结构(1)磁盘存储原理:磁盘存储器是一种利用磁性材料记录信息的存储设备,通过改变磁性材料的磁化方向来存储数据。
(2)磁盘结构:磁盘存储器主要由以下几个部分组成:- 磁盘:存储数据的载体,由多个同心圆盘片组成;- 磁头:负责读写数据的装置,包括读写磁头和磁臂;- 控制器:负责控制磁盘的转速、读写操作等;- 适配器:连接磁盘与计算机主板的接口。
2. 磁盘分区及格式化(1)分区:将磁盘划分为多个逻辑分区,每个分区可以独立格式化和挂载。
- 使用fdisk命令进行磁盘分区:```sudo fdisk /dev/sdb```根据提示进行分区操作,例如创建主分区、扩展分区和逻辑分区等。
- 使用mkfs.ext4命令对分区进行格式化:```sudo mkfs.ext4 /dev/sdb1```其中,/dev/sdb1为已创建的分区。
3. 磁盘挂载及管理(1)挂载:将已格式化的分区挂载到文件系统,以便于访问。
- 使用mount命令挂载分区:```sudo mount /dev/sdb1 /mnt```其中,/dev/sdb1为已格式化的分区,/mnt为挂载点。
- 使用df命令查看磁盘使用情况:```df -h```- 使用du命令查看文件/文件夹大小:```du -h /mnt```4. 磁盘调度算法(1)磁盘调度算法的作用:为了提高磁盘访问效率,磁盘调度算法对磁盘的读写顺序进行优化。
(2)常用磁盘调度算法:- 先来先服务(FCFS):按照请求的顺序进行访问;- 最短寻道时间优先(SSTF):选择寻道时间最短的请求进行访问;- 电梯调度算法(SCAN):按照磁头移动方向进行访问;- 循环扫描算法(C-SCAN):类似于SCAN算法,但磁头在移动到末尾时会返回起始位置。
操作系统实验六实验报告
实验六FAT文件系统实验一、实验环境Windows2000操作系统二、实验目的从系统分析的角度出发,了解FAT文件系统的组织结构和文件的存储方式。
进一步理解操作系统文件管理的基本思想。
三、实验内容(1)了解3吋软盘的FAT文件系统结构。
(2)查看文件分配表的簇号链。
(3)查看文件目录表中文件目录结构。
(4)了解用簇号链映射的文件链式存储结构。
(5)分析目录文件的组成。
四、实验准备复习文件组成,文件描述目录信息内容及含义。
复习文件系统的存储结构概念。
复习文件存储控件管理方法。
五、实验步骤1、进入DEBUG环境,装入FAT文件系统结构。
执行命令:L 0 0 0 21说明:将0号驱动器中,逻辑扇区号从0开始的共21H个扇区读入内存,放在DS:0000为起始的地址中。
2、观察1.44M软盘中FAT12文件系统结构。
执行命令D 0000 (显示从0地址开始的内存)连续执行D命令,每次显示128个字节,可见文件系统结构。
3、分析文件分配表结构,了解用簇链映射的文件的链式存储结构。
执行命令:D 200思考:首簇号为003的文件共包括几个扇区?它分布在哪几个物理扇区中?1.44M 软盘逻辑扇号与物理扇区的对应关系逻辑扇号0 # ——0道0面1扇逻辑扇号1 H ~11H ——0 道0 面2 ~18 扇逻辑扇号12 H ~23H ——0 道1 面1 扇~18 扇逻辑扇号24 H ~35H ——1 道0 面1 扇~18 扇其中:000 簇和001 簇中包含了磁盘类型002 簇对应了数据区21H 逻辑扇(0道1面16扇),现在为FFF。
003 簇中为FFF表示是hi文件最后一簇。
故首簇号为003的文件包括1个扇区,分布在0道1面17扇。
4、观察1.44M软盘中文件目录表FDT以及文件目录结构执行命令:L 0 0 0 21说明:将逻辑扇区0H开始的共21H个物理扇区装日DS:0000H起始的内存。
执行命令:D2600说明:显示从2600H地址开始的FDT文件表思考:(1)计算1.44M软盘根目录最多可以容纳多少文件?答:FDT逻辑扇区号为(13H-20H),占14个扇区,每个目录项32个字节;每个扇区512字节,故可容纳14*512/32=224个文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六磁盘文件存取实验(设计性实验)一、实验要求和目的1.理解文件、目录的概念;2.了解 FCB(文件控制块)方式文件管理方法;3.掌握文件代号式文件存取方式;4.学习使用文件指针读取文件二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识DOS功能调用中断(INT 21H)提供了两类磁盘文件管理功能,一类是FCB(文件控制块)方式,另一类是文件代号式存取方式。
对于文件的管理,实际上是对文件的读写管理, DOS 设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。
文件的处理步骤A)写之前必须先建立文件、读之前必须先打开文件。
B)写文件之后一定要关闭文件。
通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。
1、文件代号式存取方式:当用户需要打开或建立一个文件时,必须提供文件标识符。
文件标识符用ASCII Z 字符串表示。
ASCII Z 字符串是指文件标识符的ASCII 字符串后面再加1 个“0”字符。
文件标识符的字符串包括驱动器名、路径名和文件名。
其格式为[d:][path]filename[.exe]其中d 为驱动器名,path 为路径名,.exe 为文件名后缀。
中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下:2、操作目录的常用功能39H——创建目录 3BH——设置当前目录3AH——删除目录 47H——读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。
3、用文件句柄操作文件的常用功能3CH——创建文件 4EH——查找到第一个文件3DH——打开文件 4FH——查找下一个文件3EH——关闭文件 56H——文件换名3FH——读文件或设备 57H——读取/设置文件的日期和时间40H——写文件或设备 5AH——创建临时文件41H——删除文件 5BH——创建新文件42H ——设置文件指针 67H ——设置文件句柄数(最多文件数)43H ——读取/设置文件属性 6CH ——扩展的打开文件功能四、实验内容与步骤1、编写一个创建子目录的程序,具体要求如下:1)用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;2)若目录创建成功,显示成功信息,否则,显示创建失败信息。
程序框图:源程序:DATAS SEGMENTSTRING1 DB 'Input a new path:',0dh,0ah,'$'STRING2 DB 'Create successfully.',0dh,0ah,'$'开始输入新目录路径路径为空将路径改为ASCIIZ 字符串创建新目录CF=0是屏幕显示成功 结束屏幕显示失败否是否STRING3 DB 'Failed.',0dh,0ah,'$'BUF DB 20,?,20 DUP(?) ;路径存储缓冲区DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXLEA DX,STRING1MOV AH,9INT 21HLEA DX,BUF ;输入路径MOV AH,10INT 21HCMP BUF[1],BYTE PTR 0 ;判断路径是否为空JZ FINISHMOV CL,BUF[1]LEA SI,BUF+2ADD SI,CXMOV BYTE PTR [SI], 0 ;将路径转为ASCIIZ字符串CLCMOV AH,39H ;创建目录LEA DX,BUF+2MOV CX,0INT 21HJC L2 ;判断是否成功LEA DX,STRING2MOV AH,9INT 21HJMP FINISHL2: LEA DX,STRING3MOV AH,9INT 21HFINISH:MOV AH,4CHINT 21HCODES ENDSEND START程序结果:2、编写一个创建文件的程序,其要求如下:1)用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行结束;2)若目录创建成功,显示成功信息,否则,显示创建失败信息;3)从键盘输入20 个字符存放到新建立的文件中。
程序框图:源程序: DATAS SEGMENTSTRING1 DB 'Input a new path:',0dh,0ah,'$' STRING2 DB 'Create successfully.',0dh,0ah,'$' 开始输入新文件路径路径为空将路径改为ASCIIZ 字符串创建新文件CF=0是屏幕显示成功 结束屏幕显示失败否是否输入要写入的内容写入内容STRING3 DB 'Failed.',0dh,0ah,'$'STRING4 DB 'Write successfully.',0dh,0ah,'$'STRING5 DB 'Write new words:',0dh,0ah,'$'STRING6 DB 0dh,0ah,'$'BUF DB 20,?,20 DUP(?) ;路径存储缓冲区WRITE DB 40,?,40 DUP(?) ;写入内容存储缓冲区DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXLEA DX,STRING1MOV AH,9INT 21HLEA DX,BUF ;输入新文件路径MOV AH,10INT 21HLEA DX,STRING6MOV AH,9INT 21HCMP BUF[1],BYTE PTR 0 ;判断是否为空JZ FINISHMOV CL,BUF[1]LEA SI,BUF+2ADD SI,CXMOV BYTE PTR [SI], 0 ;路径改为ASCIIZ字符串CLCMOV AH,3CH ;创建新文件LEA DX,BUF+2MOV CX,0INT 21HJC L2 ;判断是否成功CALL SUCJMP FINISHL2: LEA DX,STRING3MOV AH,9INT 21HFINISH:MOV AH,4CHINT 21H;子函数:正确建立输入内容SUC PROCLEA DX,STRING2MOV AH,9INT 21HLEA DX,STRING5MOV AH,9INT 21HLEA DX,WRITEMOV AH,10INT 21HLEA DX,STRING6MOV AH,9INT 21HMOV AH,3DHLEA DX,BUF+2MOV AL,1INT 21HMOV CX,AXMOV AH,40HLEA SI,WRITE+2MOV BL,[WRITE+1]MOV BH,0MOV [SI+BX],BYTE PTR '$'LEA DX,WRITE+2MOV BX,CXMOV CL,[WRITE+1]INT 21HJC S1LEA DX,STRING4MOV AH,9INT 21HJMP S2S1: LEA DX,STRING3MOV AH,9INT 21HS2: RETSUC ENDPCODES ENDSEND START运行结果:3、利用文件句柄将两个文件合并成一个文件。
要求:1)在第一个文件末尾处换行回车,插入“The second file as follow:”; 2)换行回车,把第二个文件内容存放在后面。
程序框图:开始打开文件1打开文件2将文件2指针移到开头读取文件2内容将文件1指针移到最后将文件2中读取的内容写入文件1结束源程序:DATAS SEGMENTSTRING1 DB 'Input path1:',0dh,0ah,'$'STRING2 DB 'Input path2:',0dh,0ah,'$'STRING3 DB 0dh,0ah,'The second file as follow:',0dh,0ah STRING0 DB 0dh,0ah,'$'STRING4 DB 'Successfully.',0dh,0ah,'$'PATHNAME1 DB 20,?,20 DUP(?)PATHNAME2 DB 20,?,20 DUP(?)FILE1 DW ?FILE2 DW ?BUF DB 30 DUP(' ')DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;打开文件1LEA DX,STRING1MOV AH,9INT 21HLEA DX,PATHNAME1MOV AH,10INT 21HLEA DX,STRING0MOV AH,9。