实验4(文件系统)

实验4 文件系统
一、目的与要求
1. 目的
文件系统是操作系统的一个重要组成部分,也是与用户关系极为密切的部分。

学生应独立的用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解,掌握它们的实施方法,加深对教材中有关内容的理解。

2. 要求
(1)设计一个n个用户的文件系统,每个用户最多可保存m个文件。

(2)限制用户在一次运行中只能打开一个文件。

(3)系统应能检查输入命令的正确性,出错时要能显示出错原因。

(4)对文件必须设置保护措施,如只能执行,允许读,允许写等。

在每次打开文件时,根据本次打开的要求,再次设置保护级别,即可有二级保护。

(5)对文件的操作至少应有下面几条命令:
create 建立文件
delete 删除文件
open 打开文件
close 关闭文件
read 读文件
write 写文件
(6)本次实验的上机时间为2~4学时。

二、实验内容
1. 题目
(1)本次实验设计一个共有10个用户的文件系统,每个用户最多可保存10个文件,一次运行过程中用户可同时打开5个文件。

(2)程序采用二级文件目录,即设置了主文件目录(MFD)和用户文件目录(UFD)。

前者应包含文件主(即用户)及他们的目录区指针;后者应给出每个文件主占有的文件目录,即文件名、保护码、文件长度以及它们存放的位置等。

另外为打开文件设置了运行文件目录(AFD),在文件打开时应填入打开文件号,本次打开保护码和读写指针等。

(3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只修改读写指针,并不进行实际文件的读写操作。

2. 算法与框图
(1)因系统小,文件目录的检索使用了简单的线性搜索,而没有采用Hash等有效算法。

(2)文件保护简单使用了三位保护码,对应于允许读,允许写和允许执行,如下所示:
1 1 1
允许读允许写允许执行
如对应位为0,则不允许。

(3)程序中使用的主要数据结构如下:
①主文件目录(MFD)和用户文件目录(UFD)
MFD UFD
②
(4)程序框图5-1所示:
三、参考书目
[1] 郭浩志主编,计算机软件实践教程,西北电讯工程学院出版社,1995年(第二版)
[2] 庞丽萍,李胜利编,操作系统原理,华中科技大学出版社,2000年(第三版)
[3] 汤子瀛,杨成武编著,计算机操作系统,西北电讯工业大学出版社(第二版)。

合集下载

04设置NTFS文件系统

04设置NTFS文件系统
实验4设置NTFS文件系统
【实验目的】
1)掌握NTFS文件权限的设置。
2)掌握NTFS磁盘配额的设置。
3)掌握NTFS中数据加/解密和压缩/解压缩的设置。
【实验境】
具有Windows2000 Server的计算机、局域网环境。
【实验重点及难点】
重点:掌握NTFS文件权限、磁盘配额、数据加/解密和压缩/解压缩的设置。
1)打开”我的电脑”选择”D盘”右击属性选择”磁盘配额”。如图4-9。
图4-9
2)勾选”启动磁盘配额”选中”配额项”在配额项中”新建配额项”将磁盘空间限制为10MB.如图4-10.
图4-10
3)注销,用Guest帐号登陆系统,则出现如图4-11。
图4-11
4)操作完成。
三、NTFS中数据加/解密和压缩/解压缩的设置。
图4-2
3)选择”权限”栏,勾选”读取”,点击”确定”。
图4-3
4)打开”我的电脑”中的”D盘”,并在该分区中”新建文件夹”,弹出如图4-4所示.
图4-4
5)操作完成.
2、设置Guest帐号对禁止删除D盘中的”新建文件夹”。
1)打开”我的电脑”右击属性选择”安全”。如图4-1。
2)删除Everyone用户,选择”添加”(如图4-5)双击”Guest”帐号,点击”确定”。
难点:实验过程中,切实理解NTFS的功能。
【实验内容】
一、NTFS文件权限的设置。
1、设置Administrator帐号对D盘读取权限。
1)打开”我的电脑”选择”D盘”右击属性选择”安全”。如图4-1。
图4-1
2)删除Everyone用户,选择”添加”(如图4-2)双击”Administrator”帐号,点击”确定”。

实验四Linux系统的磁盘管理..

实验四Linux系统的磁盘管理..
-o 常用的选项有codepage,iocharset(对于中文来说codepage=936,
iocharset=gb2312) - o loop 挂载ISO文件时用
例:mount -o iocharset=cp936 /dev/sda1 /mnt/usb (以保证 正常显示中文字符)
1.文件系统加载
2.磁盘管理基本命令
1. dd命令
功能:
从标准输入、文件或设备读取数据,依照指定的格式来转换数据, 再输出 至文件、设备或标准输出。
命令的格式:
dd [OPTION]...
实用例子:
把一张软盘的内容拷贝到另一张软盘上,利用/tmp/tmpfile作为临时存储文 件 1.把源盘插入驱动器中: $ dd if=/dev/fd0 of=/tmp/tmpfile 2.将源盘从驱动器中取出,把目标盘插入: $ dd if=/tmp/tmpfile of=/dev/fd0 3.软盘拷贝完成后,应该将临时文件删除: $ rm /tmp/tmpfile
-s -a
对每个FILE参数只给出占用的数据块总数。 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。 若既不指定-s,也不指定-a,则只显示FILE中的每一个目录及其中 的各子目录所占的磁盘块数。 以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。 以1024字节为单位列出磁盘空间使用情况。 最后再加上一个总计(系统缺省设置)。 计算所有的文件大小,对硬链接文件,则计算多次。 跳过在不同文件系统上的目录不予统计。
1.文件系统加载
mount命令的格式
在一般情况下,本节的命令需要您有root身份才能执行。
mount命令可以加载文件系统到指定的挂接点。
mount [-t vfstype] [-o optoins] device dir

实验四 有关文件的程序设计

实验四  有关文件的程序设计

实验四有关文件的程序设计一、实验目的1.掌握磁盘文件建立的方法,能进行数据文件的输入和输出。

2.能熟练运用文件处理函数:fopen,fclose,fread,fwrite,fseek,ftell 等函数的使用。

3.掌握包含文件操作的程序设计和调试方法。

二、实验要求1. 复习文件、文件指针的概念;2. 复习有关命令行参数使用方法;3. 完成各项实验任务及问题讨论。

三、实验内容1.下面的程序建立文件file1.txt,运行程序,若有错误,请修改。

#include "stdio.h"void main(){FILE *fp; /*建立文件指针*/char string[81];if(fp=fopen("file1.txt","w")==NULL) /*打开文件 */{printf("can't open this file");exit(-1);}while(strlen(gets(string))>0) /*写字符串到文件*/{fputs(string,fp);fputs("\n",fp);}fclose(fp); /*关闭文件*/}2. 根据功能要求,完善程序。

①以下程序的功能是将1中文件file1.txt的内容输出到屏幕上并复制到文件file2. txt中。

#include “stdio.h”main(){FILE ;fp1=fopen(“file1. txt”,”r”);fp2=fopen(“file2. txt”,”w”);while(!feof(fp1)) putchar(getc(fp1));while(!feof(fp1)) putc( )fclose(fp1);fclose(fp2); }②下面程序的功能是将从终端上读入的10个整数以二进制方式写入名为“bi.dat”的新文件中。

LINUX实验报告(4)

LINUX实验报告(4)
然后输入内容,按ESC键、shift+:输入wq保存退出。
首先输入cd /run/media/clz进入U盘分区
拷贝zll文件到a目录下面:cp -R zll ./a
拷贝b目录到a目录:cp -R b ./a
移动zll文件到b:输入mv -i zll ./b
移动目录b到目录a:输入mv -i b ./a
2.文件系统使用实验:
在上面创建的分区中分别使用命令创建目录和文件、拷贝文件和目录、移动文件和目录、删除文件和目录、修改文件和目录的名称、修改文件和目录的权限、查找文件和目录。
创建目录:mkdir -p /run/media/U盘名称/目录名
创建文件:输入vi /run/media/U盘名称/文件名
(3)使用fsck命令和badblocks命令检查文件系统、标注坏扇区;
输入fsck -t /dev/sdb1检查文件系统:
输入badblocks -s -v /dev/sdb1检查坏扇区
(4)使用mount命令装载文件系统。
先输入mkdir -p /mnt/usb建立一个文件作为挂接点,然后输入mount -t vfat/dev/sdb1 /mnt/usb挂载。
实验总结:
一开始对linux的分区命令不是很了解,总是出错,而且U盘也总是挂载不上,最后换了个U盘才挂载上的,还有就是对Linux操作系统的文件和目录管理的操作命令不是很熟,有待加强,自己在课下也需要多加练习。
实验总结:
删除目录a下的zll文件:rm a/zll
删除目录a下的b目录:rm -R a/b
在分区创建zll文件
修改zll文件的名称为cz:mv zll cz
修改目录a的名称为c:mv a c
修改zll文件的权限为可读、可写、可执行:chmod 777 zll

国开 操作系统 实验4:文件管理实验

国开 操作系统 实验4:文件管理实验

实验4:文件管理实验
一、目的:
1、加深对文件、目录、文件系统等概念的理解。

2、掌握Linux 文件系统的目录结构。

3、掌握有关Linux 文件系统操作的常用命令。

4、了解有关文件安全性方面的知识。

二、条件:
需要一个Linux的环境
1、在Win10系统启用Linux子系统
2、在Win10应用商店安装Ubuntu应用
3、
三、过程:
1、浏览文件系统
用到pwd、ls、mkdir、cd命令
不带参数的cd命令,工作目录回到了用户的默认目录
cd ../.. 执行后,工作目录回到了/根目录
2、查看文件
用到data、head、tail、ls、man、date、cp、mv、rm命令
man date
建立链接后第2个字段从1变成2
3、文件查找和目录
用到了find、grep命令
4、修改文件存取权限
chmod命令
四、总结:Linux是一个多用户的现代操作系统,提供了丰富和强大的文件管理的命令。

掌握这些命令对于我们深入Linux学习是必需的。

操作系统教学实践(3篇)

操作系统教学实践(3篇)

第1篇一、引言操作系统是计算机科学与技术领域的重要基础课程,它涉及计算机系统的资源管理、进程管理、存储管理、文件系统等多个方面。

为了提高学生对操作系统的理解和掌握程度,本文将从教学实践的角度,探讨如何进行操作系统教学。

二、教学目标1. 使学生掌握操作系统的基本概念、原理和关键技术;2. 培养学生分析和解决实际问题的能力;3. 增强学生的团队协作和创新能力;4. 提高学生的编程能力和动手能力。

三、教学内容1. 操作系统概述:介绍操作系统的定义、发展历程、分类和特点;2. 进程管理:讲解进程的概念、进程状态、进程调度算法和进程同步与互斥;3. 存储管理:分析内存分配策略、页面置换算法和虚拟内存技术;4. 文件系统:探讨文件系统的概念、目录结构、文件操作和存储设备管理;5. 设备管理:介绍设备的分类、驱动程序、I/O控制方式和中断处理;6. 网络操作系统:讲解网络操作系统的基本概念、网络协议、网络设备管理和网络安全。

四、教学实践1. 案例教学:通过实际案例,引导学生分析操作系统的原理和应用。

例如,以Linux系统为例,讲解进程调度、内存管理和文件系统等知识点。

2. 实验教学:设计实验项目,让学生动手实践操作系统的相关知识。

实验项目包括:(1)进程调度实验:让学生编写进程调度算法,实现进程的创建、调度和同步。

(2)内存管理实验:让学生实现内存分配、页面置换和虚拟内存等技术。

(3)文件系统实验:让学生实现文件系统的目录结构、文件操作和存储设备管理。

(4)设备管理实验:让学生编写设备驱动程序,实现设备的控制和管理。

3. 项目教学:以实际项目为背景,让学生分组完成项目开发。

项目可以包括:(1)操作系统模拟器:让学生模拟操作系统的运行过程,加深对操作系统原理的理解。

(2)嵌入式操作系统开发:让学生了解嵌入式操作系统的特点,掌握嵌入式开发技能。

(3)分布式操作系统开发:让学生了解分布式系统的原理,掌握分布式操作系统的开发方法。

实验四 磁盘和文件系统管理心得

实验四磁盘和文件系统管理心得前言实验四主要涉及磁盘和文件系统的管理,通过对磁盘分区、文件系统格式化、文件的创建、删除和修改等操作,我们能够更好地理解和掌握磁盘和文件系统的相关概念和原理。

本文将从以下几个方面对实验四的心得进行全面、详细、完整且深入地探讨。

磁盘分区的原理与方法磁盘分区是指将一个物理硬盘分成多个逻辑区域的操作。

通过对磁盘进行合理分区,可以充分利用磁盘空间,并为不同用途的数据提供不同的存储空间。

磁盘分区有两种常见的方法:主引导记录(Master Boot Record,MBR)分区和GUID分区表(GUID Partition Table,GPT)。

MBR分区MBR分区是一种传统的分区方式,适用于BIOS引导的系统。

MBR分区表将硬盘的第一个扇区(512字节)用于存储分区表的信息,包括主引导记录、分区表项等。

MBR分区最多支持4个主分区或3个主分区加一个扩展分区。

其中,扩展分区可以进一步划分逻辑分区。

GPT分区GPT分区是一种新的分区方式,适用于UEFI引导的系统。

GPT分区通过GUID(全局唯一标识符)来标识分区,解决了MBR分区的一些限制,如只能支持最多4个主分区等。

GPT分区表存储在硬盘末尾的一个独立区域,可以容纳更多的分区信息。

文件系统的选择与格式化文件系统是操作系统用来管理和组织文件的一种方式。

常见的文件系统有FAT32、NTFS、ext4等。

在进行文件系统格式化之前,我们需要选择适合自己需求的文件系统。

FAT32文件系统FAT32是一种通用的文件系统,在各个操作系统中都能够良好地兼容。

它支持的单个文件最大为4GB,簇大小可以灵活配置。

然而,FAT32文件系统对于大容量硬盘的利用率较低,而且不支持文件权限和加密等高级功能。

NTFS文件系统NTFS是Windows操作系统中常用的文件系统,它支持大容量硬盘,单个文件最大支持16TB。

NTFS文件系统具有更高的稳定性和安全性,支持文件权限、加密和压缩等功能。

实验4HDFS常用操作

实验4HDFS常用操作Hadoop分布式文件系统(HDFS)是一个高度可靠、可扩展的分布式文件系统,为Hadoop集群提供了存储和处理大量数据的能力。

在Hadoop中,用户可以使用各种HDFS常用操作来管理和操作存储在HDFS上的数据。

本文将介绍HDFS中的一些常用操作方法。

1. 上传文件:使用命令`hadoop fs -put <local_file_path><hdfs_path>`将本地文件上传到HDFS。

例如,`hadoop fs -put/home/user/file.txt /user/hadoop/`将本地文件`file.txt`上传到HDFS的`/user/hadoop/`目录下。

3. 创建目录:使用命令`hadoop fs -mkdir <hdfs_path>`在HDFS上创建目录。

例如,`hadoop fs -mkdir /user/hadoop/data`将在HDFS的根目录下创建一个名为`data`的目录。

4. 删除文件或目录:使用命令`hadoop fs -rmr <hdfs_path>`删除HDFS上的文件或目录。

例如,`hadoop fs -rmr/user/hadoop/file.txt`将删除HDFS上的`/user/hadoop/file.txt`文件。

5. 列出目录内容:使用命令`hadoop fs -ls <hdfs_path>`列出指定目录下的文件和子目录。

例如,`hadoop fs -ls /user/hadoop/`将列出`/user/hadoop/`目录下的文件和子目录。

6. 查看文件内容:使用命令`hadoop fs -cat <hdfs_path>`将HDFS上的文件内容输出到控制台。

例如,`hadoop fs -cat/user/hadoop/file.txt`将显示`/user/hadoop/file.txt`文件的内容。

《操作系统》实验二

《操作系统》实验二一、实验目的本实验旨在加深对操作系统基本概念和原理的理解,通过实际操作,提高对操作系统设计和实现的认知。

通过实验二,我们将重点掌握进程管理、线程调度、内存管理和文件系统的基本原理和实现方法。

二、实验内容1、进程管理a.实现进程创建、撤销、阻塞、唤醒等基本操作。

b.设计一个简单的进程调度算法,如轮转法或优先级调度法。

c.实现进程间的通信机制,如共享内存或消息队列。

2、线程调度a.实现线程的创建、撤销和调度。

b.实现一个简单的线程调度算法,如协同多任务(cooperative multitasking)。

3、内存管理a.设计一个简单的分页内存管理系统。

b.实现内存的分配和回收。

c.实现一个简单的内存保护机制。

4、文件系统a.设计一个简单的文件系统,包括文件的创建、读取、写入和删除。

b.实现文件的存储和检索。

c.实现文件的备份和恢复。

三、实验步骤1、进程管理a.首先,设计一个进程类,包含进程的基本属性(如进程ID、状态、优先级等)和操作方法(如创建、撤销、阻塞、唤醒等)。

b.然后,实现一个进程调度器,根据不同的调度算法对进程进行调度。

可以使用模拟的方法,不需要真实的硬件环境。

c.最后,实现进程间的通信机制,可以通过模拟共享内存或消息队列来实现。

2、线程调度a.首先,设计一个线程类,包含线程的基本属性(如线程ID、状态等)和操作方法(如创建、撤销等)。

b.然后,实现一个线程调度器,根据不同的调度算法对线程进行调度。

同样可以使用模拟的方法。

3、内存管理a.首先,设计一个内存页框类,包含页框的基本属性(如页框号、状态等)和操作方法(如分配、回收等)。

b.然后,实现一个内存管理器,根据不同的内存保护机制对内存进行保护。

可以使用模拟的方法。

4、文件系统a.首先,设计一个文件类,包含文件的基本属性(如文件名、大小等)和操作方法(如创建、读取、写入、删除等)。

b.然后,实现一个文件系统管理器,包括文件的存储和检索功能。

实验四

实验四文件系统一、目的要求1、用高级语言编写和调试一个简单的文件系统。

模拟文件管理的工作过程。

从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

2、要求设计一个n个用户的文件系统。

每次用户可保存m个件,用户在一次运行中只能打开一个文件。

对文件必须设置保护措施,且至少有Creat,Delete,Close,Write等命令。

二、实验设计:设计一个10个用户的文件系统。

每个用户最多可保存10个文件,一次运行用户可一个文件。

程序是采用二级文件目录。

(即设置主目录(MFD)和用户文件目录(UFD)。

另外,为打开文件设置指针。

为了方便实现,对文件的读写作了简化。

在执行读写命令时,只需改读写指针。

并不进行实际的读写操作。

四、实验流程:实验开始,先进入MFD表,初值为空。

输入用户名字,需要保存用户名字,同时也有了有个新文件目录表。

接着是文件的一系列的基本操作:1、打印所有文件名。

2、打开一个文件。

3、添加一个文件。

4、删除一个文件。

5、改文件的保护码。

6、写文件。

7、读文件。

8、退出。

可以,重复用户登陆。

框图如下:五、源程序:#include <iostream.h>#include <string.h>#include <stdio.h>#include<iomanip.h>struct user {char name[10];}user[10];int in=0;struct link {struct file {char name[10];int lenght;int write;int read;int exe;}file[10];int used;}link[10];char name[10];int p;int checkuser();void createuser();void openall();void openfile();void createfile();void deletefile();void changeprotect();void write();void read();int find();void main(){int ch;char c;cout<<"*******************文件管理统*********************"<<endl<<endl<<endl; str: cout<<"用户名:";cin>>name;p=checkuser();if(p==10) {cout<<"用户不存在!"<<endl;cout<<"是否加为用户(y/n):";cin>>c;if(c=='y')createuser();else goto str;}printf("请输入操作:\n");menu: printf("1.打开所有文件.\n2.打开某一文件.\n3.添加文件.\n4.删除文件.\n5.改文件保护位.\n6.写文件.\n7.读文件.\n8.退出.\nchoose1,2,3,4,5,6,7,8:");cin>>ch;if(ch==1)openall();if(ch==2)openfile();if(ch==3)createfile();if(ch==4)deletefile();if(ch==5)changeprotect();if(ch==6)write();if(ch==7)read();if(ch==8) {printf("是否退出程序(y/n):");cin>>c;if(c=='y') goto ext;goto str;}goto menu;ext:cout<<"拜拜"<<endl;}int checkuser(){int s;for(int i=0;i<10;i++){s=strcmp(name,user[i].name);if(s==0) return i;}return 10;}void createuser(){strcpy(user[in].name,name);link[in].used=0;in++;}void openall(){if(link[p].used==0)cout<<"此文件夹为空!"<<endl;else{cout<<"文件名------读保护------写保护------执保护"<<endl;for(int i=0;i<link[p].used;i++)cout<<link[p].file[i].name<<setw(12)<<link[p].file[i].write<<setw(12)<<link[p].file[i].read< <setw(12)<<link[p].file[i].exe<<endl;}}void openfile(){cout<<"输入文件名:";cin>>name;int i=find();if(i==10)cout<<"此文件不存在!"<<endl;else{cout<<"文件名------读保护------写保护------执保护------文件长度"<<endl;cout<<link[p].file[i].name<<setw(12)<<link[p].file[i].write<<setw(12)<<link[p].file[i].read< <setw(12)<<link[p].file[i].exe<<setw(12)<<link[p].file[i].lenght<<endl;}}void createfile(){int a=link[p].used;link[p].used++;cout<<"输入文件名:";cin>>link[p].file[a].name;link[p].file[a].write=0;link[p].file[a].read=0;link[p].file[a].exe=0;link[p].file[a].lenght=0;}void deletefile(){cout<<"输入文件名:";cin>>name;int i=find();if(i==10)cout<<"此文件不存在!";else {for(int j=i;j<9;j++){strcpy(link[p].file[i].name,link[p].file[i+1].name);link[p].file[i].write=link[p].file[i+1].write;link[p].file[i].read=link[p].file[i+1].read;link[p].file[i].exe=link[p].file[i+1].exe;}link[p].used--;}}void changeprotect(){cout<<"输入文件名:"<<endl;cin>>name;int i=find();if(i==10)cout<<"此文件不存在!";else {cout<<"改变保护值:读,写,执:(0/1,0/1,0/1):";cin>>link[p].file[i].write;cin>>link[p].file[i].read;cin>>link[p].file[i].exe;}}void write(){cout<<"输入文件名:"<<endl;cin>>name;int l;int i=find();if(i==10)cout<<"此文件不存在!";else {cout<<"此文件已经打开!";cout<<"文件将要写的长度:";cin>>l;link[p].file[i].lenght+=l;}}void read(){cout<<"输入文件名:"<<endl;cin>>name;int i=find();if(i==10)cout<<"此文件不存在!"<<endl;else {cout<<"文件已经打开!"<<endl;cout<<"文件长度为:"<<link[p].file[i].lenght<<endl;}}int find(){int a;for(int i=0;i<10;i++){a=strcmp(name,link[p].file[i].name);if(a==0) return i;}return 10;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档