实验4:文件系统实验指导_第1页
实验4:文件系统实验指导_第2页
实验4:文件系统实验指导_第3页
实验4:文件系统实验指导_第4页
实验4:文件系统实验指导_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验4 :文件系统的设计与仿真实现一、实验目的和要求在LINUX系统中学习操作文档的各种指令和图形界面的使用方法,深入学习和掌握文档管理系统的基本原理。掌握操作系统(如LINUX )中常用的系统调用,并创建使用系统调用的例程。3 .运用所学操作系统的文件管理机制知识,设计简单的多用户文件系统,要求分层文件目录、文件分权操作、用户管理等,模拟文件管理工作过程,文件系统的内部功能和内部实现机制二、实验指导(如何在LINUX系统上处理文件和使用图形界面1 .与目录/proc下的系统相关的文件和目录(1) /proc/$PID/fd :这是一个目录,其中进程($pid编号进程)打开的每个文件都有与该目录下对应的文件。例如: #ls /proc/851/fd012255这指示了第851个过程当前正在使用(打开)四个文件,其中每个描述符分别是0、1、2和255。 其中,0、1、2分别是过程的标准输入、标准输出、标准错误输出设备。(2)/proc/filesystems:此文件包含可用的文件系统类型。(3)/proc/mounts:记录当前安装的文件系统信息例如: #cat /proc/mount(4)/proc/$pid/maps:此文件记录了进程映射的内存区域的信息。例如: #cat/proc/851/maps2 .常用指令的说明ls命令用于确保用户具有执行权限的任何目录中的文件列表。 此命令有几个有趣的选项。 例如$ ls -liah *22684-rw-r- r-1blueherusers 952 dec 2818336343 .配置文件199242-rw-r- r-1scalish users 30 Jan 32033364000测试2.out1个rwxr-xr-scalish用户378 sep 22002测试. sh上面的列表显示了八列第1列表示文件的I节点因为使用了-i选项。 其馀的列显示为-l选项。第2列显示了文件类型和文件访问权限。第3列显示包含目录的链接数。列4和列5显示文件所有者和组所有者。 其中,所有者bluher属于组users。第6列显示文件大小(由于使用-h选项,因此是显示单位,而不是默认字节数)。第七列显示日期(显示为三列,包括月、日、年和当天的时间)。文件名显示在第8列中。 如果在选项列表中使用-a,则隐藏文件列表(如. profile )将包含在列表中。处理文件可以移动(mv )、复制(cp )或删除(rm )文件和目录。 明智地使用-i选项进行确认通常是个好主意。$ cp -i ls.out ls2.outcp:overwrite ls2.out?mv命令提供-b选项。 这将在移动文件之前创建备份副本。 rm和cp接受强大但危险的-r选项,并在目录及其文件中递归运行。$ rm -ir TestRM :目录测试? y您可以使用mkdir创建目录,然后使用rmdir删除该目录。 但是,使用rm r选项会更有用,因为您无法使用rmdir删除包含档案的目录。出于安全原因,所有文件都有所有权和保护。 文件访问权限(或文件模式)包含与上述相同的10个字符第一个字符表示文件类型。 最常见的是文件,d代表目录,l代表链接。以下9个字符是对文件所有者(字符2-4 )、用户组(5-7)和其他用户类别(8-10 )的访问权限。 其中r表示读取权限,w表示写入权限,x表示文件的执行权限。 破折号(dash ) -如果出现在这九个位置之一,表示该类别的用户禁止执行此操作。可以使用chmod命令使用字符符或二进制掩码设置访问权限。 要使用二进制掩码,必须将三个权限组的字符表示形式转换为二进制格式,然后将其转换为八进制格式用户类别:所有者用户组或其他文字显示: rwx r-x r-二进制显示: 111 101 100八进制标记: 7 5 4要向用户组授予写入权限,请执行以下操作chmodgwtest.shor chmod 774测试. sh使用umask命令在/etc/init.dev文件中默认整个系统或. profile文件中的本地文件权限。 此命令指示777减去此数字以获得默认权限$ umask 022这将为用户创建的所有新文件生成默认文件权限755。您可以使用chown更改文件的所有权$ chown bluher ls.out其中bluher是新的文件所有者。 同样,组成员资格改为:$ chgrp devgrp ls.out其中devgrp是新用户组。ls不提供哪些文件是文本文件,哪些文件是二进制文件的信息。 要了解此信息,请使用file *命令。重命名文件为一个文件命名多个名称的两种常见方法是使用链接和alias命令。 使用Alias可以轻松重命名长命令$ alias ll=ls -l$ ll请注意单引号的使用。 BASH不是自己推测项目,而是交给别名。 别名也可以作为长路径名的缩写$ alias jdev9I=/jdev9I/jdev/bin/jdevcat、more、less可以使用命令从命令行查看文本文件的内容,而无需调用编辑器。 Cat是concatenate的缩写,默认情况下在标准输出(显示器)中显示文件内容。 cat提供的最有意思的选项之一是-n选项,它将文件内容显示为带编号的输出行。$ cat -n test.out1 This is a test因为cat一次输出文件中的所有行,所以您可能更喜欢more和less。 这是因为一次输出一个画面的文件内容。 Less是more的增强版本,可以使用vi文本编辑器中的重要命令增强文件显示。 例如,向前翻转d,向后翻转b (如果n在d或b之前)。 为n输入的值是以下d命令的默认值: man页面实用程序使用less显示使用说明的内容。转向和管道在重定向中,可以将命令输出重定向到文件,而不是标准输出,也可以重定向到输入。 “重定向的标准符号”用于创建新文件。 ”符号将输出添加到现有文件$ more test2.out其他考试$ cat test.out test2.out$ cat test2.out其他考试这是测试文档的标准输入可以用“符号”重定向$ cat test2.out错误消息将以以下格式重定向并添加:2和2 $ command 2 name_of_error_file重定向在命令和文件之间或者在文件和文件之间运行。 重定向语句条目必须是文件。管道使用|符号在命令之间工作。 例如,可以使用以下方法将命令输出直接发送到打印机$ ls -l * | lpr可以通过以下方法快速找到历史记录列表中的命令$ history | grep cat查找文件find命令的GNU版本非常强大、灵活,并且比UNIX系统上存在的经典版本更具包容性。 这对于与目录结构相关的任务很有用,例如在文件中查找和运行命令。 find命令的基本格式如下所示$ findistartdirectoryoptionsmatchcriteria action options 如果您知道文件的名称或部分名称,但不知道该目录,则可以$ find .-name test*./test./jdev家庭/my work/EMP ws/EMP BC4j/test与传统的UNIX系统不同,Linux不需要在最后添加-print操作。 因为如果未指定其他操作选项,则假定执行此操作。 如果在目录的开头添加点(. ) ,则find将在的工作目录中开始搜索。 在父目录中开始搜索两点。 您可以在任何目录中启动搜索。万用字元可以作为搜寻条件的一部分(请将整个项目括在单引号中)。$ find.-名称测试* -打印./test.out./test2.out将显示扩展名为. out的一系列文件$ find /home -name *.out但请注意,除非以超级用户身份运行此命令,否则将显示许多Permission denied错误消息。(Linux通用文件系统调用(1)open系统调用格式: #include#inckude#includeint open(char *path,int flags,mode _ t模式)其中:参数path是指向要打开的文件的路径名指针。参数falgs指定如何打开文件。 此参数必须包含以下三个值之一O_RDONLY是只读的仅O_WRONLY写入onO_RDWR读取/写入开启参数mode定义了对该文件的访问权限,并在中定义若干mode的具体参数:S_IRWXU00700文件的所有者允许读取、写入和运行文件S_IRUSR (S_IREAD )允许00400文件的所有者读取文件s _ iw usr (s _ I写入)允许00200文件的所有者写文件S_IXUSR (S_IEXEC )允许00100文件的所有者运行该文件S_IRWXG00070允许读取、写入和执行包含文件的组S_IRGRP00040允许文件所在的组读取文件s_iwgrrp00020允许您创建文件所在的分组文件S_IXGRP在00010中,可以在文件所在的组中运行文件S_IRWXO00007允许其他用户读写文件s _ I根00004允许其他用户读取文件s_iwotth00002允许其他用户写入文件S_IXOTH00001允许其他用户运行文件mode仅在flags中使用O_CREAT时有效,否则将忽略creat相当于open的参数flags等于O_CREAT|O_WRONLY|O_TRUNC(2)read系统调用格式: #include#includeint read(int fd,void *buf,size_t nbytes )该系统调用从文件描述符fd表示的文件中读入nbytes字节、buf指定的缓冲器内。 读取的内容从当前读取/写入指针所指示的位置开始,该位置由相应的开放文件描述的偏移值(off_set )给出,如果调用成功,实际读取的字节数将增加。请注意,使用read系统调用时,内核只复制数据,不进行检查,因此设置的数据缓冲区足够大,可以存储请求的数据字节。返回-1:错误0 :文件偏移值位于文件的末尾整数:从此文件复制到给定缓冲区的字节数。 此字节数通常等于请求的字节数。 返回小于请求字节数的数字,除非请求的字节数超过剩馀字节数。(3)write系统调用格式: #include#includeint write(int fd,void *buf,size_t nbytes )该调用将nbytes字节从buf所指示的缓冲器写入描述符fd所指示的文件中。(4)close系统调用格式: #includeint close(int fd )每次打开文件时,都会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论