当前位置:文档之家› 在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统.doc
在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统

一、实验目标:

在硬盘上建立一个根文件系统,硬盘镜像文件的名称为:hdc-0.11.new.img

二、实验环境:

1、Vmware workation, bochs虚拟机,ultraedit编辑环境

2、用到的四个重要的镜像文件:bootimage-0.11-hd,hdc-0.1.img,并将他们放到

mylinux0.11文件夹中。

3、实验环境:redhat linux

三、实验理论依据:

1、Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括以下一些子目录和文件:

etc/ 目录主要含有一些系统配置文件;

dev/ 含有设备特殊文件,用于使用文件操作语句操作设备;

bin/ 存放系统执行程序。例如sh、mkfs、fdisk等;

usr/ 存放库函数、手册和其它一些文件;

usr/bin 存放用户常用的普通命令;

var/ 用于存放系统运行时可变的数据或者是日志等信息。

存放文件系统的设备就是文件系统设备。Linux 0.11内核所支持的文件系统是MINIX

1.0文件系统。

2、inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬

盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode 值最快的找到相对应的文件。每一个文件开头都是一个inode。

做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。

四、实验过程:

说明:为了深刻理解每一步操作的含义文中有【】的,里面的内容均是解释性的。

1、在linux系统下使用dd命令创建hdc-0.11.new.img,步骤如下:

[root@localhost home]#mkdir mkhdcimage

[root@localhost home]# cd mkhdcimage

[root@localhost mkhdcimage]# dd if=/dev/zero of=hdc-0.11.new.img bs=512 count=524160 读入了524160+0 个块

输出了524160+0 个块【524160=520*16*63即扇区数,柱面数520,磁头数16,每磁道扇区数63,上面的bs表示每扇区的字节数,所以我们建立的磁盘容量为:512*524160=268369920 bytes,近似为268MB】

[root@localhost mkhdcimage]#

【[root@localhost mkhdcimage]# dd --help

用法:dd [选项]...

复制文件,并根据以下的选项将数据转换和格式化。

bs=字节强迫ibs=<字节> 及obs=<字节>

cbs=字节每次转换指定的<字节>

conv=关键字根据以逗号分隔的关键字表示的方式来转换文件

count=块数目只复制指定<块数目>的输入数据

ibs=字节每次读取指定的<字节>

if=文件读取<文件>内容而非标准输入的数据

obs=字节每次写入指定的<字节>

of=文件将数据写入<文件>而不在标准输出显示

seek=块数目先略过以obs 为单位的指定<块数目>的输出数据

skip=块数目先略过以ibs 为单位的指定<块数目>的输入数据

--help 显示此帮助信息并离开

--version 显示版本信息并离开

<块数目>和<字节>可以加上以下的单位:

xM=M,c=1,w=2,b=512,kB=1000,K=1024,MB=1000000,M=1048576,

GB=1000000000,G=1073741824,还有T、P、E、Z、Y 如此类推。】

2、在redhat linux中将上面创建的hdc-0.11.new.img进行格式化处理,主要是在上面建立一个分区,步骤如下:

[root@localhost root]# cd /home/mkhdcimage

[root@localhost mkhdcimage]# losetup /dev/loop1 hdc-0.11.new.img【使用losetup命令将映像

文件与loop1设备关联,以便对映像文件进行操作】

[root@localhost mkhdcimage]# fdisk /dev/loop1【对映像文件进行操作】

Command (m for help): m

Command action

a toggle a bootable flag

b edit bsd disklabel

c toggle the dos compatibility flag

d delet

e a partition【删除一个分区】

l list known partition types【列出已知的分区类型】

m print this menu

n add a new partition【增加一个新的分区】

o create a new empty DOS partition table

p print the partition table【打印分区表】

q quit without saving changes【不保存退出】

s create a new empty Sun disklabel

t change a partition's system id【改变分区系统的id】

u change display/entry units

v verify the partition table

w write table to disk and exit【将表写到硬盘上并退出】

x extra functionality (experts only)【额外功能】

Command (m for help): n【增加一个新的分区】

Command action

e extended

p primary partition (1-4)

p【选p是为了建立原始的分区】

Partition number (1-4): 1

First cylinder (1-32, default 1): 1

Last cylinder or +size or +sizeM or +sizeK (1-32, default 32): +63M【分区大小】

Command (m for help): t【改变分区系统的id】

Selected partition 1

Hex code (type L to list codes): l

0 Empty 1c Hidden Win95 FA 70 DiskSecure Mult bb Boot Wizard hid

1 FAT1

2 1e Hidden Win95 FA 75 PC/IX be Solaris boot

2 XENIX root 24 NEC DOS 80 Old Minix c1 DRDOS/sec (FAT-

3 XENIX usr 39 Plan 9 81 Minix / old Lin c

4 DRDOS/sec (FAT-

4 FAT16 <32M 3c PartitionMagic 82 Linux swap c6 DRDOS/sec (FAT-

5 Extended 40 Venix 8028

6 83 Linux c

7 Syrinx

6 FAT16 41 PPC PReP Boot 84 OS/2 hidden C: da Non-FS data

7 HPFS/NTFS 42 SFS 85 Linux extended db CP/M / CTOS / .

8 AIX 4d QNX4.x 86 NTFS volume set de Dell Utility

9 AIX bootable 4e QNX4.x 2nd part 87 NTFS volume set df BootIt

a OS/2 Boot Manag 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access

b Win95 FAT32 50 OnTrack DM 93 Amoeba e3 DOS R/O

c Win95 FAT32 (LB 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor

e Win95 FAT16 (LB 52 CP/M 9

f BSD/OS eb BeOS fs

f Win95 Ext'd (LB 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT

10 OPUS 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/

11 Hidden FAT12 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b

12 Compaq diagnost 56 Golden Bow a7 NeXTSTEP f1 SpeedStor

14 Hidden FAT16 <3 5c Priam Edisk a8 Darwin UFS f4 SpeedStor

16 Hidden FAT16 61 SpeedStor a9 NetBSD f2 DOS secondary

17 Hidden HPFS/NTF 63 GNU HURD or Sys ab Darwin boot fd Linux raid auto

18 AST SmartSleep 64 Novell Netware b7 BSDI fs fe LANstep

1b Hidden Win95 FA 65 Novell Netware b8 BSDI swap ff BBT

Hex code (type L to list codes): 80【因为我们使用的是minix 1.0版本】

Changed system type of partition 1 to 80 (Old Minix)

Command (m for help): p【打印分区表】

Disk /dev/loop1: 268 MB, 268369920 bytes【磁盘shdc-0.11.img的总容量,计算方式:shdc-0.11.img建立时使用的是520个柱面,16个磁头,63个扇区,所以总的块数是520*16*63=524160块,每块的字节数是512个字节,所以总的容量是512*524160=268369920 bytes,除以1000000近似转化为268MB】

255 heads, 63 sectors/track, 32 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes【16065是每个柱面的扇区数,即由255*63=16065得到,16865*512得到每个柱面的字节数,8225280*32=263208960得到32个柱面的总的字节数同样近似是268369920 bytes】

Device Boot Start End Blocks Id System

/dev/loop1p1 1 9 72261 80 Old Minix(?此处的数据如何解释?)

【Start 起始柱面号,End终止柱面号,Blocks分区总的块数,Id文件系统的代号,System文件系统类型,由以上的数据可知每个分区有平均分配8个柱面,每个柱面的字节数是8225280,乘以8得到每个分区的字节数是65802240 bytes,即每个分区的大小近似为64MB】

【注:head磁头数,cylinder柱面或磁道,spt-sectors per track 每磁道的扇区数】Command (m for help): w【将上面建立的分区表写到硬盘上并退出】

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: 无效的参数.

The kernel still uses the old table.

The new table will be used at the next reboot.

Syncing disks.

以上就是在hdc-0.11.new.img中建立第一个分区,当分区建立好后,按照通常的做法需要重新启动一次系统,这样一个分区就被建好了。

以下是在系统重启后,查看刚才建立的分区情况:

[root@localhost mkhdcimage]# fdisk /dev/loop1

Command (m for help): x

Expert command (m for help): p

Disk /dev/loop1: 255 heads, 63 sectors, 32 cylinders

Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID

1 00 1 1 0 254 63 8 63 14452

2 80

2 00 0 0 0 0 0 0 0 0 00

3 00 0 0 0 0 0 0 0 0 00

4 00 0 0 0 0 0 0 0 0 00

【以上各个字母的含义:Nr分区代号,Af,Hd开始磁头和终止磁头号,Sec开始扇区和种子扇区号,Cyl开始磁道和终止磁道号,Start分区中的起始扇区号,Size分区中可以访问的数据块大小,ID文件系统的类型】

3、在Bochs环境中,在上面的镜像文件的第一个分区中建立minix文件系统,并将rootimage-0.11中的内容复制到上面的分区中,步骤如下:

1)在Bochs中运行Linux 0.11模拟系统时,其配置文件bochsrc.bxrc中通常需要以下这些内容。

romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000

megs: 16

vgaromimage: $BXSHARE\VGABIOS-elpin-2.40

floppya: 1_44="bootimage-0.11-hd", status=inserted

ata0-master: type=disk, mode=flat, path="D:\bochs-2.1.1\linux0.11\hdc-0.11.img", cylinders=121, heads=16, spt=63

ata0-slave: type=disk, mode=flat,

path="D:\bochs-2.1.1\linux0.11\hdc-0.11.new.img", cylinders=520, heads=16,

spt=63

boot: a

log: bochsout.txt

panic: action=ask

#error: action=report

#info: action=report

#debug: action=ignore

ips: 1000000

mouse: enabled=0

2)

使用mkfs命令在刚建立的第1个分区上创建MINIX文件系统。命令与信息如下所示。

这里创建了具有64000个数据块的分区(一个数据块为1KB字节),系统会自动创建21333个索引节点。

3)首先将A:盘中的文件换成rootimage-0.11,然后执行下列命令,把新的文件系统加载到/mnt 目录上。在加载了硬盘分区上的文件系统之后,我们就可以把软盘上的根文件系统复制到硬盘上去了。请执行以下命令:

现在说明已经在硬盘上建立好了一个基本的根文件系统。你可以在新文件系统中随处查看一下。然后卸载硬盘文件系统,并键入'logout'或'exit'退出Linux 0.11系统。此时会显示如

下信息:

[/mnt]# cd /

[/]# umount /dev/hd6

[/]# logout

child 4 died with code 0000

[/usr/root]#

4、利用创建的hdc-0.11.new.img和bootimage-0.11-hd.new.img引导启动系统

1)bochsrc文件的配置信息如下:

romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000

megs: 16

vgaromimage: $BXSHARE\VGABIOS-elpin-2.40

floppya: 1_44="bootimage-0.11-hd.new.img", status=inserted

ata0-master: type=disk, mode=flat,

path="D:\bochs-2.1.1\linux0.11\hdc-0.11.new.img", cylinders=520, heads=16, spt=63

boot: a

log: bochsout.txt

panic: action=ask

#error: action=report

#info: action=report

#debug: action=ignore

ips: 1000000

mouse: enabled=0

2)以下就是使用上面制作的映像文件启动的系统。

需要解决的几个问题:1、制作bootimage-0.11-hd 2、完整地去建立一个minix 1.0版本的根文件系统,而不是复制已有的系统。

操作系统模拟文件管理

操作系统课程设计报告 模拟文件管理 目) 院系:计算机科学技术学院计算机科学与技术系班级:计07--2 班 姓名:刘德庆 学号:12 指导教师:鲁静轩 2009 年6 月15 日

操作系统课程设计任务书 一、设计题目:模拟文件管理 二、设计目的 《操作系统原理》课程设计是软件工程专业实践性环节之一,是学习完《操作系统原理》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。 三、设计要求 (1)选择课程设计题目中的一个课题,合作完成。 (2)良好的沟通和合作能力 (3)充分运用前序课所学的软件工程、程序设计等相关知识 (4)充分运用调试和排错技术 (5)简单测试驱动模块和桩模块的编写 (6)查阅相关资料,自学具体课题中涉及到的新知识。 (7)课题完成后必须按要求提交课程设计报告,格式规范,内容详实 四、设计内容及步骤 1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。 2.根据实现的功能,划分出合理的模块,明确模块间的关系。 3.编程实现所设计的模块。 4.程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。

6.编写课程设计报告; 设计报告要求:A4纸,详细设计部分主要叙述本人的工作内容 五、课程设计工作计划 设计在学期的第15、16周进行,时间安排如下: 序号内容时间(天) 1 预习、讲课 1 2 设计 3 3 编码、测试 5 4 验收 1 合计10 。 六、成绩评定办法 成绩分为优(A)、良(B)、中(C)、及格(D)、不及格(E)五个等级。其中设计表现占30%,验收40%,设计报告占30%。 1.设计表现:教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。 2.验收:要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。 3.设计报告:学生设计后应按时完成设计报告。要求:内容充实、写作规范、项目填写正确完整、书面整洁等。

模拟文件系统的设计与实现

中北大学 操作系统课程设计 说明书 学院、系:软件学院 专业:软件工程 学生姓名:xxx 学号:xxx 设计题目:模拟文件系统的设计与实现 起迄日期: 2015年12月28日- 2016年1月8日指导教师:xxx 2016 年1月8日

1需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 2总体设计 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 文件的创建: create 文件关闭:close 文件的打开:open 文件的读:read 文件的写:write 文件关闭:close 删除文件:delete 创建子目录:mkdir 删除子目录:rmdir 列出文件目录:dir 退出:exit 系统执行流程图 开始 选择操作 创建文件删 除 文 件 读 文 件 写 文 件 创 建 文 件 夹 删 除 文 件 夹 删 除 子 目 录 显示 当前 子目 录 创 建 子 目 录 更 改 目 录 退 出

退出 3.详细设计 主要数据结构: #define MEM_D_SIZE 1024*1024 //总磁盘空间为1M #define DISKSIZE 1024 //磁盘块的大小1K #define DISK_NUM 1024 //磁盘块数目1K #define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT表大小 #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号#define ROOT_DISK_SIZE sizeof(struct direct) //根目录大小 #define DIR_MAXSIZE 1024 //路径最大长度为1KB #define MSD 5 //最大子目录数5 #define MOFN 5 //最大文件深度为5 #define MAX_WRITE 1024*128 //最大写入文字长度128KB struct fatitem /* size 8*/ { int item; /*存放文件下一个磁盘的指针*/ char em_disk; /*磁盘块是否空闲标志位 0 空闲*/ }; struct direct { /*-----文件控制快信息-----*/ struct FCB { char name[9]; /*文件/目录名 8位*/ char property; /*属性 1位目录 0位普通文件*/ int size; /*文件/目录字节数、盘块数)*/

liu改udhcpc配置+根文件系统制作

基于ubuntu12.06 Mini2440 256M 试验通过2013年4月8日星期一 1、获得simple.script #解压busybox tar jxvf busybox-1.5.0.tar.ba2 mv busybox-1.5.0 busybox cd busybox #添加交叉工具链 export PATH=/usr/local/arm/3.3.2/bin:$PATH make defconfig make menuconfig #配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneous Utilities #下的“taskset”选项去掉,不然会出错。 #如下: Busybox setting ->builds options ->[*] build busybox as a static binary ->installitation options ->[*] don’t use /usr Miscellaneous Utilities ―> [ ] taskset 保存退出。 #编译安装 make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/root/build_rootfs/rootfs all install ARCH指定平台 CROSS_COMPILE指定交叉编译 CONFIG_PRRFIX指定安装的路径 或者直接修改Makefile文件 生成的udhcpc是一个链接在上面的安装目录/all/sbin 下 此时把busybox考到根文件系统的/bin下和把udhcpc拷到根文件系统的/sbin(其实原有的根文件系统里可能已经包含了udhcpc{这样该不该都行,或许吧})开机运行/sbin 下的udhcpc就可以自动获得IP。 关键点要把busybox目录下的examples/udhcp/simple.script 脚本文件做为default.script拷贝到根文件系统的/usr/share/udhcpc/default.script。没有则自己创建。

文件管理系统课程设计

课程名称:操作系统 实验题目:文件管理系统 1、课程设计选题 (3) 1.1主要设计内容 3 1.2主要设计思路 3 2、课程设计需求分析 3 3、概要设计 (4) 3.1整体设计框架 4 3.2各模块的基本功能 4 4、系统实现 5 4.1原理 6 4.2各模块算法思想 6 4.3流程图描述 9 4.4代码描述 10 5、系统测试 11

5.1系统主界面 11 5.2子系统功能测试 11 6、总结 19 7、参考文献样式 19 1、课程设计选题 1.1主要设计内容 本课程设计主要是用C语言编写,设计的是一个模拟的多用户多级目录的文 件管理系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文 件操作的实现,加深对文件系统内部功能和实现过程的理解。 1.2主要设计思路 首先系统要完成初始化的任务,建立起整个系统,等待用户注册,注册成功后,用户登录模块,对用户的用户名进行验证,如果用户登录成功,则系统进入 等待用户输入的状态,用户选择相应指令后,系统按照即定方式处理用户请求, 用户退出后,系统转入登录模块,等待下一位用户的登录。 2、课程设计需求分析 本系统为多用户多级目录的文件管理系统,用户可以根据所注册的用户名登 陆来对文件或是文件进行操作。多用户功能可以满足不同用户不同的需求,同时 也起到了很好的保密作用。 文件系统为用户提供了按名存取的功能,以使得用户能透明地存储访问文

件。为了实现按名存取,文件需要对文件存储设备进行合理的组织,分配;对存储在文件存储设备上的文件进行保护,保密和提供共享的手段。另外,文件系统还要提供检索文件或文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。 模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分枝来存贮。 采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 因为存在着同一个目录下不能有同名文件的问题。所以在进行文件的基本操作时要考虑到在已经有的文件中是否有同名文件,有的话则输出提示信息。 3、概要设计 3.1整体设计框架 系统初始化界面是由用户注册,用户登录,退出系统三个模块组成。用户登录模块再由创建用户,进入目录,删除用户,显示所有用户,显示位示图,修改用户资料几大模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 3.2各模块的基本功能 3.21系统初始化 系统的初始化包括初始化了磁盘的空间即位示图、一个管理员用户 3.22用户注册模块 用户可以在这里注册,用户名和密码的最大长度都为10个字节,如果用户名不重复的话,则注册成功,用户的权限默认为一般用户。

磁盘和文件系统管理(二)实验报告

制作LVM卷的步骤: 裸设备---分区---PV---VG---LV---格式化---挂载使用 [root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 建立pv物理卷 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created [root@localhost ~]# vgcreate hehe /dev/sdb1 /dev/sdc1 建立vg卷组 Volume group "hehe" successfully created [root@localhost ~]# lvcreate -L 30G -n xixi hehe 建立lv逻辑卷 Logical volume "xixi" created [root@localhost ~]# mkfs.ext3 /dev/hehe/xixi 格式化为ext3的文件系统mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) [root@localhost ~]# mkdir /lvm 创建lvm文件夹 [root@localhost ~]# mount /dev/hehe/xixi /lvm 挂载lvm逻辑卷到lvm文件夹下使用[root@localhost ~]# cd /lvm 切换 [root@localhost lvm]# ls 查看 lost+found [root@localhost lvm]# df -hT 查看磁盘使用情况 文件系统类型容量已用可用已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 ext3 38G 3.1G 33G 9% / /dev/sda1 ext3 99M 11M 83M 12% /boot tmpfs tmpfs 177M 0 177M 0% /dev/shm /dev/mapper/hehe-xixi ext3 30G 173M 28G 1% /lvm [root@localhost lvm]# lvextend -L +3G /dev/hehe/xixi 扩展lvm卷的空间Extending logical volume xixi to 33.00 GB Logical volume xixi successfully resized [root@localhost lvm]# resize2fs /dev/hehe/xixi 重新识别文件系统的大小

U盘文件系统详细解析!

U盘文件系统详细解析! 当优盘(U盘)代替软盘成为人们常备的移动存储工具时,很少有人知道U盘其实并非通用的产品名称,它只是一个公司注册的闪存盘商标而已;也基本没人知道这种结构简单、体积小巧的USB接口闪存介质存储产品,最早是由中国人所发明的。 优盘的鼻祖——朗科 闪存盘虽然技术含量不高,但却是中国在计算机存储领域二十年来的唯一原创性发明成果,它淘汰了软驱、让ZIP和MD胎死腹中、甚至一定程度上威胁到了光驱的统治地位。如今的闪存盘早已风靡全球,容量节节攀升、价格平易近人,甚至被当作广告的载体免费赠送…… 如今讨论U盘的选购意义并不大,相信大部分电脑玩家都是人手N个了,介绍如何更 好的使用自己的大容量U盘。

当今市售最大容量的128GB U盘 U盘容量的迅速膨胀,势必会对用户的使用习惯产生影响。当一个大肚能容的U盘挂在腰间,各种数据的交换概率自然而然就会增加。且对多数人来说,也喜欢把数据放入U盘中,并随身携带与大家交换数据(文档、照片、视频等)。遗憾的是,人们对如何正确使用U盘没有概念?那么,就从磁盘存储的文件系统方面阐明其间的差异! 文件系统是指文件命名、存储和组织的总体结构。作为最常见的操作系统Windows来说,它支持的文件格式就是我们所要研究的。FAT(16)、FAT32和NTFS都是Windows的文件系统。其实文件系格式也就是我们经常所说的“磁盘格式”或“分区格式”,总体都是一个概念,只不过“分区”只针对硬盘来说的,而文件系统是针对所有磁盘及存储介质的。 FAT,FAT32,NTFS,这些我们耳熟能详的分区格式,他们分别有什么用途呢? ● FAT16文件系统 最初的U盘,也就是以MB为存储单位的U盘,所使用的文件系统格式统一为FAT16, 所以我们首先就来讲讲FAT16。 在说明FAT16文件系统之前,我们必须清楚FAT是什么?FAT(File Allocation Table)是“文件分配表”的意思。顾名思义,就是用来记录文件所在位置的表格,它对于磁盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用 了。 FAT16使用了2个字节(也就是16位)的空间来表示每个扇区(Sector)配置文件的情 形,故称之为FAT16。 FAT16由于受到先天的限制,因此每超过一定容量的分区之后,它所使用的簇(Cluster)大小就必须扩增,以适应更大的磁盘空间。所谓簇就是磁盘空间的配置单位,就象图书馆

模拟磁盘文件管理的程序

模拟磁盘文件管理的程序 一、课程设计内容 ⑴自定义磁盘文件管理的数据结构; ⑵能够自由创建、修改、删除文件; ⑶文件具有一定自定义的属性; ⑷能够显示当前系统文件的状态。 二、课程设计的数据结构说明 程序中定义了两个类: class file//文件类 {private: char name[10]; //文件名 public: int tag; //删除标记 1:已删 0:未删 file( ){ } char *getname( ){return name;} //获取文件名 int gettag( ){return tag;} //获取删除标记 int getlength() {return length;} //获取文件大小 int getblocknum() {return blocknum;} // 磁盘块数 int getblocksum1(){return blocksum1;} //磁盘块号的始点 int getblocksum2(){return blocksum2;} //磁盘块号的终点 int length,blocknum,blocksum1,blocksum2; void setname(char na[ ] ) {strcpy(name,na);} //设置文件名 void delwenjian(){ tag=1; }//设置删除标记 1:已删 0:未删 void creatfile(char *na,int L,int num,int s1,int s2) //创建文件 void deltefile(char *na) {tag=1; strcpy(name,na);} //删除文件 void disp( )//输出文件信息 class fdatabase //文件库类 { private: int top; //文件记录指针 file f[50]; public: fdatabase(){top=-1;} //构造函数 int search(char *fname)//按文件名查找 int creatfile(char *na,int L,int num,int s1,int s2)//创建文件时先查找是否存在 int deltefile(char *na)//删除文件时先查找是否存在 void disp() //输出所有文件信息 };

NOSLinux 【单元测验】Linux文件系统与磁盘管理(2)

【单元测验】Linux文件系统与磁盘管理(2) 回顾第 1 次试答 结束回顾 开始时间2012年03月 22日星期四 08:18 完成于2012年03月 22日星期四 08:23 耗时 5 分钟 1 秒 分数6/16 成绩37.5超出最大限度 100(38%) 反馈要加油啰 Question 1 分数: 1 以下命令返回的结果是什么?ln file1 file2 选择一个答案 A. file2将成为file1的符号链接 B. 命令格式错误,需要使用参数 C. 无论file1的尺度是多少,file2将固定为5字节 D. file1和file2有相同的索引节点 链接文件分为硬链接(不加参数)和符号链接(加-s参数) 硬链接内容和原文件保持同步,他们具有相同的索引节点信息(磁盘的具体物理位置),移动、删除或修改他们中的任何一个都不影响通过另一个访问该文件 符号链接只是快捷方式,原文件删除,将导致该符号链接失效 正确 这次提交的分数:1/1。 Question 2 分数: 1 以下哪个命令可将file1复制给file2? 选择一个答案 A. cat file1 > file2 B. copy file1 file2 C. cat file1 file2> file1 D. cp file | file2

cp命令可以复制文件,格式为 cp 源文件目标文件,无需加管道符号“|” cat本来是输出文件内容到屏幕,加了“>”重定向符号后也可以将文件内容重定向输出指定文件中,这样就可以实现复制文件的目的 正确 这次提交的分数:1/1。 Question 3 分数: 1 如果newdir/file2文件不存在,但是目录newdir已存在,mv file1 newdir/file2命令将有什么结果? 选择一个答案 A. file1将被复制到newdir并命名为file2 B. 将报错,因为以上不是有效的命令 C. file1将被移动到newdir并重命名为file2 D. file1将被删除 mv可以更名也可以移动,具体看命令参数 mv 文件1 文件2——将文件1更名为文件2 mv 目录1 目录2——将目录1更名为目录2 mv 文件1 目录2——将文件1移动到目录2 mv 文件1 目录1/文件2——将文件1移动到目录1,并更名为文件2 正确 这次提交的分数:1/1。 Question 4 分数: 1 如何从文件中查找显示所有以“#”打头的行? 选择一个答案 A. grep -n "#" file B. find "\#" file C. grep -v "#" file D. wc -l "#" find查找的对象和结果都是文件 grep查找的对象和结果是输出结果中的行 -c 显示符合条件的行数 -i查找时不区分大小写 -n显示行号

在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统 一、实验目标: 在硬盘上建立一个根文件系统,硬盘镜像文件的名称为:hdc-0.11.new.img 二、实验环境: 1、Vmware workation, bochs虚拟机,ultraedit编辑环境 2、用到的四个重要的镜像文件:bootimage-0.11-hd,hdc-0.1.img,并将他们放到 mylinux0.11文件夹中。 3、实验环境:redhat linux 三、实验理论依据: 1、Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括以下一些子目录和文件: etc/ 目录主要含有一些系统配置文件; dev/ 含有设备特殊文件,用于使用文件操作语句操作设备; bin/ 存放系统执行程序。例如sh、mkfs、fdisk等; usr/ 存放库函数、手册和其它一些文件; usr/bin 存放用户常用的普通命令; var/ 用于存放系统运行时可变的数据或者是日志等信息。 存放文件系统的设备就是文件系统设备。Linux 0.11内核所支持的文件系统是MINIX 1.0文件系统。 2、inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬 盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode 值最快的找到相对应的文件。每一个文件开头都是一个inode。 做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。

操作系统文件管理练习和答案

文件管理练习题 (一)单项选择题 1.操作系统对文件实行统一管理,最基本的是为用户提供( )功能。A.按名存取 B.文件共享 C.文件保护 D.提高文件的存取速度 2.按文件用途分类,编译程序是( )。 A.系统文件 B.库文件 C.用户文件 D.档案文件 3.( )是指将信息加工形成具有保留价值的文件。 A.库文件 B.档案文件 C.系统文件 D.临时文件 4.把一个文件保存在多个卷上称为( )。 A.单文件卷 B.多文件卷 C.多卷文件 D.多卷多文件 5.采取哪种文件存取方式,主要取决于( )。 A.用户的使用要求 B.存储介质的特性C.用户的使用要求和存储介质的特性 D.文件的逻辑结构 6.文件系统的按名存取主要是通过( )实现的。 A.存储空间管理 B.目录管理 C.文件安全性管理 D.文件读写管理 7.文件管理实际上是对( )的管理。 A.主存空间 B.辅助存储空间 C.逻辑地址空间D.物理地址空间 8.如果文件系统中有两个文件重名,不应采用( )结构。 A.一级目录 B.二级目录C.树形目录 D.一级目录和二级目录 9.树形目录中的主文件目录称为( )。 A.父目录 B.子目录 C.根目录 D.用户文件目录 10.绝对路径是从( )开始跟随的一条指向制定文件的路径。 A.用户文件目录 B.根目录C.当前目录 D.父目录 11.逻辑文件可分为流式文件和( )两类。A.索引文件 B.链接文件 C.记录式文件 D.只读文件 12.由一串信息组成,文件内信息不再划分可独立的单位,这是指( )。A.流式文件 B.记录式文件 C.连续文件 D.串联文件 13.记录式文件内可以独立存取的最小单位是由( )组成的。A.字 B.字节 C.数据项D.物理块 14.在随机存储方式中,用户以( )为单位对文件进行存取和检索。 A.字符串 B.数据项C.字节 D.逻辑记录 15.数据库文件的逻辑结构形式是( )。A.链接文件 B.流式文件 C.记录式文件 D.只读文件 16.文件的逻辑记录的大小是( )。 A.恒定的 B.相同的 C.不相同的 D.可相同也可不同 17.能用来唯一标识某个逻辑记录的数据项为记录的( )。 A.主键 B.次键 C.索引D.指针 18.在文件系统中,( )要求逻辑记录顺序与磁盘块顺序一致。A.顺序文件 B.链接文件 C.索引文件 D.串联文件 19.下列文件中,( )的物理结构不便于文件的扩充。A.顺序文件 B.链接文件 C.索引文件 D.多级索引文件 20.( )的物理结构对文件随机存取时必须按指针进行,效率较低。 A.连续文件 B.链接文件 C.索引文件 D.多级索引文件 2l.链接文件解决了顺序结构中存在的问题,它( )。 A.提高了存储空间的利用率 B.适合于随机存取方式 C不适用于顺序存取 D.指针存入主存,速度快

磁盘管理和文件系统管理

实验三磁盘管理和文件系统管理 一、 掌握Windows Server 2003系统中的磁盘管理和文件系统管理,包括基本磁盘中分区的创建,动态磁盘中各种动态卷的创建及DFS的配置。 二、实验环境: Pentium 550Hz以上的CPU。 建议至少256MB的内存 建议硬盘至少2GB,并有1GB空闲空间。 三、实验内容: 磁盘的管理。 文件系统的管理。 四、实验步骤: 1.在虚拟机中再添加两块磁盘,如图1-1。 图1-1 2.使用磁盘管理控制台,在基本磁盘中新建主磁盘分区、扩展磁盘分区和逻辑驱动器,并对已经创建好的分区做格式化、更改磁盘驱动器号及路径等几个操作,如图1-2。 创建主磁盘分区的步骤如下: (1)启动【磁盘管理】。 (2)选取一块未指派的磁盘空间,如下图所示,这里我们选择“磁盘1”。 (3)用鼠标右击该空间,在弹出的菜单中选择【创建磁盘分区】,在出现“欢迎使用创建磁盘分区向导”对话框时,单击【下一步】按钮。

图1-2 (4)【选择分区类型】对话框中,选择【主磁盘分区】,单击【下一步】按钮。 (5)在【指定分区大小】对话框中,输入该主磁盘分区的容量,此例中输入“500MB”。 完成后单击【下一步】按钮。 (6)下图所示的对话框中,完成其中的单选框选择,单击【下一步】按钮,出现格式化分区对话框。设置驱动器号为“H”。 (7)在【格式化分区】对话框中,可以选择是否格式化该分区;格式化该分区的方式 设置,如设置①使用的文件系统为NTFS;②分配单位大小:为默认值;③卷标为默认值; ④执行快速格式化⑤不启动文件及文件夹压缩功能。 (8)完成以上内容设置,系统进入【完成】对话框,并列出用户所设置的所有参数。 单击【完成】按钮,开始格式化该分区。

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 2.1 系统的主要功能 (1) 2.2系统模块功能结构 (1) 2.3运行环境要求 (2) 2.4数据结构设计 (2) 第3章详细设计 (3) 3.1模块设计 (3) 3.2算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 5.1运行结果及分析 (4) 5.2系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: L ogin 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 D elete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 2.2系统模块功能结构

2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users; 本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。 users usrarray[8] = { "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", }; (3)数据结构说明 a)文件结构链表 struct fnode { char filename[FILENAME_LENGTH]; int isdir; int isopen; char content[255]; fnode *parent; fnode *child; fnode *prev; fnode *next; }; b)函数介绍 fnode *initfile(char filename[],int isdir);//初始化文件或目录 void createroot();//建立系统根目录 int run();系统运行 int findpara(char *topara);对参数进行处理 bool chklogin(char *users, char *pwd);检查账号与口令 void help();命令列表 int mkdir();建立目录 int create();建立文件

模拟简单二级文件管理系统

操作系统课程设计 模拟简单二级文件管理系统 姓名:王馨萍 学号: 系别:计算机学院 专业:网络工程 年级:16级 指导教师: 2019年05 月11 日

一、课程设计项目介绍(含项目介绍及设计目的) 1、设计目的: 通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 2、项目介绍: 为LINUX 设计一个简单的二级文件系统。本文件系统采用类似DOS系统的文件管理方式,每次调用该文件系统时,首先申请一定的内存空间,然后对该内存空间进行分配。将申请到的空间划分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示链接(FAT表)的方式。每次调用该文件系统时自动为其分配空间,并将上次操作的结果从硬盘上调入内存;当结束调用时则将操作的结果重新存入硬盘,以便下次调用。(每次使用都会自动搜索文件系统,以此确定是否是第一次使用;若是则格式化生成文件系统,否则读取已存在的文件系统。)本项目通过VC编写简单的二级文件系统的代码,实现文件管理方式,使用者只需要给出相应的文件操作命令就可以分别得到各类文件操作的相应,并且可以选择登陆或注销不同用户。

二、总体设计(含系统的总体结构、原理框图或各模块介绍等) 1、系统总体结构图:

2、模块介绍 (1)、主函数部分:在主函数系统接受输入信息,包括登陆用户和注册用户,登陆完成后选择相应的文件操作,可以选择创建目录、浏览目录、修改目录、创建文件等操作,如果选择错误就会出现相应的提示信息。 (2)、命令解释层函数:在命令解释层函数cmdexp()里加了一些选择和操作功能,增加程序实现的功能,如原来程序只有显示当前目录和文件、创建目录和修改目录的功能,把它拓展到系统所要求的全部功能,并在原有的程序的基础上进行相应的修改,使程序更加完善。 (3)、文件系统格式化函数:该函数首先建立文件,申请空间,在设置成功时将其空间写入filesystem.dat,使filesystem.dat为1M。接着设置磁盘i节点缓冲区,DIEMPTY表示空闲,设计成第1盘块存储用户名表,第2盘块用于存储根目录,第3盘块用于根目录下的子目录。 (4)、空闲盘块分配、回收函数:首先排除磁盘已满,无空闲盘块,或者已经是栈底的情况,接着设置栈指针下移一位,则空闲盘块少1。如果是空闲盘块堆栈已满状态,则把空闲盘块数据写入缓冲区,栈指针指向栈底,缓冲区内容写入新回收的盘块。最后是回收盘块,回收完毕后空闲盘块多1。 (5)、节点分配和释放函数:若没有空闲磁盘i节点,则显示相应提示信息;若空闲磁盘i节点栈空,则分为空闲磁盘i节点数可装满空闲i节点栈和剩下的空闲磁盘i节点不能装满栈区两种情况来考虑。接着初始化磁盘i节点、分配内存i节点,并从磁盘i节点读取数据到内存i节点。

操作系统文件管理

操作系统文件管理 博文很长,我把一章的内容都总结在这里了。 在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然,这是用户所不能胜任、也不愿意承担的工作。于是,取而代之的便是在操作系统中又增加了文件管理功能,即构成一个文件系统,负责管理在外存上的文件,并把对文件的存取、共享和保护等手段提供给用户。这不仅方便了用户,保证了文件的安全性,还可有效地提高系统资源的利用率。 1. 有关文件的概念 文件: 具有符号名(文件名)的一组相关元素的有序序列,是一段程序或数据的集合。 文件系统: 是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。 文件系统包含文件管理程序(文件与目录的集合)和所管理的全部文件,是用户与外存的接口,系统软件为用户提供统一方法(以数据记录的逻辑单位),访问存储在物理介质上的信息。 有关直接(随机)存取设备的磁盘知识:硬盘的读写原理和磁盘碎片的产生 2. 文件的分类 按性质和用途分类:系统文件、库文件、用户文件。 系统文件:由系统软件构成的文件,只允许用户通过系统调用或系统提供的专用命今来执行它们,不允许对其进行读写和修改。主要有操作系统核心和各种系统应用程序或实用工具程序和数据组成库文件:文件允许用户对其进行读取和执行,但不允许对其进行修改。主要由各种标准子程序库组成 用户文件:是用户通过操作系统保存的用户文件,由文件的所有者或所有者授权的用户才能使

移动硬盘文件系统变成RAW格式,本人亲身体验,三种解决办法

本文献给移动硬盘变成RAW格式的朋友。 让大家少走弯路,希望你能找回你要的!!!! 症状:三星移动硬盘全部变成RAW格式,点属性全部为O字节,第一分区为NTFS格式,第二,三分区格式为未确认 。 本人这段时间经历了移动硬盘全部变成RAW格式,硬盘里的任何资料都看不到了,内心备受煎熬,这主要是由于我由于强行拔插硬盘所致。打电话问了一下数据恢复公司,开价最少800元,买个硬盘也就是200来元。于是在网上搜各种解决方法,第一就开始用系统自带的CMD修复程输入CHKDSK G:/F (G是我的一个分区),没有任何反应。第二下了易我分区表医生,检查了一下磁盘,看看是不是有物理坏道,检查一切正常,终于悬着的心放下一半。就在网上下了几个软件试试看,毕竟还是在这几年的资料在里面,丢了也不甘心。 第一天,下了个FINEDA TA,可以恢复一个区,那个区是NTFS格式的,在这个软件中看到是,但还有二个区不能恢复,其实点属性也是RAW格式的,字节为O,因为那二个区格式为未确认。真的把我急坏了,花了一天时间居然还是不行,真的想拿到专业维修的去弄。 第二天,于是又在网上又找方法,有人介绍说EASYRECOVERY的原始恢复很强悍,在网上下了个EASYRECOVERY6.1,用了RAW还原,数据是看到全部还原了,还原的不是很方便,还原的数据后缀不知是什么文件,在百度上搜也搜不到,然后看还原的图片文件, 图片大多都已经花掉了,而且很多数据都是错误的,图片和视频也全部损坏了,又白忙一天。

第三天,又在网上下了个超级硬盘数据恢复,不过要注册,在网上找了很久都找不到注册号和注册机。问了一下要89元注册费用,于是我就在淘宝上搜,果然有这个软件的注册号,就在淘宝上花了2元买了个注册号。这个看起来很方便,扫描完里面熟悉的文件名一个个浮出来,不过有些文件也损坏了,但很多自己想要的文件还是找回来了。 然后进入我的电脑管理---磁盘管理----删除移动硬盘分区,所有分区全部删除,然后重建分区。 温馨提醒: 在用超级硬盘灵数据恢复时,有时第一次恢复效果不好时,可以删了,再恢复一次也许可以。还有记得要保存扫描记录在你的电脑上,这样可以省掉你很多时间。而且即使你把硬盘全部格式化了,也可以用你保存在电脑上的扫描文件使数据还原。

qt课程设计实验报告

程序设计课程设计实验报告 (qt实验报告) 信息科学与技术学院 软件三班 高文博 201005070309 2011年5月

实验1:计算当初存入本金的钱数。(12题) 1.实验目的、要求 目的: 1)熟悉qt中的常用属性; 2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等; 3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功 能与函数结合起来。 要求: 1)掌握对控件的文本色,背景色等常用属性的设置。 2)掌握对控件、边框尺寸与结构的设置 3)掌握对函数的设置 2.实验设备 笔记本电脑,已安装Qt 开发环境。 3.实验内容、步骤 ●先在vc++上进行编译。 ●应用qt3.38进行编译,运行。 实验步骤: 1)根据题目需求在草纸上画出结构图; 2)根据草图用代码设计整体框架和控件; 3)在qt上运行; 4)运行成功后根据功能添加函数; 5)在头文件中添加头文件。 6)将添加的功能函数与功能控件相连; 7)分别对每个函数进行测试; 8)将整个程序在qt运行调试; 9)运行通过后给每个函数写注释; 实验代码如下所示 A (1)主框架结构代码 #include"gwbsave.h"

GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) { //?? vBox=new QVBoxLayout(this); vBox->setMargin(5); vBox->setSpacing(5); label=new QLabel("Please input the lilv:",this,"label"); vBox->addWidget(label); //?? hBox=new QHBoxLayout(this); hBox->setMargin(5); hBox->setSpacing(5); vBox->addLayout(hBox); le1=new QLineEdit(this,"le1"); hBox->addWidget(le1); //?,?? hBox2=new QHBoxLayout(this); hBox2->setMargin(5); hBox2->setSpacing(5); vBox->addLayout(hBox2); leResult=new QLineEdit(this,"leResult"); leResult->setReadOnly(true); leResult->setPaletteBackgroundColor(Qt::gray); hBox->addWidget(leResult);

操作系统文件管理系统模拟实验

文件管理系统模拟 1.实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现 2.实验内容 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条) login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 3.实验提示 (1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 (2)用户创建的文件,可以编号存储于磁盘上。入file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 4.源代码 #include #include #include #define MEM_D_SIZE 1024*1024 //总磁盘空间为1M #define DISKSIZE 1024 //磁盘块的大小1K #define DISK_NUM 1024 //磁盘块数目1K #define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT 表大小

#define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号 #define ROOT_DISK_SIZE sizeof(struct direct) //根目录大小#define DIR_MAXSIZE 1024 //路径最大长度为1KB #define MSD 5 //最大子目录数5 #define MOFN 5 //最大文件深度为5 #define MAX_WRITE 1024*128 //最大写入文字长度128KB struct fatitem /* size 8*/ { int item; /*存放文件下一个磁盘的指针*/ char em_disk; /*磁盘块是否空闲标志位0 空闲*/ }; struct direct { /*-----文件控制快信息-----*/ struct FCB { char name[9]; /*文件/目录名8位*/ char property; /*属性1位目录0位普通文件*/ int size; /*文件/目录字节数、盘块数)*/ int firstdisk; /*文件/目录起始盘块号*/ int next; /*子目录起始盘块号*/ int sign; /*1是根目录0不是根目录*/ }directitem[MSD+2]; }; struct opentable { struct openttableitem { char name[9]; /*文件名*/ int firstdisk; /*起始盘块号*/ int size; /*文件的大小*/ }openitem[MOFN]; int cur_size; /*当前打文件的数目*/ }; struct fatitem *fat; /*FAT表*/ struct direct *root; /*根目录*/ struct direct *cur_dir; /*当前目录*/ struct opentable u_opentable; /*文件打开表*/ int fd=-1; /*文件打开表的

相关主题
文本预览
相关文档 最新文档