操作系统模拟unix文件系统实验报告
unix实验报告
unix实验报告《Unix实验报告》摘要:本实验报告旨在介绍Unix操作系统的基本概念、特点和使用方法。
通过实际操作和案例分析,展示了Unix操作系统的强大功能和灵活性,以及其在计算机科学和工程领域的重要性。
1. 引言Unix操作系统是一种多用户、多任务的操作系统,具有稳定性高、安全性强、灵活性大等特点。
它被广泛应用于服务器、工作站和个人电脑等领域,为用户提供了丰富的命令行工具和强大的脚本编程环境。
2. Unix操作系统的基本概念Unix操作系统的基本概念包括文件系统、进程管理、用户管理、权限控制等。
文件系统是Unix操作系统的核心,它采用树状结构组织文件和目录,并提供了丰富的文件操作命令。
进程管理是Unix操作系统的另一个重要特点,它允许多个进程同时运行,并提供了进程控制、调度和通信的功能。
用户管理和权限控制则是Unix操作系统的安全保障,它允许管理员对用户和文件进行灵活的管理和权限设置。
3. Unix操作系统的特点Unix操作系统具有很多特点,如多用户、多任务、多线程、分时共享、高性能等。
它采用了模块化设计和分层结构,使得系统更加稳定和可靠。
此外,Unix 操作系统还提供了丰富的命令行工具和编程环境,为用户提供了强大的自定义和扩展能力。
4. Unix操作系统的使用方法Unix操作系统的使用方法主要包括命令行操作、脚本编程、系统管理等。
通过实际操作和案例分析,我们可以了解到如何使用Unix操作系统进行文件操作、进程管理、用户管理、权限控制等。
同时,我们还可以学习到如何使用Shell脚本进行自动化任务的编写和执行,以及如何进行系统管理和性能调优。
5. 结论Unix操作系统是一种强大而灵活的操作系统,它为用户提供了丰富的命令行工具和编程环境,同时具有稳定性高、安全性强、灵活性大等特点。
通过实际操作和案例分析,我们可以更加深入地了解Unix操作系统的基本概念、特点和使用方法,从而更好地应用它来解决实际问题。
操作系统文件管理系统模拟实验
操作系统文件管理系统模拟实验在计算机科学中,操作系统是一种系统软件,负责管理计算机硬件和软件资源,并为用户和应用程序提供接口。
文件管理系统是操作系统的一个重要组成部分,它负责管理计算机系统中的文件和目录,以及提供对它们的访问和操作。
本次实验旨在模拟操作系统中文件管理系统的基本功能和操作。
我们将使用一个虚拟的文件系统,通过命令行界面来模拟用户与文件系统的交互。
以下是实验的具体内容和步骤:1. 创建虚拟文件系统首先,我们需要创建一个虚拟的文件系统。
文件系统由文件和目录组成,可以通过树状结构来表示。
我们可以使用一个数据结构来模拟文件系统的存储和管理。
2. 初始化文件系统在开始操作文件系统之前,我们需要初始化文件系统。
这包括创建根目录和设置当前目录为根目录。
3. 文件和目录的创建与删除文件和目录是文件系统的基本单位。
我们可以通过命令来创建和删除文件和目录。
例如,使用"mkdir"命令创建一个目录,使用"touch"命令创建一个空文件,使用"rm"命令删除文件或目录。
4. 文件和目录的访问权限文件和目录可以设置不同的访问权限,以保护文件系统的安全性。
我们可以使用"chmod"命令来修改文件或目录的权限。
权限通常包括读、写和执行权限。
5. 文件和目录的重命名和移动我们可以使用"mv"命令来重命名文件或目录,使用"cp"命令来复制文件或目录,使用"mv"命令来移动文件或目录。
6. 文件和目录的查找和显示我们可以使用"ls"命令来显示当前目录下的文件和目录,使用"cd"命令来切换当前目录,使用"pwd"命令来显示当前目录的路径。
此外,我们还可以使用"find"命令来查找文件或目录。
7. 文件和目录的读写操作文件可以被读取和写入。
操作系统文件管理系统模拟实验
操作系统文件管理系统模拟实验操作系统文件管理系统模拟实验一、实验目的本实验旨在通过模拟操作系统的文件管理系统,加深对操作系统文件管理的理解,锻炼操作系统的应用能力。
二、实验环境1、操作系统:Windows/Linux/MacOS2、编程语言:C/C++/Java/Python等三、实验内容1、初始化文件管理系统1.1 创建根目录,并初始化空文件目录1.2 初始化用户目录和权限设置2、文件操作2.1 创建文件2.1.1 检查文件名合法性2.1.2 检查文件是否已存在2.1.3 为新文件分配磁盘空间2.1.4 添加文件元数据信息2.2 打开文件2.2.1 检查文件是否存在2.2.2 检查用户权限2.3 读取文件内容2.3.1 读取文件权限检查2.3.2 读取文件内容2.4 写入文件内容2.4.1 写入文件权限检查2.4.2 写入文件内容2.5 删除文件2.5.1 检查文件是否存在2.5.2 检查用户权限2.5.3 释放文件占用的磁盘空间2.5.4 删除文件元数据信息3、目录操作3.1 创建子目录3.1.1 检查目录名合法性3.1.2 检查目录是否已存在3.1.3 添加目录元数据信息3.2 打开目录3.2.1 检查目录是否存在3.2.2 检查用户权限3.3 列出目录内容3.3.1 列出目录权限检查3.3.2 列出目录内容3.4 删除目录3.4.1 检查目录是否存在3.4.2 检查用户权限3.4.3 递归删除目录下所有文件和子目录3.4.4 删除目录元数据信息四、实验步骤1、根据实验环境的要求配置操作系统和编程语言环境。
2、初始化文件管理系统,创建根目录,并初始化用户目录和权限设置。
3、进行文件操作和目录操作。
五、实验结果分析根据实验步骤进行文件操作和目录操作,观察系统的运行情况并记录相关实验结果。
六、实验结论通过本实验,深入了解了操作系统中文件管理系统的相关原理和实现方式,并且通过实验操作进一步巩固了相应的应用能力。
操作系统文件系统模拟课程设计实验报告
院系:计算机科学学院
专业:软件工程
年级: 2018级
课程名称:操作系统
指导教师:帖军
学号: 2018 姓名:惺惺惜惺惺
2020年 4 月 25 日
实验
分项1
文件系统模拟
实验目的能设计一个简单的多用户文件系统。
①在系统中用一个文件来模拟一个磁盘;②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。
③实现这个文件系统。
④能实际演示这个文件系统。
实验要求具体题目:文件系统模拟系统平台:Windows
实验原理步骤(算法流程)程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD),打开文件目录(AFD)即运行文件目录,如图所示。
文件系统结构如图所示。
模拟UNIX文件系统
模拟UNIX/Linux文件系统
(3)目录结构 • 用16字节表示,其中14字节为文件名,2字节为I节点号 (4)用户及组结构 • 用户信息中包括用户名、口令,所属组,用户打开文件表 • (文件树结构应与用户相对应:有每个用户的HOME目录) • 组信息中可只包含组名
(5)文件树结构 除(4)要求外,适当考虑UNIX/Linux本身文件树结构
1. 检查超级块上锁否。
2. 检查i结点编号栈满否。 3. 若i结点编号栈未满,便将回收的i结点的编 号进栈,并使当前空闲i结点数加1。 4. 置超级块修改标志后返回。
超级块
512字节/块
0#块(第一个512字节)
根目录文件
.
.. bin usr dev
1#块(第二个512字节) 每个inode 占32字节 …21#...
模拟UNIX/Linux文件系统
(6)实现功能 • Ls 显示文件目录 • Chmod 改变文件权限 • Chown 改变文件拥有者 • Chgrp 改变文件所属组 • Pwd 显示当前目录 • Cd 改变当前目录 • Mkdir 创建子目录 • Rmdir 删除子目录 • Umask 文件创建屏蔽码 • Mv 改变文件名 • Cp 文件拷贝 • Rm 文件删除 • Ln 建立文件联接 • Cat 连接显示文件内容 • Passwd 修改用户口令
分配过程如下:
1. 检查超级块ห้องสมุดไป่ตู้锁否。
2. 检查i结点栈空否。 3. 从空闲i结点编号栈中分配一个i结点,并且加 以初始化,填写有关文件的属性。 4. 分配内存i结点。创建新文件后,随即把它打 开。调用iget过程为之分配内存i结点。 5. 将磁盘i结点总数减1,并在置超级块的修改标 志后返回。
unix 实验报告
unix 实验报告UNIX 实验报告一、引言UNIX 是一种操作系统,广泛应用于计算机科学领域。
本实验报告旨在介绍UNIX 操作系统的基本概念、特点和使用方法,并通过实验验证其功能和性能。
二、UNIX 操作系统的基本概念1. UNIX 的起源UNIX 是由贝尔实验室的 Ken Thompson 和 Dennis Ritchie 在 1969 年开发的操作系统。
它最初是为了支持多用户、多任务和分时操作而设计的。
2. UNIX 的特点UNIX 具有以下几个特点:- 可移植性:UNIX 可以在不同的硬件平台上运行,使得软件开发更加灵活。
- 多用户和多任务:UNIX 支持多用户同时使用,并且可以同时运行多个程序。
- 分时操作:UNIX 采用分时操作方式,使得多个用户可以共享计算机资源。
- 强大的命令行界面:UNIX 提供了丰富的命令行工具,使用户可以通过命令完成各种操作。
3. UNIX 的文件系统UNIX 使用层次化的文件系统来组织文件和目录。
文件系统的根目录为 "/",所有的文件和目录都从根目录开始构建。
UNIX 的文件系统采用了一种统一的文件访问方式,用户可以通过文件路径来访问文件。
三、UNIX 操作系统的使用方法1. 登录和注销用户可以通过用户名和密码登录到 UNIX 操作系统。
登录后,可以执行各种命令和操作。
注销时,用户可以使用 "logout" 命令退出系统。
2. 文件和目录操作UNIX 提供了一系列命令来管理文件和目录,如:- "ls" 命令用于列出当前目录下的文件和目录;- "cd" 命令用于切换当前目录;- "mkdir" 命令用于创建新的目录;- "rm" 命令用于删除文件或目录。
3. 进程管理UNIX 允许同时运行多个进程,并提供了一些命令来管理进程,如:- "ps" 命令用于查看当前正在运行的进程;- "kill" 命令用于终止指定的进程。
unix实验报告
unix实验报告Unix实验报告引言Unix操作系统是一种广泛应用于计算机领域的操作系统,具有稳定性、可靠性和灵活性等优势。
本实验旨在探索Unix操作系统的基本特性和功能,以及如何在Unix环境下进行常见的操作和任务。
一、Unix操作系统的概述Unix操作系统诞生于20世纪70年代,由贝尔实验室的Ken Thompson和Dennis Ritchie等人开发。
它采用了分时操作系统的设计理念,支持多用户、多任务和多进程的运行环境。
Unix操作系统以其开放源代码和良好的可移植性,成为了众多计算机系统的首选操作系统。
二、Unix系统的基本命令和操作在Unix系统中,用户可以通过命令行界面或图形界面来操作系统。
本节将介绍一些常见的Unix命令和操作。
1. 文件和目录管理Unix系统以文件和目录的形式来组织和管理数据。
用户可以使用命令如ls、cd、mkdir等来查看、切换目录以及创建新的目录。
2. 文件编辑和查看Unix系统提供了强大的文本编辑工具,如vi和nano。
用户可以使用这些工具来编辑和查看文本文件,进行代码编写和修改。
3. 进程管理Unix系统支持多进程的运行环境,用户可以使用命令如ps、kill等来查看和管理系统中的进程。
这些命令可以帮助用户了解系统的运行情况,并进行必要的进程控制和管理。
4. 网络和通信Unix系统具有强大的网络和通信功能。
用户可以使用命令如ping、ssh等来测试网络连接和进行远程登录。
此外,Unix系统还支持各种网络协议和服务,如FTP、HTTP等。
三、Unix环境下的编程和开发Unix操作系统以其开放的设计理念,成为了许多程序员和开发者的首选平台。
本节将介绍Unix环境下的编程和开发工具。
1. C语言开发Unix操作系统的内核和许多系统工具都是使用C语言编写的。
因此,C语言成为了Unix环境下最常用的编程语言之一。
开发者可以使用Unix系统提供的gcc 编译器来编译和调试C语言程序。
操作系统虚拟文件系统实验报告
操作系统虚拟文件系统实验报告1. 引言本报告旨在总结并分析我们小组在操作系统虚拟文件系统实验中的经验和发现。
操作系统是计算机系统中非常重要的一个组成部分,负责管理计算机硬件和软件资源。
而虚拟文件系统(Virtual File System,VFS)则是操作系统中一个关键的抽象层,为用户和应用程序提供了统一的文件操作接口。
通过对虚拟文件系统的实验,我们深入了解了操作系统的内部实现原理,加深了对文件系统的理解。
2. 实验目的本次实验的主要目的是对操作系统的虚拟文件系统进行实践探索,通过实际操作和观察,加深对虚拟文件系统的理解,并熟悉常见的文件系统操作。
3. 实验环境我们使用了一台以Linux操作系统为基础的计算机作为实验平台,并采用虚拟机技术搭建了多个虚拟机实例,以便进行并行的多任务操作。
4. 实验过程与结果4.1 文件系统的创建与挂载首先,我们使用命令行工具创建了一个新的文件系统,并将其挂载到操作系统的指定目录上。
通过这一步骤,我们成功地在操作系统上创建了一个虚拟的文件系统,并使其能够被操作系统识别并访问。
4.2 文件的创建、读取和写入在实验过程中,我们创建了多个文件,并测试了文件的读取和写入功能。
我们发现,在虚拟文件系统下,文件的读取和写入操作是非常高效和稳定的。
通过在文件中写入不同类型的数据并进行读取,我们验证了文件系统的正确性和可靠性。
4.3 目录的创建和遍历除了文件操作外,我们还对虚拟文件系统中的目录进行了创建和遍历实验。
通过创建多层次的目录结构并遍历其中的所有文件和子目录,我们验证了虚拟文件系统对目录的管理和访问功能。
4.4 文件系统的扩展与压缩为了进一步探索虚拟文件系统的性能和可扩展性,我们对文件系统进行了动态扩展和压缩实验。
通过添加和删除大量文件,我们观察到文件系统的性能表现良好,并且在文件数量不断增加的情况下能够有效地管理和访问这些文件。
5. 实验总结与思考通过本次虚拟文件系统的实验,我们对操作系统的底层实现原理有了更深入的了解。
操作系统实验文件系统报告
操作系统实验文件系统报告简介本文档是操作系统实验报告的文件系统部分。
在这个实验中,我们将通过实现一个简单的文件系统来了解文件系统的基本原理和实现方式。
本文档将介绍文件系统的设计和实现,以及在实验中遇到的问题和解决方案。
设计和实现文件系统结构我们的文件系统采用了简单的单级目录结构。
每个文件都有一个唯一的文件名和文件扩展名,以及相应的文件内容。
文件系统中的所有文件都存储在一个文件中,我们通过偏移量来访问每个文件。
文件系统接口我们实现了以下文件系统接口来对文件系统进行操作:•create_file(filename, extension): 创建一个新文件。
•delete_file(filename, extension): 删除一个文件。
•open_file(filename, extension): 打开一个文件。
•close_file(file): 关闭一个文件。
•read_file(file, offset, length): 从文件中读取数据。
•write_file(file, data): 向文件中写入数据。
•seek_file(file, offset): 设置文件指针的位置。
通过这些接口,我们可以对文件进行创建、删除、读取和写入操作,以及设置文件指针的位置。
文件系统实现我们的文件系统是在操作系统内核中进行实现的。
在内存中维护了一个文件控制块(FCB)表,用于记录文件的元数据信息,比如文件名、扩展名、大小和位置等。
文件内容存储在一个独立的数据块中。
为了实现文件的持久化,我们将文件系统的存储映射到了一个文件中。
在系统启动时,我们会将这个文件读取到内存中,并建立起文件控制块表和数据块的映射关系。
文件的创建、删除和读写操作都是通过操作文件控制块表和数据块来完成的。
具体实现涉及到文件的分配和释放,以及文件指针的管理等问题。
遇到的问题和解决方案在实验中,我们遇到了一些问题,主要集中在文件的读写和文件指针的管理方面。
Unix操作系统实验报告
Unix操作系统实验报告计算机科学与技术学院实验一、Linux基本命令一.实验目的掌握linux平台下的基本命令(40个)二.实验说明在介绍所有的命令之前,先介绍一下Linux的在线帮助man。
在Linux下,当你要查找一个命令的用法的,你可以通过man 命令名来源得命令的详细说明。
因为每个Linux都有一份man文档,所以介绍命令的时候我们只是简直介绍一下命令的学用选项。
如果想查看命令的详细说明,请自己看man。
下面是man各小节的内容:1 用户命令。
2 系统调用。
3 库函数。
4 特殊文件(设备和网络接口)。
5 文件格式。
6 游戏和演示。
7 系统环境、表格和宏。
8 系统管理和相关命令。
三.命令说明1.apropos 依据所给关键字查找相关的命令和系统调用格式:apropos keyword例:查找与ftp相关的命令和系统调用$apropos ftp注:类似的命令有man -k。
man -k 其实就是执行apropos2.at 在某一特定时间执行指定的命令格式:at [-V][-q 队列][-f 文件][-m] time选项说明:-V显示标准的错误输出。
-f可将作业存在一个文件中,用这个选项指定文件。
例如一个shell文件。
-q指定队列名称,默认为c。
-m执行后给用户发邮件。
time 指定开始执行的时间。
时间格式为: HH:MM,日期格式:MM/DD/YY或MM.DD.YY或MMDDYY。
下面的例子演示了在2004年3月11日21点34分执行一个at命令。
$at 21:34 03/11/04执行这条命令后会得到一条warning:commands will be executed using (in order) a)$SHELL b) login shellc)/bin/sh。
然后就出现“at>”的提示符。
这时你就可以输入你要执行的命令了,结束后按Ctrl+d。
你就可以去喝茶了,到时间后系统会自动执行它。
洛阳师范学院UNIX实验报告
洛阳师范学院UNIX实验报告-————————————————————————————————作者: ————————————————————————————————日期:测试过程:(实验中出现的问题、错误、解决方法)基本算法思想掌握之后,程序的大体流程可以写出来,具体的问题,就是有时候会因为对个别函数的参数应用出问题老师有问必答,全部都给解决了实验总结:ﻫﻫﻫﻫ评语与成绩:ﻫﻫ教师签名:年月日洛阳师范学院信息技术学院软件实验报告专业:软件工程课程:UNIX高级编程学号:姓名:班级:实验名称终端与作业控制实验类型验证型实验时间2012-5-23 实验环境虚拟机下装有linux操作系统的windows操作系统实验目的与要求:掌握进程组、会话期、作业、控制终端的概念;掌握作业的前台、后台切换、终端输出控制;实验内容:1、有关知识点的验证1)写一段包含fork调用的程序,验证父子进程是否在同一组中2)调用setpgid函数,分别设置父进程和子进程为一个新组的组长进程,输出设置后的组ID,验证调用是否成功3)如果一个进程在创建子进程后,希望该子进程为一个新组的组长进程,setpgid应该被调用几次?在什么时机进行调用?4)如果子进程因执行exec函数而加载新程序执行,此时父进程调用setpgid函数设置子进程的组ID是否还能成功?验证你的结论5)编写一段程序,要求调用fork在子进程中建立一个新的对话期。
6)验证步骤5)中子进程的ID和组ID是否相等?是否能够向终端输出打印信息?2、验证进程终止及同步关系1)编写二个程序,每个程序都输出其组ID,通过管道线在命令行执行。
验证这两个程序是否属于同一作业;2)将上述命令行在后台执行,观察输出的情况,并解释原因3)参照教材P189的例子,使用stty命令禁止后台进程的终端输出4)参照教材P189的例子,使用fg命令切换后台作业为前提作业实验步骤:(算法描述、源程序、操作步骤和方法)有关知识点的验证写一段包含fork调用的程序,验证父子进程是否在同一组中有运行结果可知,子进程和父进程在同一实际组里。
unix实验(操作系统)
实验一:linux常用命令一、实验内容和要求1、使用自己的帐户登录linux系统查看系统提示符确定自己使用的shell程序类型。
2、修改个人口令后重新登录。
3、用who命令查看当前登录在系统中的用户列表、用户总数、系统启动时间等。
4、查看当前用户的标志符及当前进程的状态。
5、用cal命令查看自己的生日是星期几。
6、将Windows下的C盘链入linux 系统的根目录下。
7、将C盘上的一个文本传递到linux下的当前用户目录下,并进行浏览查看。
8、使用mail进行电子邮件的传递与查看。
9、在系统中与其他用户对话。
10、练习允许与拒绝其他用户向自己的终端上发送信息。
二、实验结果:请同学们自己写出1、用户使用的shell可查阅/etc/passwd文件确定。
2、修改口令的命令为:passwd<CR>3、who –h <CR>4、id <CR>5、cal –m 3 –y 1990 <CR>6、mkdir/dosc <CR>mount/dev/hda1/dosc <CR>7、cp /myexample.txt <CR>vim ./myexample.txt<CR>8、% mail zhangming<CR>subject:hello<CR>hi,my friend! How are you![ctrl+d]Cc:<CR>%查看信件只需要键入‖mail‖% mail<CR>9、% talk zhangming<CR> 用户屏幕将分成两半,其显示:请同学们自己写此时zhangming 回应:% talk wangyong@class<CR>则zhangming 的屏幕就会分成两半,双方开始对话。
10、% mesg y<CR>允许其他用户向自己发送信息。
模拟UNIX文件系统的设计及实现操作系统大作业(含源文件)
模拟UNIX文件系统的设计及实现操作系统大作业(含源文件)华南理工大学“计算机操作系统”课程设计大作业(含答案)一、题目: 模拟UNIX文件系统的设计及实现多用户、多目录的文件系统的设计------用VC或Delphi编程模拟文件系统的管理二、目的通过OS文件子系统的设计、增强OS设计的技巧,达到提高解决实际OS的设计能力的提高。
三、内容多用户的多级目录的文件系统设计。
四、功能要求1. 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户)2. 多级目录:可有多级子目录;3. 具有login (用户登录)4. 系统初始化(分配内存空间,创建文件卷,初始化根目录)5. 文件的创建:create6. 文件的打开:open7. 文件的读:read8.文件的写:write9. 文件关闭:close10. 删除文件:delete11. 创建目录(建立子目录):mkdir12. 改变当前目录:cd13. 列出文件目录:dir(包括文件属性)14. 删除目录:rmdir15. 退出:logout五、实现方法该大作业是实现一个类似unix的文件系统,只需要实现上述功能要求中所列出的功能,代码中不能调用OS系统提供的与文件操作和磁盘操作有关的系统调用。
设计提示:用内存模拟磁盘操作,对文件和目录的创建、删除、读写都用对内存的操作来模拟。
文件的属性信息用内存数据结构保存;所有文件内容和目录信息保存在内存中。
文件属性包括:文件名,所有者,创建时间,最后访问时间,文件大小,数据区指针或I-node指针等。
当程序运行结束时回收内存,信息不需要保存到磁盘,下次重新运行程序时重头开始。
六、实验要求每人完成一份大作业实验报告。
报告分设计思想、数据定义、处理流程、源程序、运行结果截图、设计体会等部分。
1)给出数据定义和详细说明;2)给出实现思想和设计流程;3)调试完成源程序;4)屏幕观察运行结果;5)总结自己的设计体会;编程语言及操作系统平台不限。
洛阳师范学院UNIX实验报告-5
洛阳师范学院UNIX实验报告-5测试过程:(实验中出现的问题、错误、解决⽅法)能够顺利执⾏程序,并能够得到⾃⼰所需要的结果实验总结:了解passwd⽂件的存取权限;了解shadow⽂件的存取权限;签名2012年 5 ⽉7 ⽇评语与成绩:教师签名:年⽉⽇洛阳师范学院信息技术学院软件实验报告专业:软件⼯程课程:UNIX⾼级编程学号:姓名:班级:实验名称⽤户和组管理实验类型验证型实验时间2012-5-7实验环境虚拟机下装有linux操作系统的windows操作系统实验⽬的与要求:了解passwd⽂件的存取权限;了解shadow⽂件的存取权限;掌握获取⽤户信息的⽅法实验内容:1、查看系统⽂件passwd和shadow⽂件的存取权限1)在/ect⽬录下分别找到passwd和shadow⽂件2)执⾏ls命令分别查看2个⽂件的详细信息3)2个⽂件的⽂件主是谁?4)2个⽂件的存取权限如何定义?5)root能写shadow⽂件吗?尝试在命令⾏验证你的结论2、编程实现⽤户信息的浏览1)要求输出passwd⽂件中所有⽤户的所有信息(7个字段)2)观察加密⼝令字段的值,能否得到加密后的⼝令?3)参照补充内容和shadow的⽤户⼿册,掌握shadow⽂件的访问⽅法和函数4)在1)的基础上修改程序,将每个⽤户的加密⼝令部分补齐3、⽤户权限检查1)从root切换到普通⽤户lynu2)重新执⾏步骤2中的程序3)观察程序执⾏结果的变化,并思考原因4)对普通⽤户,如何实现本程序的正常功能?试设计解决⽅案,并编程实施4、补充内容:1)shadow⽂件的访问(可参考shadow的帮助⼿册):struct spwd描述⽤户⼝令信息,包括⽤户名,加密⼝令、⼝令有效时间等;getspnam函数⽤于获取指定⽤户的⼝令信息;getspent函数顺序读shadow⽂件的各个记录setspent函数⽤于将读指针移动到⾸记录endspent函数⽤于结束读过程注意:第⼀个函数⽤于⼝令信息查询,后3个⽤于⼝令信息遍历实验步骤:(算法描述、源程序、操作步骤和⽅法)1、查看系统⽂件passwd和shadow⽂件的存取权限1)在/ect⽬录下分别找到passwd和shadow⽂件2)执⾏ls命令分别查看2个⽂件的详细信息3)2个⽂件的⽂件主是谁?root4)2个⽂件的存取权限如何定义?Root的⽂件主对于⽂件有读写的权限,⽂件主所在组的⽤户对⽂件具有读的权限,其他⽤户对⽂件具有读的权限。
模拟UNIX(linux)文件系统
操作系统课程设计学院:信息科学与工程学院专业:班级:学号:学生姓名:指导教师:2009 年 4 月18 日一、实验内容1、题目:模拟UNIX(linux)文件系统[问题描述]在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟UNIX文件系统。
二、概要设计在现有机器硬盘上开辟20M的硬盘空间(利用一个循环操作,在Disk中写入20M 的零,创建一个20M的文件即是),作为设定的硬盘空间。
磁盘块物理模型如下文件则是指具有文件名的若干相关元素的集合。
文件属性主要如下文件名:实现了按名存取,文件名和目录文件允许重名。
文件类型:可以从不同的角度来规定文件的类型。
普通文件、管道文件、块文件。
文件长度:指文件的当前长度,长度的单位可以是KB。
文件的物理位置:文件在磁盘中物理的存储,并打印出来。
此次UNIX文件系统最简单的目录结构。
整个文件系统中只建立一张目录表,每个文件一个目录项,目录项含有文件相关信息。
每建立一个新文件要先检索所有的目录项保证文件名唯一。
然后找出一空白目录项填入相关信息,并修改状态位。
删除文件是找到对应目录项,回收所占用空间,清除该目录。
逻辑结构如下Unix文件系统当文件很多时,文件目录要占用大量的盘块。
在查找目录的过程中,可能需要多次启动磁盘读入目录文件的盘块。
在检索目录文件中只用到了文件名,显然,文件的物理地址等文件的描述信息在检索目录时不需调入内存。
为此,可以把文件名与文件描述信息分开。
使文件描述信息单独形成一个索引结点。
把文件描述信息单独形成一个称为索引结点的数据结构,简称为inode;文件目录中的每个目录项,则仅由文件名及指向该文件所对应的inode的指针所构成。
这样,为找到一个文件的平均启动磁盘的次数减少很多模型如下:存储空间的分配与回收成组链接法首先,建立操作系统课程的设计模型。
这个系统将利用一个20M的文件作为自己的磁盘空间,设计时由于一个盘块占用1KB,所以20M空间可以产生20480个盘块系统本身将0# - 30#块作为系统区,所以用户区便剩下20450个盘块,每50个盘块为一组,一共可以分为409个组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统大型实验班级:学号:姓名:一实验介绍……………………………………………………………………1.实验名称2.实验目的3.实验内容及要求二实验环境……………………………………………………………………三实验设计……………………………………………………………………1.数据结构设计2.系统流程设计3.实现命令操作四模块详解……………………………………………………………………1 .文件操作2 .用户操作五实验演示……………………………………………………………………1 .初始化磁盘块2 .用户登录3 .目录操作4 .文件操作六源代码………………………………………………………………………七实验心得体会……………………………………………………………………1.调试中遇到的问题总结2.实验感悟一、实验介绍1.实验名称操作系统大型实验2.实验目的完成一个 UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。
3.实验内容及要求(1)文件卷结构设计0#块可省略I节点栈及空间为20项块大小为512字节卷盘块数大于100I节点盘块数大于10块(2)I节点结构设计文件大小文件联接计数文件地址文件拥有者文件所属组文件权限及类别文件最后修改时间其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址(3)目录结构用16字节表示,其中14字节为文件名,2字节为I节点号(4)用户及组结构用户信息中包括用户名、口令,所属组,用户打开文件表(5)文件树结构除(4)要求外,适当考虑UNIX本身文件树结构(6)实现功能Ls 显示文件目录Chmod 改变文件权限Chown 改变文件拥有者Chgrp 改变文件所属组Pwd 显示当前目录Cd 改变当前目录Mkdir 创建子目录Rmdir 删除子目录Mv 改变文件名Cp 文件拷贝Rm 文件删除Ln 建立文件联接Cat 连接显示文件内容Vi 文件写入Mk 创建文件umask 查看用户屏蔽码Umask 文件创建屏蔽码Passwd 修改用户口令Ls-l 查看文件类型Login 用户注销Logout 退出系统Help 显示帮助信息二、实验环境实验设备:Microsoft Visual Studio 2010开发语言:c++三、实验设计1.数据结构设计磁盘文件结构设计:用一个名为disk.txt的文件模拟Unix系统磁盘,总共分为200块,每块514个字节(实际可用512个字节,还有2个字节是磁盘分割符‘\n’),使第一块(0#)盘块做为超级块,记录该系统磁盘的使用情况;第二块(1#)盘块——第十三块(12#)盘块作为存储I 结点使用,每个I结点74个字节,所以每个盘块可以存放6个I结点,总共有72个I结点,记录在超级块中;十三块(12#)以后的盘块作为存储文件内容使用,总共187个盘块,用成组连接法记录在超级块中。
对于I结点的具体设计如下:class INode //(74B){public:int fsize;//文件大小 setw(6)int fbnum;//文件盘块数 setw(6)int addr[4];//四个直接盘块号文件最大为4*512=2048=2KB setw(4)*4int addr1;//一个一次间址() 文件大于2KB,小于2KB+16*512=10KB setw(4)int addr2;//一个两次间址()文件大于10KB,小于10KB+16*16*512B=138KB setw(4) char owner[6];//文件拥有者 setw(6)char group[6];//文件所属组 setw(6)char mode[12];// 文件类别及存储权限 setw(12)char ctime[10];//最近修改时间 setw(10)int connect;//文件联接计数};对于超级块的具体设计如下:class superBlock{public:int FIStack[72];//空闲结点号栈 setw(3)*72 int FICount;//空闲i结点总数 setw(3)int FIPtr;//空闲结点栈指针 setw(3)int FBStack[10];//空闲盘块号栈 setw(4)*10 int FBCount;//空闲盘块总数 setw(4)int FBPtr;//空闲盘块栈指针 setw(3)};初始化磁盘示意图:除了超级块、I结点、磁盘文件的数据结构设计以外,为了系统操作方便,我还设计了用户类、文件目录类。
用户类具体设计:class USER//用户(24B){public:char name[6];//用户名 setw(6)char pass[6];//密码 setw(6)char group[6];//所属组 setw(6)int umask[3];//用户umask码 setw(6)};用户信息全部存放在一个user.txt的文件里面,所以对于user.txt文件也有一个设计,文件最开始是存放用户总数(setw(6)),随后跟着的是每一位用户名、密码、所属组、用户umask码。
文件目录类具体设计:class Catalog//目录项(18B){public:char fname[14];//文件名 setw(14)int index; //i结点号 setw(4)};目录信息全部都存放在disk磁盘里面,所以具体数据结构设计都在上面的磁盘文件设计中提及。
2. 程序流程设计◆系统主体流程图设计见图1◆用户注册流程图见图2◆登陆功能流程图见图3◆用户修改口令流程图见图4◆用户umask码修改流程图见图5◆显示所有子目录ls操作流程图见图6◆创建文件mk、目录mkdir流程图见图7◆删除文件rm流程图见图8◆删除目录文件rmdir流程图见图9◆改变当前路径cd操作流程图见图10◆查看文件内容cat操作流程图见图11◆拷贝文件、目录cp操作流程图见图12◆建立文件联接ln操作流程图见图13◆修改文件名称MV操作流程图见图14◆修改文件权限chmod操作流程图见图15◆修改文件拥有者chown、所属组chgrp操作流程图见图16◆写流程图vi见图17图1系统主体流程图图3 登陆功能流程图图7 创建文件mk、目录mkdir流程图10 改变当前路径cd操作流程图图11 查看文件内容cat操作流程图图13 建立文件联接ln操作流程图图15 修改文件权限chmod操作流程图图16 修改文件拥有者chown、所属组chgrp操作流程图图17 写文件vi操作流程图3.实现命令操作cd[enter] .[enter] 切换到当前目录cd[enter] /[enter] 切换到根目录cd[enter] ..[enter] 切换到父目录cd[enter] dir[enter] 切换到某一子目录,dir为子目录名cd[enter] string[enter] 切换到指定路径的目录,string为路径mkdir[enter] dir[enter] 当前目录下创建名为dir的子目录rmdir[enter] dir[enter] 删除当前目录下名为dir的子目录mk[enter] file[enter] 当前目录下创建名为file的文件rm[enter] file[enter] 删除当前目录下名为file的文件cp[enter] dirORfile[enter] string[enter] 拷贝当前目录下文件或子目录到指定路径下cat[enter] file[enter] 查看当前目录下名为file的文件内容vi[enter] file[enter] 向当前目录下名为file的文件写入一定内容pwd[enter] 显示当前目录ls[enter] 显示所有子目录chmod[enter] file[enter] 改变当前目录下名为file文件的权限chown[enter] file[enter] 改变当前目录下名为file文件的拥有者chgrp[enter] file[enter] 改变当前目录下名为file文件的所属组MV[enter] file[enter] 改变当前目录下名为file文件的文件名login[enter] 用户注销,可以重新登陆passwd[enter] 用户改变密码umask[enter] 查看用户umask码Umask[enter] code[enter] 修改用户umask码为codeln[enter] file1[enter] file2[enter]文件file1与file2建立连结ls-l[enter] file[enter] 查看文件file的类别help[enter] 提供帮助logout[enter] 退出系统四、模块详解1.文件操作◆mk创建文件模块,输入mk命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的数据文件。
在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。
具体流程图查看第二节,系统流程图设计部分。
◆rm删除文件模块,输入rm命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的数据文件。
在该删除过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。
具体流程图查看第二节,系统流程图设计部分。
◆mkdir创建目录文件模块,输入mkdir命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的目录文件。
在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。
具体流程图查看第二节,系统流程图设计部分。
◆rmdir删除目录文件模块,输入rmdir命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的目录文件。
在该删除过程中要判断该目录中是否存在该目录文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。
删除的时候要判断该目录是否为空,如果里面有内容,则要通过递归函数,将他们一并删除了。
具体流程图查看第二节,系统流程图设计部分。
◆cp拷贝文件模块,输入cp命令,回车,输入要拷贝文件的文件名,回车,输入要拷贝到哪个路径下面,即会在该路径下创建一个名为与被拷贝文件名相同的数据文件(目录文件),并且指向盘块里面的内容都相同的数据文件(目录文件)。
在该拷贝过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有拷贝文件的权限,有权限才可以拷贝。