浙江工业大学模拟UNIX系统实验
操作系统模拟unix文件系统实验报告
操作系统大型实验班级:学号:姓名:一实验介绍……………………………………………………………………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个盘块,用成组连接法记录在超级块中。
浙江工业大学 嵌入式系统原理 实验7
嵌入式系统实验77.1#include "Config.h"#include "Target.h"#define LED (1 << 7) /* P0.7引脚控制LED,低电平点亮*//***************************************************************************** 函数名称:main()* 函数功能:通过查询定时器0中断标志位控制LED点亮****************************************************************************/int main(void){PINSEL0 = 0x00000000; // 设置管脚连接GPIOIO0DIR = LED; // 设置LED控制口输出T0TC = 0; // 定时器0初始化T0PR = 99; // 设置定时器0分频为100分频,得120000HzT0MCR = 0x03; // 匹配通道0匹配中断并复位T0TCT0MR0 = 60024; // 比较值(0.5s定时值)T0TCR = 0x03; // 启动并复位T0TCT0TCR = 0x01;while (1){while ((T0IR & 0x01) == 0); // 等待定时时间到T0IR = 0x01; // 清除中断标志if ((IO0SET & LED) == 0) // 取反LED状态IO0SET = LED;elseIO0CLR = LED;}}7.2#include "Config.h"#include "Target.h"#define LED2 (1 << 7) /* P0.7引脚控制LED2,低电平点亮*//************************************************************************************* ** 函数名称:IRQ_Timer0()** 函数功能:定时器0中断服务程序,取反LED2控制口。
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操作系统的基本概念、特点和使用方法,从而更好地应用它来解决实际问题。
30天自制操作系统期末实验报告
浙江工业大学计算机学院计算机实验班1101 章鹏0329实验报告名称:创新实践(30天自制操作系统)实验目标:根据教材从零开始使用C与汇编语言编写一个简单的操作系统,实现操作系统的基本功能。
实验背景:为了让学生对操作系统的底层有更清晰的了解,选取了一本名为《30天自制操作系统》的书作为两学期创新实践课程的教材,并根据该教材一步步从零开始完成每个人自己特色的简易版操作系统,锻炼学生动手能力,提高学生对操作系统的知识理解。
实验进度:第28天成果界面截图:截图1:操作系统初始化界面截图2:运行命令获取操作系统基本信息截图Mem:读取系统内存与存储空间截图Dir:读取当前系统允许使用的应用程序截图Exit:关闭当前console命令窗截图应用程序名:在当前窗口下运行应用程序截图Start+应用程序名:新建一个console命令窗并运行程序截图Ncst(no console start):无新建窗口运行程序截图Shift+f2:新建一个空的console窗口截图F11:将下一层的console窗口切至最顶层截图Tab:将当前工作区间(键盘)在窗口间循环截图3应用程序截图:截图a(显示字符A):截图Winhelo/winhelo2/winhelo3:截图Color:截图Color2:截图Hello3:截图Hello4与hello5:截图Lines:画线程序截图Noddle:计时程序(三分钟)截图Sosu:显示1-1000内的素数截图Sosu3:显示1-10000内的素数截图Star1:显示一个点截图Stars:显示多个点截图Walk:使用方向键控制点的移动源代码截取:操作系统代码:haribote文件夹(以graphic界面颜色与图形控制为例){mouse[y * 16 + x] = bc;}}}return;}void putblock8_8(char *vram, int vxsize, int pxsize,int pysize, int px0, int py0, char *buf, int bxsize){int x, y;for (y = 0; y < pysize; y++) {for (x = 0; x < pxsize; x++) {vram[(py0 + y) * vxsize + (px0 + x)] = buf[y * bxsize + x];}}return;}操作系统api(以api002’输出单个字符’为例):ext]_api_putstr0: ; void api_putstr0(char *s);PUSH EBXMOV EDX,2MOV EBX,[ESP+8] ; sINT 0x40POP EBXRET应用程序(以stars为例):/z_tools/INCPATH = ../z_tools/haribote/MAKE = $(TOOLPATH) -rEDIMG = $(TOOLPATH)IMGTOL = $(TOOLPATH)COPY = copyDEL = deldefault :$(MAKE): haribote/ haribote/ Makefile \a/ hello3/ hello4/ hello5/ \winhelo/ winhelo2/ winhelo3/ \star1/ stars/ stars2/ \lines/ walk/ noodle/ \beepdown/ color/ color2/$(EDIMG) imgin:../z_tools/ \wbinimg src:haribote/ len:512 from:0 to:0 \copy from:haribote/ to:@: \copy from:haribote/ to:@:\copy from: to:@:\copy from:a/ to:@:\copy from:hello3/ to:@: \copy from:hello4/ to:@: \copy from:hello5/ to:@: \copy from:winhelo/ to:@:\copy from:winhelo2/ to:@:\copy from:winhelo3/ to:@:\copy from:star1/ to:@:\copy from:stars/ to:@:\copy from:stars2/ to:@:\copy from:lines/ to:@:\copy from:walk/ to:@:\copy from:noodle/ to:@:\copy from:beepdown/ to:@:\copy from:color/ to:@:\copy from:color2/ to:@:\imgout:run :$(MAKE)$(COPY) ..\z_tools\qemu\$(MAKE) -C ../z_tools/qemuinstall :$(MAKE)$(IMGTOL) w a:full :$(MAKE) -C haribote$(MAKE) -C apilib$(MAKE) -C a$(MAKE) -C hello3$(MAKE) -C hello4$(MAKE) -C hello5$(MAKE) -C winhelo$(MAKE) -C winhelo2$(MAKE) -C winhelo3$(MAKE) -C star1$(MAKE) -C stars$(MAKE) -C stars2$(MAKE) -C lines$(MAKE) -C walk$(MAKE) -C noodle$(MAKE) -C beepdown$(MAKE) -C color$(MAKE) -C color2$(MAKE)run_full :$(MAKE) full$(COPY) ..\z_tools\qemu\$(MAKE) -C ../z_tools/qemuinstall_full :$(MAKE) full$(IMGTOL) w a:run_os :$(MAKE) -C haribote$(MAKE) runclean :src_only :$(MAKE) clean-$(DEL)clean_full :$(MAKE) -C haribote clean$(MAKE) -C apilib clean$(MAKE) -C a clean$(MAKE) -C hello3 clean$(MAKE) -C hello4 clean$(MAKE) -C hello5 clean$(MAKE) -C winhelo clean$(MAKE) -C winhelo2 clean$(MAKE) -C winhelo3 clean$(MAKE) -C star1 clean$(MAKE) -C stars clean$(MAKE) -C stars2 clean$(MAKE) -C lines clean$(MAKE) -C walk clean$(MAKE) -C noodle clean$(MAKE) -C beepdown clean$(MAKE) -C color clean$(MAKE) -C color2 cleansrc_only_full :$(MAKE) -C haribote src_only$(MAKE) -C apilib src_only$(MAKE) -C a src_only$(MAKE) -C hello3 src_only$(MAKE) -C hello4 src_only$(MAKE) -C hello5 src_only$(MAKE) -C winhelo src_only$(MAKE) -C winhelo2 src_only$(MAKE) -C winhelo3 src_only$(MAKE) -C star1 src_only$(MAKE) -C stars src_only$(MAKE) -C stars2 src_only$(MAKE) -C lines src_only$(MAKE) -C walk src_only$(MAKE) -C noodle src_only$(MAKE) -C beepdown src_only$(MAKE) -C color src_only$(MAKE) -C color2 src_only-$(DEL)refresh :$(MAKE) full$(MAKE) clean_full-$(DEL)。
浙工大-嵌入式实验报告
金艳霞通信2班201203110210实验五Linux交叉编译平台一、实验目的1.掌握一些基本的linux读写操作2.利用vcc编译c程序3.通过nfs挂载到实验箱中,利用交叉编译执行文件二.实验设备1.Arm9试验箱2.Pc机3.Linux系统服务器三.实验过程及实验结果1.连接电脑箱2.设置交叉编译环境启动putty.exe登陆192.168.1.1163.添加软件包至实验目录:①[shiyan@localhost ~]$ cd /home/shiyan②[shiyan@localhost ~]$ tar –zxvf arm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gztar -zxvf arm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gz③[shiyan@localhost201203110210]$exportPATH=$PATH:/home/shiyan/201203110210/opt/crosstool/arm-linux/gcc-3.4.4-glib-2.3.5/arm-linux/bin④[shiyan@localhost 201203110210]$ setOSTYPE=linux-gnuPATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/shiya n/bin:/home/shiyan/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin:/ho me/shiyan/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin:/home/shiyan /opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin可以看出路径已添加⑤[shiyan@localhost 201203110210]$ arm-linux-g再按tabarm-linux-g++ arm-linux-gcc arm-linux-gcc-3.4.4 arm-linux-gccbug arm-linux-gcov⑥[shiyan@localhost 201203110210]$ arm-linux-gccarm-linux-gcc: no input files此时出错,无此文件3.测试程序①创建hello.c[shiyan@localhost ~]$ vi hello.c#include<stdio.h>int main(){printf("jin123");return 0;}:wq②查看是否生成文件[shiyan@matrix 201203110210]$ lsarm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gz hello.c已经生成③打开hello.c[shiyan@localhost ~]$ ./hello.c-bash:/hello cannot execute binary file表示无法在服务器上执行④交叉编译hello.c[shiyan@localhost ~]$ arm-linux-gcc -o hello hello.c⑤将文件拷贝到nfs下[shiyan@localhost ~]$ cp hello /home/shiyan/nfs⑥挂载服务器到板子上/ $ mount –tnfs -o nolock 192.168.1.116:/home/shiyan/nfs/mnt/nfs/ $cdmnt/nfs⑦打开hello文件/ $./hello结果输出:Jin 123四.实验总结上述实验可以得出,交叉编译的二进制可以在板子上运行,却不能在服务器上运行,很好的认清了交叉编译的意义和功能。
模拟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/LINUX体系及编程》课程实验课程名称UNIX/LINUX体系及编程||专业班级:学生姓名:学号:成绩:指导教师:阎蕾实验日期:2014.11UNIX/LINUX体系及编程》课程实验任务书一、目的与要求1.掌握UNIX/Linux系统的目录和文件管理命令。
2.掌握shell的输入输出重定向,编写shell脚本文件。
3.编写C语言程序,使用GCC编译,使用GDB调试。
4.掌握make工具,撰写makefile文件,完成C程序的自动编译。
5.要求每人能独立完成实验。
二、主要内容1.用pwd命令显示用户主目录的路径名,用date命令查看当前日期和时间,用who命令查看当前登录在系统中的用户列表,利用who命令选项查看当前系统中的用户总数和系统启动时间。
比较whoami 和who am i显示的结果区别。
2.用vi编辑器,先在用户主目录中创建文件,编辑文件。
并作统计文件大小,重新编辑文件。
字符串替换等工作3.用find命令查找名为passwd的文件。
从用户主目录开始,查找所有1天前创建的文件。
查找文件属主的文件。
查找1天前被访问过的文件。
4.用重定向符和cat命令创建一个flower脚本文件,完成如下功能。
4.1 显示用户名。
显示用户当前系统中的进程。
4. 2 判断当前用户是否为root用户:若是root用户,则根据命令行参数n,清除/var/log目录下的某个文件的内容但保留其最后的n行的内容,若没有参数,则保留10行;若不是root用户,提示出错。
5.编写C程序,编译、运行、调试程序。
用c语言程序编程实现:将输入的十进制数输出为相应的十六进制数。
并撰写makefile,使用make工具完成自动编译。
三、进度计划四、实验成果要求1.将操作截图贴报告中,包括命令、脚本、C代码、makefile文件内容及运行结果。
五、考核方式1.以实验报告作为实验成绩。
学生姓名:指导教师:阎蕾2014年9月9日一、实验目的及要求6.掌握UNIX/Linux系统的目录和文件管理命令。
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语言程序。
数据结构大型实验报告-用户登入系统模拟
数据结构大型实验报告---用户登录系统模拟姓名:金天昊班级:网络工程一班浙江工业大学计算机学院目录实验分析 (3)实验目的 (3)实验基本数据结构 (3)实验基本流程图 (3)输入的形式和输入值的范围 (4)输出的形式 (4)程序所能达到的功能 (4)调试分析 (5)讨论等系调试过程中的主要技术问题以及具体解决方法 (5)技术难点分析 (5)测试结果 (7)心得体会 (11)附录 (12)实验分析实验目的在登录服务器系统时,都需要验证用户名和密码,如telnet远程登录服务器。
用户输入用户名和密码后,服务器程序会首先验证用户信息的合法性。
由于用户信息的验证频率很高,系统有必要有效地组织这些用户信息,从而快速查找和验证用户。
另外,系统也会经常会添加新用户、删除老用户和更新用户密码等操作,因此,系统必须采用动态结构,在添加、删除或更新后,依然能保证验证过程的快速。
请采用相应的数据结构模拟用户登录系统,其功能要求包括用户登录、用户密码更新、用户添加和用户删除等。
实验基本数据结构实验基本流程图输入的形式与输入值的范围用户名与密码均采用string形输出的形式界面输出选择框程序所能达到的功能模拟用户登入系统实现用户登录、注册、删除、修改密码以及信息的本地存储和读取。
调试分析讨论分析调试过程中的技术问题以及具体的解决方法①问题:AVL树元素的添加删除需要修改路径上的所有节点的平衡因子方法:引入一个栈类(Stack)用于将搜索目的节点路径上的节点依次压入栈中②问题:用户名与密码可能是数字也可能是字母亦可能是数字与字母的组合方法:统一采用string技术难点分析技术难点:实现二叉树的平衡,即树的旋转二叉树的旋转共四种,分别为左旋、右旋、左右旋、右左旋转,对应情况如下:左旋右旋左右旋右左旋测试结果用户的注册、登录、删除、修改密码以及信息的本地存储和读取customer.txt文件中)。
①用户登录②用户注册③用户删除④用户密码修改登录时测试不存在的用户或者错误的密码用户删除时验证密码错误提示删除失败修改密码时验证密码错误提示修改失败心得体会与大一不同,这一次的大型实验是我一个人独立完成的。
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。
你就可以去喝茶了,到时间后系统会自动执行它。
浙江工业大学 嵌入式系统原理实验(1-8)
嵌入式实验(1-8)第一次实验1. 用汇编语言编程实现:若R0=0,则转移到标号L0处;若R0=1,则转移到标号L1处;若R0=2,则转移到标号L2处。
否则不转移。
2. 用汇编语言编程实现128位整数减法。
3. 用汇编语言编程实现:有4个数分别存放在R0~R3中,编程实现:4数相乘,其积存放在R4中。
4. 用汇编语言编程实现:R0中的高24位[31:8]保持不变,低8位[7:0]设置为0xB。
5. 用汇编语言编程实现:快速中断的使能和禁止。
第二次实验1. 用汇编语言编程实现:将存储器中起始地址M1处的4个字数据复制到地址M2处。
2. 用汇编语言编程实现:100+101+102+…+200,其和存于R0。
3. 用汇编语言编程实现:从存储器中起始地址M1处的20个字节数据中,找出一个最小数存放在R0中。
4. 利用跳转表的思想编写一个汇编子程序,根据键入的值(存放在R0中)不同来完成不同的子程序跳转(假设有四个子程序SUB0、SUB1、SUB2、SUB3)。
第三次实验1 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,完成字符串STR1与STR2内容的互换(假设STR1和STR2长度一致)。
2. 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,将输入的20个字节数据,从大到小加以排序,大数在前,小数在后。
3. 用C语言和汇编语言混合编程实现:用汇编语言完成对C语言全局变量的访问。
假设CV AR1和CV AR2是C语言中定义的全局变量,请用一段汇编语言访问它们,完成两者的相加运算,结果存放在CV AR1中。
第四次实验1. 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,完成两个字符串的比较,并返回比较结果。
如果比较字符串相同,返回1,否则返回0。
2. 用C语言和汇编语言混合编程实现:请完成一段字符串“Hello Zhejiang University of Technology!”的拷贝,要求主程序用C语言编写,字符串拷贝子程序用汇编语言编写。
模拟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)总结自己的设计体会;编程语言及操作系统平台不限。
201005浙江工业大学计算机、软件学院实习报告格式模板
计算机/软件学院学生实习报告(2011届本科毕业生)□基础实习□提高实习实习题目: (三号黑体,居中, 不得超过30个汉字) (论文题目可分两行书写)学生姓名:学软件指导教师:软件通专业班级:软件工程2006级(X)班所在学院:计算机/软件学院提交日期:2010年6月目录(三号黑体居中)以下目录内容是自动产生的,可以点击鼠标右键并选择“更新域”进行自动更新,自动更新之后将小节标题再缩进两格对齐;其中关于字体大小的说明是原文带下来的,不必理会。
第一章实习基本情况(三号黑体居中) (1)1.1节标题(四号黑体左起顶格打印,上面空两行) (1)1.1.1小节标题(小四号黑体左起顶格打印) (1)1.2节标题 (1)1.2.1小节标题 (1)第二章图表(三号黑体居中) (2)2.1节标题(四号黑体左起顶格打印,上面空两行) (2)2.1.1小节标题(小四号黑体左起顶格打印) (2)2.2节标题(四号黑体左起顶格打印) (3)2.2.1小节标题(小四号黑体左起顶格打印) (3)第三章报告主体(三号黑体居中) (4)3.1节标题(四号黑体左起顶格打印,上面空两行) (4)3.1.1小节标题(小四号黑体左起顶格打印) (4)3.1.2小节标题 (4)3.2节标题 (4)3.2.1小节标题 (4)参考文献(三号黑体居中) (5)致谢(三号黑体居中) (8)附录(三号黑体居中) (9)(要求学生对实习的主要内容、本人学习与工作的表现、收获与体会、以及存在的问题等方面进行全面总结。
)第一章实习基本情况(三号黑体居中)1.1 节标题(四号黑体左起顶格打印,上面空两行)1.1.1小节标题(小四号黑体左起顶格打印)实习报告正文主体,一般由标题、正文、图、表格和公式等内容构成。
写作内容可因实习项目的不同而变化报告正文采用小四号宋体打印,英文正文采用小四号Times New Roman. 1.2 节标题1.2.1小节标题可以根据需要,分多个小节。
基于UNIX操作系统编程 实验大纲
一、课程名称:《基于UNIX操作系统编程》(一)本课程实验总体介绍1、本课程上机实验的任务:通过本实验了解并掌握UNIX操作系统的基本命令的使用,以及输入输出重定向、管道、进程控制、数据输入输出和shell编程等方面的知识。
在充分了解基本原理和基本语法格式的基础上,发挥学生独立分析问题和提出解决方法的能力,鼓励学生综合运用所学知识提出自己独特的和新的实现方案。
2、本课程上机实验简介:本实验包含两个题目,一个是有关数据的输入输出和文件管理;另一个是状态监测和进程控制。
这两个实验题目涉及UNIX系统中的“文件”和“进程”两个基本概念,都是需要在熟练掌握shell编程语言、各种基本命令、以及输入输出重定向和管道的基本功能的基础上,鼓励学生不拘形式,充分发挥自己的创造力,设计出既满足功能要求,又别具一格的程序模块。
3、本课程适用专业:计算机相关专业。
4、本课程上机实验涉及核心知识点:核心知识点:文件、进程、基本命令、输入输出重定向、管道、shell编程语言、程序设计、数据输入和输出、进程状态监控、文件读写和程序运行控制等。
5、本课程上机实验重点与难点:数据输入输出、文件读写和进程状态控制。
6、本课程上机实验运用软件名称:UNIX操作系统7、总学时:课程实验:16学时8、教材名称及教材性质(自编、统编、临时):名称:《UNIX初级教程》(第五版)性质:统编9、参考资料:(二)实验项目基本信息实验项目11、实验项目名称:文本建立和输入2、实验项目的目的和任务:目的:使用户熟悉UNIX的基本SHELL程序设计方法,包括命令行参数检测、变量设置、文本建立和输入、程序运行控制和输入输出重定向任务:编写一个SHELL程序,将用户从键盘输入的文本附加到一个指定的文件中。
如果该文件不存在,则新建立该文件;如果该文件已经存在,则把键盘输入的文本附加到该文件后面。
输入内容及行数不限定,以空行表示输入结束。
运行结束时显示该文件内容。
UNIX系统实验指导书
实验1 UNIX基本操作1、实验目的掌握 UNIX (LINUX)系统的基本使用方法:系统启动、注销、关闭和关机;帐号管理;文件系统的日常管理;文件系统的权限控制。
2、实验工具及环境UNIX(LINUX)系统网络环境或单机。
3、实验计划学时2学时上机实际操作。
4、实验内容及操作步骤⑴系统启动和关闭① 使用自己的账户登录UNIX系统,查看系统提示符确定自己使用的shell程序类型别。
◎开机后,系统自检启动后提示login:(输入:root ↙)password:(输入:用户口令↙ ,root用户为redhat )◎ 查看/etc/passwd文件可以获得用户使用的shell# grep $LOGNAME /etc/passwd ↙可能的显示为: user001:*:200:50::/usr/user001:/bin/sh请思考上述命令怎样得到了当前使用的shell类型的?使用下面的命令也可以查看当前shell:# echo $SHELL② 注销和关机命令。
◎ 用户注销使用:$exit ↙或$<ctrl>+<D> ↙或$logout ↙◎ 超级用户关机使用:#shutdown ↙该命令将结束所有的进程,当执行此命令后系统提示“ Safe to Power off or Press Any Key to Reboot ”时可以关闭电源或按任一键重启系统。
◎haltsys(halt),reboot只能由超级用户在单用户模式下使用。
⑵帐号管理① 添加用户,删除用户,修改个人口令后重新进行登录;◎ 添加用户的shell命令:# useradd user08 ↙(Linux系统中可以为 adduser)上述命令采用默认属性, UNIX 也可以使用选项来指定创建帐户的属性:- c comment 用户说明- d directory 指定用户主目录- m 若用户的起始目录不存在则创建- g group 指定用户所属组- s shell 指定用户使用的shell- u uid 为用户分配标识◎ 修改口令对linux系统而言,用adduser增加的用户应该随即用passwd命令来修改口令。
网络操作系统实验报告
一、实验目的1.掌握UNIX系统的目录和文件管理命令。
二、 2.掌握shell的输入输出重定向操作符。
三、 3.编写shell脚本文件,并调试、执行它。
四、实验要求1.要求每人能独立完成实验。
能独立搭建UNIX操作系统, 掌握OpenSolaris的安装、运行和使用。
2.使用自己的账号登录UNIX 系统, 用户名为:学号和姓名汉语拼音全拼。
在用户主目录下, 新建子目录, 子目录名为:专业和班级(可以是拼音)。
3.在新建的子目录下完成全部练习, 所有的操作练习均要完整截图显示。
4.所有的实验内容必须在命令行方式下进行操作。
五、纸制版的封面单面打印, 其他页面必须双面打印。
全班刻一张光盘。
六、实验内容1.用uname -a命令显示操作系统的版本。
2.用pwd命令显示用户主目录的路径名。
3.用date命令查看当前日期和时间。
分别比较%w和%a, %y和%D。
4.用who命令查看当前登录在系统中的用户列表。
利用who命令选项查看当前系统中的用户总数和系统起动时间。
比较who am I 、whoami 和who am i显示的结果区别。
5.用vi编辑器, 先在用户主目录中创建名为notes的会议通知文件, 编辑notes文件。
(1)统计文件大小, (2)重新编辑文件notes, 加上一个适当的标题, (3)修改notes中开会的时间和地点。
(说明notes文件内容不能以数字和简单的字母组成, 必须是一段有内容的英文, 至少是10行以上的描述)6.用find命令查找名为passwd的文件。
从用户主目录开始, 查找所有1天前创建的文件。
寻找所有名为xyz大小为20个文件块的文件。
查找所有修改过的文件。
7.用重定向符和cat命令创建一个unm脚本文件完成如下功能。
并运行它。
a.显示用户名。
b.显示用户的主机名。
c.显示当前shell名称。
d.打印出当前目录名并列出目录中的文件信息。
编写简单的C程序, 编译和运行程序。
unix实验指导
《UNIX操作系统》实验教程目录实验一Unix操作系统使用 (2)实验目的 (2)实验时间 (2)实验内容 (2)实验二文件系统观察 (5)实验目的 (5)实验时间 (5)实验要求 (5)实验三认识进程 (7)实验目的 (7)实验时间 (7)实验要求 (7)实验四vi编辑器 (9)实验目的 (9)实验时间 (9)实验要求 (9)实验五Unix下shell语言编程 (10)实验目的 (10)实验时间 (10)实验内容 (10)注意事项1.实验报告作为《UNIX操作系统》课程的主要考核部分。
2.实验步骤部分务必认真填写,每个实验必须有以下部分(见示例):a)完成实验要求的工作,需列出执行命令和执行结果;b)对执行结果的详细分析和解释;c)错误以及错误原因;d)文档格式清晰3.实验报告要认真填写:严禁基本雷同严禁格式混乱严禁网上抄袭严禁点名不到实验一Unix操作系统使用实验目的1.熟练使用Unix字符界面的常用命令2.熟练使用Unix文件系统命令3.熟练使用Unix的在线求助系统实验时间4学时实验内容可选择“系统工具/终端”进入shell:键入 exit或按 [Ctrl]-[D]即可退出 shell。
(一)常用UNIX命令1.查看当前登陆在系统中的用户列表2.查看的who帮助,学习如何使用who查看系统中的用户总数和系统启动时间3.使用简单的密码(如用户名、123456等)修改密码4.使用满足UNIX要求的密码修改密码5.重启并使用新密码登录6.查看当前的日期和时间7.查看自己的生日是星期几8.查看2001年的日历表9.使用less命令查看系统初始化配置(less /etc/inittab),可以使用下列快捷键控制∙空白键:向下翻页∙[pagedown]:向下翻页∙[pageup]:向上翻页∙/字串:向下搜索∙?字串:向上搜索∙n :重复前一个搜寻(与/ 或? 有关)∙N :反向重复前一个搜寻(与/ 或? 有关)∙q:退出10.查看主机名11.查看系统启动以来已运行时间12.查看系统版本(二)UNIX文件系统命令1.在用户主目录内新建一目录,该目录须以你的学号目录名(后面假设目录名为123)2.显示当前目录3.改变到用户主目录4.列出当前目录的文件,分别a)查看文件的权限b)显示隐藏文件c)结果按修改时间排序d)结果按修改时间逆序排序5.改变到123目录下,创建名为你姓名的新文件(提示,创建文件可以使用命令:touch文件名,后面假设该文件名为file)6.删除file7.删除123目录8.在主目录重新创建名为你姓名的新文件,以需要确认的方式删除该文件(三)UNIX文件系统命令1.在用户主目录下创建名为你的学号的目录(后面假设目录名为123)2.将123目录重命名为你的名字(后面假设该目录名为dir)3.把用户主目录下的所有文件复制到dir目录下4.创建名为你姓名的新文件(后面假设该文件名为file)5.分别使用数字和符号两种方式将file的权限更改为-rw-r—r--6.创建file的硬链接7.将file更名为large.old8.将file移到dir下9.执行以下命令,并用ls命令及其-i和-l选项观察i节点数和链接数的变化:a)改变的dir目录下b)创建file文件的别名,成为姓名+你的学号(后面设为file123)c)列出所有以file开头的文件d)复制file为file.olde)列出所有以file开头的文件f)列出所有扩展名为old的文件g)使用命令touch file更改file状态,同时观察file123文件的状态变化h)回到用户主目录i)删除dir目录下的所有文件名含有file字符串的文件j)删除dir目录下的文件k)列出用户主目录文件10.保存用户主目录中所有7天前创建的文件列表11.查找名为passwd的文件12.查找名为profile的文件13.查找所有多于10天的文件实验二文件系统观察实验目的1.进一步掌握文件系统的基本概念2.学习对文件和文件系统的观察和操作实验时间2学时实验要求1.分别以root和普通用户身份登录并进入各自的主目录,分别报告当前路径。
无盘工作站网络下DOS/UNIX双重操作系统环境的实现
无盘工作站网络下DOS/UNIX双重操作系统环境的实现陈庆章
【期刊名称】《计算机时代》
【年(卷),期】1999(000)011
【总页数】3页(P1-3)
【作者】陈庆章
【作者单位】浙江工业大学
【正文语种】中文
【中图分类】TP393.1
【相关文献】
1.试议建立同时支持UNIX和DOS的无盘工作站网络环培 [J], 陈庆章
2.UNIX操作系统下DOS软件的使用 [J], 胡俭
3.DOS无盘工作站升级为Windows 2000操作界面的实现 [J], 刘兴云;何惠华;张道华;司佑全
4.支持DOS和UNIX双重操作系统的无盘工作站环境的实现 [J], 陈庆章
5.在不同的操作系统环境下用Socket实现网络实时通信 [J], 信江艳;陈代川
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟 Unix 文件系统
软件工程(2+2)2 班 201326740214 唐高望 201326740226 殷烨露 201326740220 项耀军
一、 实验要求
1.设计和实现一个简单的文件系统,要求包括目录、普通文件和文件的存 储
2.文件系统的目录结构采用类似 Linux 的树状结构; 3.要求模拟的操作包括:
if(i < InputName.length()){ //不再当前目录下创建;//截断路径 int LastF; for(LastF = (InputName.length() - 1);InputName[LastF] !=
F;LastF--); char Path[50]; Path[LastF] = '$'; for(int j = 0;j<LastF;j++){ Path[j] = InputName[j]; } _NowDirID = FindPath(_NowDirID,Path); if( _NowDirID == 0) return false;
//检测是否有重名 for(int CurID = fcb[dFilePid].sID ; CurID != -1 ; CurID = fcb[CurID].nID ){
if(fcb[CurID].F == 2 && fcb[CurID].Name == InputName){ cout<<"目的目录下有同名文件,操作失败...\n"; return false;
string RemName = ""; for(LastF++; LastF < InputName.length() ;LastF++){
}else{ break;
} if(Index[3][IndexID] != -1){
//使用了间接索引; IndexID = Index[3][IndexID]; BlockID = Index[1][IndexID]; WriteBitMap( 0 ,BlockID); Index[0][IndexID] = 0; }else{ break; } } SaveIndexAndBitmap(); } //相邻目录或文件建立连接 int pDironePointDirID = fcb[_FileIDpID].sID; int pDirtwoPointDirID = fcb[pDironePointDirID].nID; int CurID = pDirtwoPointDirID; for(; fcb[CurID].nID != FileID ;CurID = fcb[CurID].nID); fcb[CurID].nID = fcb[FileID].nID; fcb[FileID].F = 0; }
string InputName; cin>>InputName; char F = '\\';
//检测输入是否正确 if(InputName[InputName.length()-1] == F){
cout<<"给出的文件名有误..."<<endl; return false; }
//检测是否在当前目录下创建 int i; for(i = 0;i < InputName.length() && InputName[i] != F;i++);
return true; } bool mvDir(int _NowDirID){
int sDirPid; intFindDirID(_NowDirID); if( sID == -1) return false; int onepointDirID = fcb[sID].sID; int twopointDirID = fcb[onepointDirID].nID; sDirPid = fcb[twopointDirID].sID;
int RmEmptyDir(int DirID){ //删除空目录,返回父目录; fcb[DirID].F = 0; int onePointDirID = fcb[DirID].sID; fcb[onePointDirID].F = 0; int twoPointDirID = fcb[onePointDirID].nID; fcb[twoPointDirID].F = 0; int ReturnID = fcb[twoPointDirID].sID;
string RemName = ""; for(LastF++; LastF < InputName.length() ;LastF++){
RemName = RemName + InputName[LastF]; } InputName = RemName; }
dFilePid = _NowDirID;
(512B)包含 32 个目录项。在目录项中,第 1、2 字节为相应文件的外存 i 节点号,
是该文件的内部标识;后 14B 为文件名,是该文件的外部标识。所以,文件目
录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存 i 节点号,
由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存
string InputName; cin>>InputName; char F = '\\';
//检测输入是否正确 if(InputName[InputName.length()-1] == F){
cout<<"给出的目录名有误..."<<endl; return false; }
//检测是否在当前目录下创建 int i; for(i = 0;i < InputName.length() && InputName[i] != F;i++);
}
void RmFile(int FileID,int _FileIDpID){
//删除文件
if(fcb[FileID].sID != -1){
//释放索引表
int IndexID;
int BlockID;
IndexID = fcb[FileID].sID;
BlockID = Index[1][IndexID];
a) 目录的添加、删除、重命名; b) 目录的显示(列表) c) 文件的添加、删除、重命名 d) 文件和目录的拷贝 4.用户进入时显示可用命令列表;用户输入 help 时显示所有命令的帮助文 档; 输入某个命令--?(或者—help)时显示该条命令的使用说明 5.用户输入 exit 时退出该系统 6.实验实现基于 linux 平台; 7.实验开发语言可以选用 C/C++
四、 部分源代码
bool RemoveFile(int _NowDirID){ int FileIDpID; int FileID = FindFileID(_NowDirID,&FileIDpID); if(FileID == -1){ cout<<"文件名有误,操作失败...\n"; return false; } RmFile(FileID,FileIDpID); SaveFCB(); return true;
WriteBitMap( 0 ,BlockID);
//
释放文件块;
Index[0][IndexID] = 0;
//
释放索引表;
while(1){
if(Index[2][IndexID] != -1){ BlockID = Index[2][IndexID]; WriteBitMap( 0 ,BlockID);
} }
fcb[sID].Name = InputName; fcb[sID].nID = -1;
//检测是否在相同目录下 if(sFilePid != dFilePid){
int CurID = fcb[dFilePid].sID; while(fcb[CurID].nID != -1) CurID = fcb[CurID].nID;
储介质以 512B 为单位划分为块,从 0 开始直到最大容量并顺序加以编号就成了
一个文件卷,也叫文件系统。UNIX 中的文件系统磁盘存储区分配图如下:
0#
1#
2#
…
K# K+1# K+2# K+3# …
n#
引导区 管理区
i 节点区
文件存储区
本次实验设计是要实现一个简单的模拟 UNIX 文件系统。我们在磁盘中申请 一个二进制文件模拟 UNIX 内存,依次初始化建立位示图区,I 节点区,数据块 区。并给已打开的文件建立文件打开表。
命令定义如下
ls pwd cd mkdir rmdir mv cp rm passwd
显示文件目录 显示当前目录 改变当前目录 创建子目录 删除子目录 改变文件名 文件拷贝 文件删除 修改用户口令
二、 实验原理
UNIX 采用树型目录结构,每个目录表称为一个目录文件。
一个目录文件是由目录项组成的。每个目录项包含 16B,一个辅存磁盘块
//相邻目录或文件建立连接 int pDironePointDirID = fcb[ReturnID].sID; int pDirtwoPointDirID = fcb[pDironePointDirID].nID; int CurID = pDirtwoPointDirID; for(; fcb[CurID].nID != DirID ;CurID = fcb[CurID].nID); fcb[CurID].nID = fcb[DirID].nID; return ReturnID; }