当前位置:文档之家› 操作系统原理实验指导书2012

操作系统原理实验指导书2012

操作系统原理实验指导书2012
操作系统原理实验指导书2012

计算机科学与技术专业适用

操作系统原理

实验指导书

南京工业大学信息科学与工程学院

2008年4月

目录

一、实验目的 (1)

二、实验要求与内容 (1)

2.1 实验题目 (1)

2.2 初始目录结构 (1)

2.3 系统操作命令简介 (1)

2.4 几点说明 (2)

三、设计方案 (3)

3.1 采用FAT文件格式 (3)

3.2 目录项(FCB)结构 (3)

3.3 根目录 (4)

3.4 主要函数 (4)

3.5 用户已打开文件表(UOF) (5)

3.6 程序中有关变量的说明 (5)

1. 当前目录curpath数据结构 (5)

2. 删除文件恢复表udtab数据结构 (5)

3. 全局变量ffbp和Udelp (5)

4. 全局数组comd[5][PATH_LEN] (6)

5. 全局数组temppath[PATH_LEN] (6)

3.7 主要函数的流程图 (6)

1. 主函数main()的流程图 (6)

2. create命令流程图 (6)

3. cd命令流程图 (7)

4. del命令流程图 (8)

5. dir命令流程图 (8)

6. md命令流程图 (9)

7. rd命令流程图 (9)

8. open命令流程图 (10)

9. close命令流程图 (10)

10. write命令流程图 (11)

11. read命令流程图 (12)

12. copy命令流程图 (12)

13. ren命令流程图 (14)

14. attrib命令流程图 (14)

15. undel命令程序流程图 (15)

16. FindPath( )函数程序流程图 (15)

《操作系统实验》指导书

17. FindFCB( )函数程序流程图 (15)

18. ProcessPath( )函数程序流程图 (17)

四、实验任务 (18)

4.1 修改md命令 (18)

4.2 修改Help命令或命令行预处理程序 (18)

1. 修改help命令的显示方式和显示内容 (18)

2. 修改命令行预处理程序 (18)

4.3 新增fc命令,实现两个文件的比较 (18)

4.4 新增replace命令,实现文件取代 (18)

4.5 新增move命令,实现文件“搬家”及子目录改名 (19)

4.6 新增batch命令,实现批处理 (19)

4.7 修改close、type等命令,允许不带文件名参数 (21)

4.8 完善copy命令 (22)

1. 改正某些缺陷 (22)

2. 允许覆盖同名文件(选做内容) (22)

4.9 增加输出重定向功能(选做内容) (22)

1. type命令的输出重定向形式 (22)

2. dir命令的输出重定向形式 (23)

4.10 修改del、copy等命令,使其可以使用统配符*(选做内容) (23)

4.11 修改copy命令,增加合并复制功能(选做内容) (23)

4.12 修改程序,实现多磁盘文件系统(选做内容) (24)

4.13 修改磁盘块容量(选做内容) (24)

4.14 修改undel命令(选做内容) (25)

1. 删除文件恢复表udtab不用数组存储,而直接存储在磁盘空间 (25)

2. 修改undel命令的执行方式并增强其功能 (25)

3. 采用类似于Windows的回收站方案 (26)

4.15 修改read命令,允许不带文件名参数(选做内容) (26)

4.16 修改write命令,允许不带“文件名”参数(选做内容) (26)

4.17 修改write命令,增加“删除”方式(选做内容) (27)

五、模拟文件管理系统中操作命令使用说明 (27)

六、学生应提交的实验材料 (33)

6.1 《实验报告》 (33)

6.2 源程序清单及其可执行文件 (33)

6.3 程序测试、运行的结果 (33)

操作系统原理实验指导书

一、实验目的

理解操作系统文件系统的某些工作原理,学习文件操作命令的设计方法。通过实验,使学生加深对操作系统文件系统某些问题的理解,归纳学习方法和思考方法,做到理论联系实际。培养学生分析问题、解决问题的能力,提高学生软件设计能力和逻辑思维能力。

二、实验要求与内容

2.1 实验题目

模拟文件管理系统的设计

设计实现一个简单的模拟文件管理系统,包括目录文件、普通文件,以及一些文件操作命令和目录操作命令(例如可以模仿DOS的有关命令)。具体要求如下列2.2和2.3。

2.2 初始目录结构

程序初始化时构造如图1所示的目录结构。

图中auto是(普通)文件(初始化时假设是空文件),其余都是子目录(目录文件)。

2.3 系统操作命令简介

在模拟文件管理系统中,要求可以实现如下操作:

?改变当前目录:cd [<目录名>]。当前目录(工作目录)转移到指定目录下。指定目录

不存在时,给出错误信息。若命令中无目录名,则显示当前目录路径。

?创建文件:create <文件名> [<属性>]。创建一个指定名字的新文件,即在目录中增加

一目录项,不考虑文件的内容。对于重名文件给出错误信息。

?删除文件:del <文件名>。删除指定的文件,即清除其目录项和回收其所占用磁盘空间。

对于只读文件,删除前应询问用户,得到同意后方能删除。当指定文件正在使用时,显

示“文件正在使用,不能删除”的信息,当指定文件不存在时给出错误信息。

?显示目录:dir[ <目录名>[ <属性>]]。显示“目录名”指定的目录中文件名和第一级

子目录名。若指定目录不存在,则给出错误信息。

?创建目录:md <目录名>。在指定路径下创建指定目录,若没有指定路径,则在当前目

录下创建指定目录。对于重名目录给出错误信息。

?删除目录:rd 目录名。若指定目录为空,则删除之,否则,给出“非空目录不能删除”

的提示。不能删除当前目录。

?打开文件:open <文件名>。若指定文件存在且尚未打开,则打开之,并在用户打开文

件表(UOF)中登记该文件的有关信息。若指定文件已经打开,则显示“文件已打开”

的信息;若指定文件不存在,则给出错误信息。只读文件打开后只能读不能写。

?写文件:write <文件名> [<位置>][insert]。在文件的指定位置处写入新内容。

?读文件:read <文件名> [<位置m> [<字节数n>]]。从已打开文件中读指定内容并显示。

?关闭文件:close <文件名>。若指定文件已打开,则关闭之,即从UOF中删除该文件对

应的表项。若文件未打开或文件不存在,分别给出有关信息。

?显示文件内容:type <文件名>。显示指定文件的内容。若指定文件不存在,则给出错

误信息。

?复制文件:copy <源文件名> <目标文件名>。命令功能:为目标文件建立目录项,分配

新的盘块,并将源文件的内容复制到目标文件中。

?文件改名:ren <原文件名> <新文件名>。将指定文件的名字改为“新文件名”。若原

文件不存在,给出错误信息。若原文件存在,但正在使用,也不能改名,同样显示出错信息。应检查新文件名是否符合命名规则以及是否存在重名问题。

?显示、修改文件或目录属性:attrib <文件名>[ <文件属性>]。若命令中无“文件属性”

参数,则显示指定文件的属性;若命令中有“文件属性”参数,则修改指定文件的属性。

此命令对目录名同样适用。

2.4 几点说明

?命令中的目录名和文件名可以统称为路径名,支持绝对路径(又称全路径)和相对路径;

?路径名是由目录结构中各级目录文件名和普通文件名(必定是最后一个名)用分隔符“/”

连接而成的字符串组成。其中以字符“/”开始的路径名是绝对路径,表示从根目录开始;不是以字符“/”开始的路径名是相对路径,表示从当前目录开始。当前目录又称工作目录。

?本系统规定,名字(文件名或目录名)的命名规则如下:

(1) 名字长度不能超过FILENAME_LEN-1个字节,即10个字符(符号常数FILENAME_LEN为

11)。允许输入的名字超过10个字符,但只有前10个字符有效;

(2) 名字一般由字母(区分大小写)、数字、下划线等组成,名字允许是汉字;

(3) 名字不能包含以下16个字符之一:

" * + , / : ; < = > ? [ \ ] | space(空格)

(4) 名字中允许包含字符“.”,但它不能是名字的第一个字符,故“.”、“.abc”、

“..”和“..abc”等等都是不合法的名字。“..”代表父目录是例外,但它并非

由用户通过键盘输入的名字,故不需要符合名字的命名规则。

?本系统中,命令名(如dir)和命令参数中的有关关键字(如append或app、insert或ins

等)不区分大小写。文件名和目录名中的字母是区分大小写的。

?命令格式中,“<...>”代表某个字符串,“[ ]”中内容为可选项。

三、设计方案

本系统提供的参考程序在C++环境中开发,下面介绍系统的设计方案。

3.1 采用FAT文件格式

文件在磁盘上的组织采用FAT文件格式,为了设计程序方便,本系统的FAT表用整型数组FAT[K]表示(K为总盘块数,本系统中假定K=5000,即共有5000个盘块),而实际的操作系统,FAT表是存储在磁盘中的,当系统启动时装入内存。FAT[0]中存储空闲盘块数。

磁盘空间用字符数组Disk[K][SIZE] (其中SIZE为每个盘块的字节数,即盘块的容量)表示。

本系统设定磁盘块容量为64。

3.2 目录项(FCB)结构

本模拟系统的文件目录项(FCB)结构如下:

struct FCB //每个目录项16个字节

{

char FileName[11]; //文件名最多10个字符且以'\0'结尾

char Fattrib; //文件属性

short int Addr; //文件首块号

short int Fsize; //文件长度

};

◆为简单,本系统不考虑文件扩展名,文件名为1~10个字符,以结尾标记'\0'存储(实

际操作系统目录项中文件名一般没有结尾标记),命令中输入的文件名若超过10个

则截取前10个字符。

◆文件属性为1个字节,其二进制位对应的属性如下图所示。

◆文件的首块号Addr=0代表空文件(此时文件长度Fsize=0)。文件名(目录名)的第一

个字符的ASCII码为0E5H或00H,代表空目录项。其中0E5H是目录项被删除后的标志,

00H代表该目录项从未使用过。

◆每个目录项占用16个字节,因系统中假设磁盘块大小SIZE=64,因此,每个盘块可

存储4个目录项。

◆除根目录外,每个目录中的第一个目录项存储父目录的FCB(该目录项的名字为

“..”),其地址是父目录的首块号,它的作用是相当于指向父目录的指针,用于

实现从该目录退回父目录。目录项“..”是在创建目录时,由系统自动建立的,它

不能被rd命令删除。

3.3 根目录

本系统假设根目录存储在1~30号盘块中,即存储在Disk[1]~Disk[30]的盘快中。因每个盘块可存储4个目录项,故本系统根目录中的文件目录项及子目录项最多共计120个。从31号盘块开始为文件区,用于存储文件及子目录。

本系统初始化时,图1所示的目录树的磁盘分配情况如图2所示。

图2 初始目录树的磁盘空间分配

3.4 主要函数

系统参考程序的主要函数如下:

main() 主函数

AttribComd() attrib命令处理函数

CdComd() cd命令处理函数

CloseComd() close命令处理函数

CopyComd() copy命令处理函数

CreateComd() Create命令处理函数

DelComd() del命令处理函数

DirComd() dir命令处理函数

MdComd() md命令处理函数

OpenComd() open命令处理函数

RdComd() rd命令处理函数

ReadComd() read命令处理函数

RenComd() ren命令处理函数

TypeComd() type命令处理函数

UndelComd() undel命令处理函数

WriteComd() write命令处理函数

ParseCommand() 分析、分解命令行

ExecComd() 执行命令

FindPath() 查找指定目录路径的首块号

FindFCB() 查找指定文件(或目录)的首块号

ProcessPath() 将路径名分离成目录路径与文件名两部分

3.5 用户已打开文件表(UOF)

设置一张“用户已打开文件表”(UOF),用于记录用户当前正在使用文件的情况。本系统允许用户最多同时打开或建立S个文件,故用户已打开文件表UOF共有S个登记栏。

用户请求打开或建立一个文件时,相应的文件操作把有关该文件的信息登记到UOF中。

UOF表项的结构如下:

struct UOF //定义用户打开文件表的结构

{

char fname[PATH_LEN]; //文件全路径名

char attr; //文件属性,1=只可读;0=可读写

short int faddr; //文件的首块号

short int fsize; //文件大小(字节数)

FCB *fp; //指向该文件的目录项指针

short int state; //状态:0=空表项;1=新建;2=打开

short int readp; //读指针,指向某个要读的字符位置,0=空文件

short int writep; //写读指针,指向某个要写读的字符位置

};

本程序中,用户打开文件表用数组UOF uof[S]表示,其中S=32,即最多允许同时打开32个文件。读指针和写指针用于指出对文件进行存取的当前位置。fp指向该UOF登记项对应的文件的目录项。系统启动时, UOF常驻内存,退出系统时,UOF不需要保存。

3.6 程序中有关变量的说明

1. 当前目录curpath数据结构

struct CurPath {

short int fblock; //当前目录的首块号

char cpath[PATH_LEN]; //当前目录路径字符串

};

当前目录用全局变量curpath存储:CurPath curpath;

根目录的路径字符串cpath是“/”,首块号为1。

2. 删除文件恢复表udtab数据结构

struct UnDel { //恢复被删除文件信息表的数据结构

char gpath[PATH_LEN]; //被删除文件的全路径名(不含文件名)

char ufname[FILENAME_LEN];//被删除文件名

short ufaddr; //被删除文件名的首块号

short fb; //存储被删除文件块号的第一个块号(链表头指针)

//首块号也存于fb所指的盘块中

};

与实际系统不同,为简化程序设计,本系统的被删除文件恢复表用(全局变量)数组udtab 存储,定义为:UnDel udtab[DM];程序中DM值为40,即最多保存40个被删除文件的信息(若删除文件数超过40个时,总是保持最新的40个被删除文件信息)。一个被删除文件恢复后,其在udtab表中的信息将被删除。退出系统时该表可存于文件UdTab.dat中。

3. 全局变量ffbp和Udelp

short Udelp; 它是udtab表的第一个空表项的下标,系统初始化时为0。当Udelp=DM时,表示表已满,需清除最早的表项(后续表项依次前移)。系统退出存盘时,其值保存到0号

盘块Disk[0]中,以便下次启动系统使用。

short ffbp; 它是分配盘块时FAT表的起始指针(下标),这样使得分配盘块类似于分区存储管理的“循环首次适应”分配算法,这有利于被删除文件的恢复。系统退出存盘时,其值也保存到0号盘块Disk[0]中。

4. 全局数组comd[8][PATH_LEN]

char comd[8][PATH_LEN]; 它在分析命令时使用,其中comd[0]存放命令字符串,

comd[1],...,comd[7]用于存放命令参数。

5. 全局数组temppath[PATH_LEN]

char temppath[PATH_LEN]; 用于临时存储文件的路径名(绝对路径名而非相对路径名)。例如,设当前目录为/usr,执行命令open user/boy时,系统将文件boy的全路径名(即绝对路径名) "/usr/user/boy",存放在temppath中,在登记UOF表项时,再将temppath存储到表项的fname域中。其他一些命令处理过程中也会用到temppath。

3.7 主要函数的流程图

1. 主函数main()的流程图

主函数main()的流程图如图3所示。

图3 主函数流程图

2. create命令流程图

创建新文件的命令格式如下:

create <文件名>[ <文件属性>]

命令中的“文件属性”规定了文件的使用权限,分为“只读”、“隐藏”、“系统”等,分别用“r”、“h”、“s”的形式表示,程序内部分别用1、2、4表示(参见3.2节的介绍),它们可以组合使用,例如“rh”表示“只读”且“隐藏”属性的文件,其属性值为3,又如“rhs”表示“只读”且“隐藏”且“系统”属性的文件,其属性值为7。若命令中无可选项“文件属性”,则创建的文件是属性值为0的普通文件,即不是只读文件,也不是隐藏文件,也不是系统文件。

create命令中的“文件名”允许是绝对路径名或相对路径名,例如命令

create /usr/user/boy

表示在根目录的usr子目录中的user子目录中建立文件boy,该文件为普通文件。又如create bin/mail rh

表示在当前目录中的bin子目录中建立文件mail,该文件为“只读”且“隐藏”属性的文件。执行create命令时,当路径不存在或有同名文件,则分别给出错误信息。

create命令处理函数CreateComd()的简化流程图如图4所示。

图4 “创建文件”流程图

3. cd命令流程图

命令形式:cd [<目录名>]。命令功能:改变当前目录,即把指定目录变为当前目录(工作目录)。指定目录不存在时,给出错误信息。若命令中无目录名,则显示当前目录路径名。cd命令的处理函数为CdComd(),其简单流程图如图5所示。

4. del 命令流程图

命令形式:del <文件名>。命令功能:删除指定的文件,即清除其目录项和回收其所占用磁盘空间。对于只读文件,删除前应询问用户,得到同意后方能删除。当指定文件正在使用时,显示“文件正在使用,不能删除”的信息,当指定文件不存在时给出错误信息。del 命令的处理函数为DelComd(),其简单流程图如图6所示。

5. dir 命令流程图

命令形式:dir [<目录名>] [<属性>]。命令功能:显示“目录名”指定的目录中文件名和第一级子目录名。若指定目录不存在,则给出错误信息。如果命令中没有指定目录名,则显示当前目录下的相应内容。若命令中无“属性”参数,则显示指定目录中“非隐藏”属性的全部文件名和第一级子目录名;若命令中有“属性”参数,则仅显示指定属性的文件名和目录名。属性参数的形式是“|属性符号”,其中属性符号有r 、h 和s 三种(不区分大小写),分别表示“只读”、“隐藏”和“系统”三种属性,它们可以组合使用且次序不限。例如“|rh ”,表示要求显示同时具有“只读”和“隐藏”属性的文件和目录名。 dir 命令显示文件名时,同时显示该文件长度;显示目录名时,同时显示“

”的字样。命令使用举例:

dir /usr |h 显示根目录下usr 子目录中全部“隐藏”属性的文件名和子目录名

dir .. 显示当前目录的父目录中全部“非隐藏”属性的文件和子目录名(包

括“只读”、“系统”属性的文件和目录名也显示)。

dir 命令的处理函数为DirComd(),其简单流程图如图7所示。

图6 del 命令函数流程图

图7 dir 命令函数流程图

命令形式:md <目录名>。命令功能:在指定目录路径下创建指定子目录。若没有指定路径,则在当前目录下创建指定子目录。对于重名目录给出错误信息。md命令的处理函数为MdComd()

图8 md命令函数流程图

7. rd命令流程图

命令形式:rd <目录名>。命令功能:删除子目录。若指定目录为空(仅有一个“..”目录项的目录为空目录),则删除之,否则,给出“非空目录不能删除”的提示。不能删除当前目录。rd命令的处理函数为RdComd(),其简单流程图如图9所示。

图9 rd命令函数流程图

命令形式:open <文件名>。命令功能:打开文件。若指定文件存在且尚未打开,则打开之,并在用户打开文件表(UOF)中登记该文件的有关信息。若指定文件已经打开,则显示“文件已打开”的信息;若指定文件不存在,则给出错误信息。open命令的处理函数为OpenComd(),其简单流程图如图10所示。

9. close命令流程图

命令形式:close <文件名>。命令功能:关闭文件。若指定文件已打开,则关闭之,即从UOF中删除该文件对应的表项。若文件未打开或文件不存在,分别给出有关信息。close 命令的处理函数为CloseComd(),其简单流程图如图11所示。

10. write命令流程图

命令形式:write <文件名> [<位置>[ insert]]。

命令功能:向文件中写入信息。

命令中若无“位置”参数,则在写指针所指位置写入文件内容;若提供“位置”参数,则在对应位置写入内容。位置可以是整数n,是指在文件的第n个字节处开始写入(位置从1开始编号)。“位置”参数可以是“append”(前3个字符有效,不区分大小写),表示在文件尾部写入信息;参数“insert”(前3个字符有效,不区分大小写)表示新写入的内容插入到对应位置,对应位置开始的原内容后移。若无参数“insert”,写入内容代替文件原先的内容(改写方式)。写入内容中的“\n”代表“回车”符。写入完毕调整文件长度和写指针值。若文件未打开或文件不存在,分别给出错误信息。本系统约定:刚打开的文件,其写指针指向文件末尾。目前参考程序的write命令只有“插入”和“改写”两种功能,尚未提供“删除”功能。

write命令的处理函数为WriteComd(),其简单流程图如图12所示。

图12 write命令程序流程图

11. read命令流程图

命令形式:read <文件名> [<位置m> [<字节数n>]]。命令功能:从已打开的文件中读文件内容并显示。若无“位置”参数,则从读指针所指位置开始读。若有“位置”参数,则从指定位置处开始读。位置m是指从文件开头第m个字节处读(m从1开始编号)。若无“字节数n”参数,则从指定位置读到文件末尾;若有“字节数n”参数,则从指定位置开始读n个字节。若文件未打开或文件不存在,分别给出错误信息。

read命令的处理函数为ReadComd(),其简单流程图如图13所示。

图13 read命令程序流程图

12. copy命令流程图

命令形式:copy <源文件名> <目标文件名>。命令功能:为目标文件建立目录项,分配新的盘块,并将源文件的内容复制到目标文件中。若目标文件与源文件所在的目录相同,则只能进行更名复制,此时目标文件名不能省;若目标文件与源文件所在的目录不同,则既可更名复制也可同名复制,同名复制时目标文件名可省。

例如,命令

copy mail email

(1) 若当前目录中不存在email(目录或文件),则该命令将当前目录中的文件mail,复制

成当前目录下的文件email;

(2) 若当前目录下存在email,但email是子目录名,则将当前目录中的文件mail,复制到

当前目录中的email子目录内,文件名为mail(同名复制);此时若email目录内已经存在名字为mail的文件或目录,则出现重名错误;

(3) 若当前目录内存在email文件,则出现重名错误(并不询问是否覆盖);

(4) 若当前目录内不存在源文件mail(或者虽然有mail,但它是子目录名),则也报错。【注】

●在同一目录中,各目录项不能重名(不管是文件名还是子目录名)

●上述(2)(3)是为了简化程序设计,真实系统一般与这种处理方式有区别,请参见实习

任务的“完善copy命令”中的叙述。

copy命令的处理函数为CopyComd(),其简单流程图如图14所示。

图14 copy命令程序流程图

13. ren命令流程图

命令形式:ren <原文件名> <新文件名>。功能:文件改名,即将指定文件的名字改为“新文件名”。若原文件不存在,给出错误信息。若原文件存在,但正在使用,也不能改名,同样显示出错信息。应检查新文件名是否符合命名规则以及新文件名是否有重名冲突。

ren命令的处理函数为RenComd(),其简单流程图如图15所示。

图15 ren命令程序流程图

14. attrib命令流程图

命令形式:attrib <文件名> [±<文件属性>]。功能:显示、修改文件或目录属性。若命令中无“文件属性”参数,则显示指定文件的属性;若命令中有“文件属性”参数,则修改指定文件的属性。“文件属性”的形式有“+r或+h或+s”和“-r或-h或-s”两种形式,前者为设置指定文件为“只读”或“隐藏”或“系统”属性,后者为去掉指定文件的“只读”或“隐藏”或“系统”属性。各属性可组合使用且顺序不限。例如:

attrib user/boy +r +h

上述命令的功能是设置当前目录下user子目录中的文件boy为只读、隐藏文件。又如attrib /usr/user/box -h -r -s

上述命令的功能是取消根目录下usr子目录中user子目录中的box文件的“隐藏”、“只读”、“系统”属性。

当命令中指定的文件已打开或不存在,不能修改其属性,给出错误信息;当命令中提供的参数错误,也显示出错信息。

【注】本程序没有考虑属性的相关性和制约性。例如,DOS操作系统中,设置一个文件的“系统”属性时,必须先将该文件的属性设置成“只读”和“隐藏”后,才能设置它为“系统属性”,即设置属性有次序问题。本系统不受这些限制。

attrib命令的处理函数为AttribComd(),其简单流程图如图16所示。

图16 attrib命令程序流程图

15. undel命令程序流程图

命令形式:undel [<目录名>]。功能:恢复指定目录中被删除的文件。

指定目录不存在,报错;命令中不指定目录,则对当前目录进行操作。若目录中无删除的文件,则显示“无文件可恢复”;若目录中有被删除的文件,逐个显示并询问用户,得到肯定回答后则开始恢复之,恢复过程中若发现该文件原先占用的盘块已作它用,则显示“不能恢复”信息;若发现恢复文件与现有文件重名,则请求用户输入一个新名字(也要检查是否发生重名冲突)。恢复成功与失败的文件在udtab中对应的表项都将被删除。

【说明】udtab的表项是在删除文件时填写的。

undel命令的处理函数为UndelComd(),其简单流程图如图17所示。

16. FindPath( )函数程序流程图

函数原型:int FindPath(char *pp,char attrib,int ffcb,FCB* &fcbp);

功能:查找给定的路径(由参数pp指定),确定路径的正确性,并返回路径中最后一个名字(目录名)代表的目录的地址(首块号);对路径进行处理(去掉路径中的“..”),构成一个全路径名存于全局变量temppath中;当函数参数ffcb非零时,通过调用FindFCB( )函数,使得本函数成功返回时,FCB类引用参数fcbp带回指向路径最后一个目录的目录项的地址。

其程序流程图如图18所示。

17. FindFCB( )函数程序流程图

函数原型:int FindFCB(char *Name,int s,char attrib,FCB* &fcbp);

功能:从函数参数s指定的块开始,查找参数Name指定的名字(目录或文件名)且符合属性attrib的目录项。若找到,返回其首块号(非负整数——Name是目录名时,返回正整数;

Name是文件名时,返回非负整数:非空文件,返回正整数,空文件,返回0);若没有找到,

返回负数-1。函数正确返回时,引用参数fcbp带回该目录项的地址。FindFCB()函数的程序流程图如图19所示。

图17 undel命令程序流程图

图18 FindPath()函数流程图

图19 FindFCB( )函数流程图

图20 ProcessPath( )函数流程图

18. ProcessPath( )函数程序流程图

函数原型:int ProcessPath(char* path,char* &Name,int k,int n,char attrib);

功能:将参数path中最后一个名字(文件名或目录名)分离出来,并由引用参数Name带回;

返回path中除掉Name后,最后一个目录的地址(首块号);必要时调用函数FindPath(),并通过全局变量temppath带回path(去掉Name后)的全路径名(绝对路径名)。

ProcessPath()函数的程序流程图如图20所示。

流体传动与控制2012实验指导书

《液压传动》实验指导书刘玲腾刘继忠编 南昌大学机电工程学院

实验注意事项 一、液压实验是学习液压传动课程的一个重要组成环节,它可以帮助学生加深理解液压传动中的基本概念,巩固加深课堂教学内容;掌握一般液压元件和回路的实验方法及操作技能;增强实际动手能力,培养学生分析问题和解决问题的能力。因此学生对每次实验必须认真对待。 二、在每次实验前,要认真复习课程有关的内容并预习实验指导书。 三、实验前,应在实验台旁熟悉实验设备和仪器、操纵、测量等方法。在教师指导下,按实验指导书中的内容、步骤进行。 四、在实验室内必须遵守实验室有关规章制度。 五、实验完毕,应整理好场地和仪器、工具,切断电源,认真填写实验报告,按期交指导教师批阅。 六、实验成绩作为本课考核成绩的一部份。

目录 一、液压泵拆装 (1) 二、液压阀拆装 (7) 三、节流调速回路性能实验 (10) 四、液压传动系统回路组装实验 (13)

实验一液压泵拆装 一、实验目的 液压元件是液压系统的重要组成部分,通过对液压泵的拆装可加深对泵结构及工作原理的了解。并能对液压泵的加工及装配工艺有一个初步的认识。 二、实验用工具及材料 内六角扳手、固定扳手、螺丝刀、各类液压泵、液压阀及其它液压元件 三、实验内容及步骤 拆解各类液压元件,观察及了解各零件在液压泵中的作用,了解各种液压泵的工作原理,按一定的步骤装配各类液压泵。 1.轴向柱塞泵 型号:cy14—1型轴向柱塞泵(手动变量) 结构见图1—1 图1-1 (1)实验原理 当油泵的输入轴9通过电机带动旋转时,缸体5随之旋转,由于装在缸体中的柱塞10

《操作系统原理》信管专业实验指导书资料

《操作系统原理》实验指导书 班级:_______________ 学号:_______________ 姓名:_______________ 山东建筑大学管理工程学院 信息管理与信息系统教研室

目录 引言 (1) 实验题目一 (2) 实验题目二 (4) 实验题目三 (6) 实验题目四 (8) 实验题目五 (10) 实验题目六 (12)

引言 操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。 操作系统实验是操作系统课程的一个重要组成部分,通过试验环节的锻炼使同学们不仅能够对以前的所学过的基础知识加以巩固,同时能够通过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。 本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。选做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。

实验题目一:模拟进程创建、终止、阻塞、唤醒原语 一、题目类型:必做题目。 二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进 程控制功能的理解,掌握操作系统模块的设计方法和工作原理。 三、实验环境: 1、硬件:PC 机及其兼容机。 2、软件:Windows OS ,Turbo C 或C++、VC++、https://www.doczj.com/doc/0212418380.html, 、Java 等。 四、实验内容: 1、设计创建、终止、阻塞、唤醒原语功能函数。 2、设计主函数,采用菜单结构(参见后面给出的流程图)。 3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供 随时查看各队列中进程的变化情况。 五、实验要求: 1、进程PCB 中应包含以下内容: 2、系统总体结构: 其中: 进程名用P1,P2标识。 优先级及运行时间:为实验题目二做准备。 状态为:就绪、运行、阻塞,三种基本状态。 指针:指向下一个PCB 。

工程热力学实验 二氧化碳PVT实验指导书(2012.06.07)

二氧化碳临界状态观测及p-v-T关系的测定 一、实验目的 1. 观察二氧化碳气体液化过程的状态变化和临界状态时气液突变现象,增加对临界状态概念的感性认识。 2. 加深对课堂所讲的工质的热力状态、凝结、汽化、饱和状态等基本概念的理解。 3. 掌握二氧化碳的p-v-T关系的测定方法,学会用实验测定实际气体状态变化规律的方法和技巧。 4. 学会活塞式压力计、恒温器等部分热工仪器的正确使用方法。 二、实验原理 当简单可压缩系统处于平衡状态时,状态参数压力、温度和比容之间有确切的关系,可表示为: (,,)=0 (7-1-1) F p v T 或 =(,) (7-1-2) v f p T 在维持恒温条件下、压缩恒定质量气体的条件下,测量气体的压力与体积是实验测定气体p-v-T关系的基本方法之一。1863年,安德鲁通过实验观察二氧化碳的等温压缩过程,阐明了气体液化的基本现象。 当维持温度不变时,测定气体的比容与压力的对应数值,就可以得到等温线的数据。 在低于临界温度时,实际气体的等温线有气、液相变的直线段,而理想气体的等温线是正双曲线,任何时候也不会出现直线段。只有在临界温度以上,实际气体的等温线才逐渐接近于理想气体的等温线。所以,理想气体的理论不能说明实际气体的气、液两相转变现象和临界状态。 二氧化碳的临界压力为73.87bar(7.387MPa),临界温度为31.1℃,低于临界温度时的等温线出现气、液相变的直线段,如图1所示。30.9℃

是恰好能压缩得到液体二氧化碳的最高温度。在临界温度以上的等温线具有斜率转折点,直到48.1℃才成为均匀的曲线(图中未标出)。图右上角为空气按理想气体计算的等温线,供比较。 1873年范德瓦尔首先对理想气体状态方程式提出修正。他考虑了气体分子体积和分子之间的相互作用力的影响,提出如下修正方程: ()()p a v v b RT + -=2 (7-1-3) 或写成 pv bp RT v av ab 320-++-=() (7-1-4) 范德瓦尔方程式虽然还不够完善,但是它反映了物质气液两相的性质和两相转变的连续性。 式(7-1-4)表示等温线是一个v 的三次方程,已知压力时方程有三个根。在温度较低时有三个不等的实根;在温度较高时有一个实根和两个虚根。得到三个相等实根的等温线上的点为临界点。于是,临界温度的等温线在临界点有转折点,满足如下条件: ( )??p v T =0 (7-1-5)

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

201209级《发动机原理》实验指导书.

《发动机原理》课程实验指导书彭辅明袁守利编 汽车工程学院 2012年4月

前言 1.实验总体目标、任务与要求 1、巩固所学的理论知识、加深对内燃机性能实验的认识和了解。 2、掌物内燃机性能试验和某些专项试验的试验方法。 3、了解内燃机试验台架的基本组成和常用测试仪表的结构及其工作原理,并掌物其使用方法。 4、掌物对实验数据进行处理以及对实验结果进行分析的基本方法。 2.适用专业 热能与动力工程、车辆工程、汽车服务工程 3.先修课程 《发动机构造》、《热能与动力机械测试技术》。 4.实验项目与学时分配(见表一) 5. 实验改革与特色 通过学生在实验过程中的实际操作,培养学生的实验技能和实际动手的能力,进一步加深对理论知识的掌物和理解。

实验一发动机速度特性 1、掌物发动机速度特性的试验方法。 2、学会对实验数据进行处理,对实验结果进行分析;并绘制发动机速度特性曲线图。 二、实验条件 1、东南4A91电控汽油发动机机(Pemax=77Kw/6000r/min)一台 2、CW150型电涡流测功机一台 3、FST2S发动机数控试验台一台 3、FCM-D转速油耗测量仪一台 4、温度计一只 5、大气压力计一只 6、93#车汽油 20升 三、实验原理 发动机速度特性:在发动机油门开度一定(部分开度或全开)的情况下,研究其功率Pe、扭矩Ttq、耗油量B及燃油消耗率be与转速n之间的关系。 四、实验内容和要求 1、调整测功机负荷及指挥全组协调动作,一人;测功机负荷的调整应均匀、准确,尽量避免大幅度增加或减小测功机负荷,造成发动机的转速剧烈波动。 2、调节、监视发动机油门,一人;当发动机出现异常情况时应立即减小或关闭发动机油门。 3、测量发动机转速和油耗,一人;测量转速时,应注意转速的上下波动情况,当转速的波动值超过±20r/min,该组实验数据应视为无效并重做。 4、调节,监视发动机冷却水出水温度,一人;保持发动机冷却水出水温度稳定在80±5℃范围内,出现气阻现象(无冷却水排除或冷却水出水温度超过100℃),应立即报告,以便及时停机。 5、监视发动机机油压力、温度,一人;出现异常情况应及时报告。 6、记录发动机扭矩(测功机读数)Ttq、发动机转速n、耗油质量△m和耗油时间△t, 一人;实验数据记录应准确无误。 7、绘制实验监督曲线,一人;当发现实验过程中因某些特殊原因而引起误差过大的点,应及时指出,以便补测校正。 五、实验方法与步骤 1、按照附录一《发动机台架试验安全操作规范》,作好试验前的准备工作。确认发

操作系统原理实验-系统内存使用统计5

上海电力学院 计算机操作系统原理 实验报告 题目:动态链接库的建立与调用 院系:计算机科学与技术学院 专业年级:信息安全2010级 学生姓名:李鑫学号:20103277 同组姓名:无 2012年11 月28 日上海电力学院

实验报告 课程名称计算机操作系统原理实验项目线程的同步 姓名李鑫学号20103277 班级2010251班专业信息安全 同组人姓名无指导教师姓名徐曼实验日期2012/11/28 实验目的和要求: (l)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 实验原理与内容 使用Windows系统提供的函数和数据结构显示系统存储空间的使用情况,当内存和虚拟存储空间变化时,观察系统显示变化情况。 实验平台与要求 能正确使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS了解系统内存和虚拟空间使用情况,会使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟存储空间。 操作系统:Windows 2000或Windows XP 实验平台:Visual Studio C++ 6.0 实验步骤与记录 1、启动安装好的Visual C++ 6.0。 2、选择File->New,新建Win32 Console Application程序, 由于内存分配、释放及系统存储 空间使用情况均是Microsoft Windows操作系统的系统调用,因此选择An application that support MFC。单击确定按钮,完成本次创建。 3、创建一个支持MFC的工程,单击完成。

操作系统原理实验指导

操作系统实验指导 操作系统是计算机的最重要的系统软件,它在计算机中具有核心地位,其作用是对计算机系统资源进行统一的调度和管理,提供各种强有力的系统服务,为用户创造灵活而又方便的使用环境。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分地发挥系统中各种资源的使用效率,提高系统工作的可靠性。 操作系统原理是计算机科学与技术专业的一门主要专业课程,它涉及计算机系统中各种软、硬资源管理的实现原理与方法,内容非常丰富,综合性非常强,并且还具有很强的实践性。只有把理论与实践紧密地结合起来,才能取得较好地学习效果。 培养计算机专业学生的系统程序设计能力,也是本课程的重要环节。系统程序要求结构清晰、合理、可读性好,有准确而简明的注释。通过实验可以培养学生正规系统程序设计能力。 本实验包括下列六个方面: 实验一几种操作系统的界面 实验二进程调度 实验三存储器管理 实验四存储器管理 实验五磁盘驱动调度 实验六文件管理系统 上述每个实验约需要10个学时。可根据实际情况选用。最好学生自己独立完成,如有困难,可参考一些示例,弄清每个实验的思想和实现方法,上机调试通过,不能完全照搬示例。 实验一几种操作系统的界面 1、目的与要求 目的:通过本实验,学生应熟悉1~2种操作系统的界面。在熟练使用的基础上,能了解各种命令和调用在系统中的大致工作过程,也就是通过操作系统的外部特性,逐步深入到操作系统的内在实质内容中去。 要求:能熟练地在1~2种操作系统环境下工作。学会使用各种命令,熟悉系统提供的各种功能。主动而有效地使用计算机。 熟悉系统实用程序的调用方法和各种系统调用模块的功能和用法。 2、示例 用1~2种操作系统提供的各种手段,建立、修改、编辑、编译和运行程序,最后撤消一个简单程序。要尽可能多地使用系统提供的各种命令和功能。 操作系统可为如下两种序列: (1)Windows 98或Windows 2000或Windows XP。 (2)Linux或Unix。 下面简要介绍一下Unix操作系统。 Unix是一个分时操作系统,面向用户的界面shell是一种命令程序设计语言,这种语言向用户提供了从低到高,从简单到复杂的三个层次的使用方式。它们是简单命令、组合命令和shell过程。 简单命令:Unix命令一律使用小写字母。 例如:ls -l 显示文件目录(长格式) rm 删除一个文件 cat 合并和传送文件、 cp 复制文件 mv 文件改名 cc 编译C语言源程序 组合命令:shell简单命令可以用管道算符|组合构成功能更强的命令。

2012电子实验指导书初稿7

第6章电子技术课程设计 6.1 课程设计的任务与基本要求 电子技术课程设计的任务: 通过设计题目的完成提高学生在电子技术方面的实践技能,培养学生综合运用理论知识解决实际问题的能力,熟悉电子电路设计的基本思想方法和程序。 电子技术课程设计的基本要求: 一、掌握电子电路设计的基本过程和思想方法,设计的基本过程是: 1、根据设计任务和指标初选电路模型,即方案设计。 2、参数设计计算。 3、确定详细的电路方案。 4、选测元器件。 5、组装、调试、改进电路。 6、确定最后电路并写出总结报告。 基本思想方法:首先将所设计电路分解为不同功能电路的组合,然后设计实现各功能电路。实现各功能电路的思想方法是选用功能电路。第三步是进行功能电路的参数设计计算和功能电路之间联接的实现。 二、培养一定的自学能力和分析、解决问题的能力。学会分析、解决问题的方法,对设计中遇到的问题能通过独立思考,查阅工具书、参考文献找到答案。 三、学会一定的动手能力和操作技能。学会元器件的识别、测试、使用技能,学会用面包板组装电路的技能,掌握电路试验、测量技能、电子仪器使用技能。 四、熟悉典型集成块的使用。集成块的种类很多,应用非常广泛,在课程设计中不可能一一应用。我们仅以应用最广泛的运算放大器、BE555定时器集成计数器、集成触发器、集成门电路为例,通过这些集成块的应用,掌握集成电路的使用方法、特点、注意事项。 五、进一步熟悉掌握典型功能电路的设计方法。如时序电路的设计,单级放大电路的设计等。

6.2 电子电路设计的基本过程与思想方法 电子系统设计的最终目标是做出生产样机或定型产品,整个过程大致可分为以下几个阶段: 1、方案设计 根据设计任务书给定的要求和指标,进行电路的型式设计。完成该部分任务的思想方法:首先将总体电路分解为不同功能电路的组合。尽可能大量查阅参考资料和文献,广泛调查研究,寻找在实际中已获得应用,证明是可靠、先进的各种功能电路。然后进行组合,最终寻找出最佳电路型式。在绝大多数情况下,虽然你所设计的是一个全新的产品,但构成该产品的各功能电路通常是已有的。如果你需要某种新的、目前尚不存在的功能电路,这时,你必须进行这种功能电路的原理设计,这要求较高的技巧和水平,是一种发明创造。所以在电路型式设计时,首先将所设计电路分解为功能电路,然后选用功能电路,设计功能电路的有机组合方法。在选用达不到要求时,再考虑进行全部或部分功能电路的设计。 2、电路参数的设计计算 电路型式确定以后,只是实现了所要求的功能,并没有实现具体的性能指标。必须进一步进行电路结构的详细设计,以及元器件的选用和参数的设计计算。在进行该步工作中,有可能发现电路型式设计的不合理,这时须对电路型式进行修改。 3、元器件的购置与测试 要将你设计的电子电路变成一个电子装置,必须购置到全部元器件。有时,由于某些原因,可能某些元器件无法得到或性能参数达不到要求,这时你必须修改设计。 4、样机制作及调试 这一步要完成构件的加工,元器件的组装,进行整机调试、指标测试,根据测试结果进行方案调整和参数调整。最后做出符合要求的样机。课程设计中此步是用面包板搭接电路,不做外壳和印刷电路板等。 5、工艺设计 根据产品的批量和其他因素,设计出该电子装置的制造工艺。课程设计不进行这一步工作。 6、总结鉴定,形成所需要的全部文件资料 这一步工作是提交该产品鉴定、生产、维修、使用等所必须的各种文件。如:原理图、接线图、元器件明细表、工艺要求、试验、检验方法、使用、维护须知等。课程设计中,要求每一位同学必须提供元器件明细表、原理图、接线图、电路分析及参数设计计算报告,实验结果与数据等。 下面通过一个例子说明电子电路设计的过程与思想方法。 温度、湿度显示、报警、控制电路的设计: 1.首先可以将该电路分解为以下几部分功能电路:

电子_基础实验指导书 2012

电子科技专业基础实验 电子科学与技术学院编 2012.1

电子科技专业基础实验 1 微波基本测量 (1) 2 二维电场的模拟实验 (7) 3 电磁波的布拉格衍射实验 (12) 4 射频图像传输 (16) 5 偏振光实验 (23) 6 光源光谱特性的测量 (29) 7 光磁共振实验 (32) 8 半导体光电导实验 (41) 9 光栅实验 (47) 10 单色仪的标定实验 (51) 11 迈克尔逊干涉仪 (54) 12 半导体光伏效应实验 (60) 13 半导体霍尔效应实验 (66) 14 PN结正向压降温度特性实验 (72) 15 半导体少数载流子寿命测量 (77) 16 四探针测电阻率实验 (80)

实验1 微波基本测量技术 一.实验目的 1. 学习微波的基本知识; 2. 了解波导测量系统,熟悉基本微波元件的作用; 3.了解微波在波导中传播的特点,掌握微波基本测量技术; 4.掌握大、中、小电压驻波系数的测量原理和方法; 5.学习用驻波测量线校准晶体检波器特性的方法。 二.实验原理 (一)微波基本知识 在微波波段,随着工作频率的升高,导线的趋肤效应和辐射效应增大,使得普通的双导线不能完全传输微波能量,而必须改用微波传输线。常用的微波传输线有平行双线、同轴线、带状线、微带线、金属波导管及介质波导等多种形式的传输线,本实验用的是矩形波导管,波导是指能够引导电磁波沿一定方向传输能量的传输线。 传输线的特性参量与工作状态在波导中常用相移常数。波导波长,驻波系数等特性参量来描述波导中的传输特征,对于一个横截面为b a ×的矩形波导中的TE 10波: 自由空间波长 /c f λ=, 截止(临界)波长 2c a λ=, 波导波长 /g λλ= (1) 相移常量 2/g βπλ=,, 反射系数 Γ=E 反/E 入 驻波比 max min /E E ρ=, 由此可见,微波在波导中传输时,存在着一个截止波长c λ,波导中只能 传输λ<c λ的电磁波。波导波长g λ>自由空间波长λ。 在实际应用中,传输线并非是无限长,此时传输线中的电磁波由人射波 和反射波迭加而成,传输线中的工作状态主要决定于负载的情况。 (1)波导终端接匹配负载时,微波功率全部被负载吸收,无反射波, 波导中呈行驻波状态.此时|Γ|=0,ρ=l 。

实验指导(2015完全版)

操作系统上机实验指导书 (第一版) 闫大顺李晟编著 吴家培主审 计算机科学与工程学院 2014.8

操作系统实验指导 本课程是为《计算机操作系统》课所开的实验。计算机操作系统课程是一门实践性很强的技术课程,本课程实验的目的在于培养学生的实践能力,促进理论与实践的结合。要求学生通过上机编程,熟悉对操作系统原理,并熟练使用程序接口,并了解如何模拟操作系统原理的实现,从而加深对操作系统原理的领会,加深对操作系统实现方法的理解,与此同时使学生在程序设计方面也能够得到很大程度的提高。 实验的目的是使学生理论联系实际,提高学生系统理解与开发能力。这里所列的实验分为必做和选做。具体实验题的选择,不仅要考虑课程内容,而且要考虑学生目前的编程能力,要由浅入深。教师可通过运行示例或动画,帮助学生理解实验要求。学生应选择自己熟悉的语言与开发环境去完成实验。根据以往的教学经验,Delphi、C++ Builder,JBuilder由于提供了许多可重用的构件,易于学习、使用,VC++学习、使用困难较多。实验要求尽量在windows操作系统下,也可以在Linux下完成,由于多数没有专门学习Linux,在其平台下做试验比较困难。实验的硬件要求是能够支持VC++、Delphi、C++ Builder,JBuilder的微机即可。每个学生都独立在一台计算机上完成自己的实验内容,杜绝学生的抄袭。 实验报告的要求 1. 每位同学准备实验报告本,上机前作好充分的准备工作,预习本次实验的内容,事先熟悉与实验有关的软硬件环境。 2. 实验时遵守实验室的规章制度,爱护实验设备,对于实验设备出现的问题,要及时向指导老师汇报。 3. 提交实验文件格式:[班级][学号]_[实验题号].[扩展名] 例:计051班学号为03的学生第四个实验的文件名为:j05103_4.c 4. 最终的实验报告按照实验名称、实验目的、实验内容,实验过程(程序设计、实现与调试)、实验总结五部分书写,按时上交。实验总结是对于实验过程中出现的问题或疑惑的分析与思考。认真按照要求填写到实验报告纸上。

单片机原理实验指导书(2012.10)

《单片机原理》实验指导书 计算机科学与技术系2012年8月

目录 第一部分单片机仿真实验 (1) 实验一:流水灯实验 (1) 实验二:中断实验 (4) 实验三:定时器中断实验 (6) 实验四:串行口实验 (9) 实验五:矩阵式键盘输入识别 (13) 实验六:LCD循环显示设计 (19) 第二部分单片机硬件实验............................错误!未定义书签。第一章试验箱系统概述 ...................................错误!未定义书签。 一、系统地址分配........................................... 错误!未定义书签。 二、系统接口定义........................................... 错误!未定义书签。 三、通用电路简介........................................... 错误!未定义书签。第二章实验指导...............................................错误!未定义书签。实验七P1口亮灯和P1口加法器实验........... 错误!未定义书签。实验八简单I/O口扩展(选作).................. 错误!未定义书签。实验九8255控制交通灯................................ 错误!未定义书签。实验十128*64LCD液晶显示 .......................... 错误!未定义书签。

第一部分单片机仿真实验 实验一:流水灯实验 一、实验目的: 通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。 二、实验原理图 实验参考电路图如下: 三、参考实验程序 //流水灯实验 #include //包含单片机寄存器的头文件 sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机 //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的

操作系统原理实验四

实验4 进程控制 1、实验目的 (1)通过对WindowsXP进行编程,来熟悉和了解系统。 (2)通过分析程序,来了解进程的创建、终止。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 (3)·CreateProcess()调用:创建一个进程。 (4)·ExitProcess()调用:终止一个进程。 4、实验编程 (1)编程一利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下: # include < stdio.h > # include < windows.h > int main(VOID) ﹛STARTUPINFO si; PROCESS INFORMA TION pi; ZeroMemory(&si,sizeof(si)); Si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, “c: \ WINDOWS\system32\ mspaint.exe”, NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) ﹛fprintf(stderr,”Creat Process Failed”); return—1; ﹜ WaitForSingleObject(pi.hProcess,INFINITE); Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜

2012-AutoCAD实验指导书

实验一熟悉AutoCAD基本环境及设置 一实验目的 1、熟悉AutoCAD的软硬件环境、启动、退出、文件管理等方法; 2、熟悉AutoCAD的工作界面、系统配置的修改等; 3、熟悉键盘和鼠标输入命令的方法。 二实验内容 1、认识AutoCAD的硬件及设备配置,学习启动、退出AutoCAD; 2、练习文件管理,包括新建文件、打开旧文件、保存、另存文件等操作; 3、练习用“选项”对话框进行常用的缺省配置修改; 4、练习用键盘和鼠标输入命令,学习工作界面中各部分功能区的使用。 三实验过程及说明 1.启动AutoCAD 进入WindowsXP开始界面后,用鼠标双击桌面上AutoCAD图标,或执行“开始”菜单中AutoCAD命令启动AutoCAD。 2.进入AutoCAD后基本练习 1)新建一文件,分别用“从草图开始”、“使用样板”、“使用向导”三种创建方法; 2)对应三种不同的创建新图的方法,练习绘图界限(LIMITS)、绘图单位(UNITS)等基本设置的操作; 3)熟悉工作界面,主要包括:标题行、下拉菜单、功能区、绘图区、工具栏(标准、绘图屏幕菜单)、命令提示区、状态栏、滚动条、十字光标等,如图1-1所示; 图1-1 AutoCAD 界面的构成

4)了解系统配置选项的修改,通过“选项”对话框练习常用的三项修改:绘图背景色、按实际情况显示线宽、自定义右键功能;(选择“显示”选项卡,修改绘图区背景颜色为白色;选择“用户系统配置”选项卡,设置线宽随图层、按实际大小显示;选择“用户系统配置”选项卡,自定义右键功能。) 说明:其它选项的缺省配置是否修改,根据具体情况自定。 3.退出AutoCAD 退出时,切不可直接关机(会丢失文件),应按下列方法之一进行: 1)从下拉菜单中选取:“文件”→“退出” 2)从键盘键入:EXIT或QUIT 3)单击工作界面标题行右边的“关闭”按钮 如果当前图形没有全部存盘,输入退出命令后,AutoCAD会弹出“退出警告”对话框,操作该对话框后,方可安全退出AutoCAD。 4.用键盘和鼠标练习输入命令LINE、ERASE、UNDO、REDO、ESC等。 1)用LINE命令画几组直线。通过练习要熟悉“C”选项和“U”选项的应用; 2)用ERASE命令擦除。通过它要逐步熟悉3种选择实体的方式;(窗交,框选,单选) 3)用UNDO(U)命令撤销前3个命令,用REDO返回一个命令; 4)用ESC终止命令,回到“Command:”提示符下。 注意: 所有命令在“Command:”提示符下输入,可用键盘直接输入命令名,也可再下拉菜单、功能区或屏幕菜单中直接点取;操作命令中需要选项时,请单击右键,使用右键菜单选项。 四实验题目 1)用NEW命令新建一张图(图幅为A3),进行基本设置后,运用键盘、鼠标等输入命令画图。以实验报告形式说明你新建该图形的步骤及设置情况。 2)用QSAVE命令指定路径,已“一面视图”为名保存。 3)用SAVE AS(另存为)命令将图形另存到软盘上或硬盘上的另一处。 4)关闭当前图形,用OPEN命令打开图形文件“一面视图”。 5)练习结束,关闭当前图形,正确退出AutoCAD。 6)以实验报告形式回答以下问题: (1)AutoCAD的操作界面由哪几部分组成?各部分的作用是什么? (2)如何设置作图窗口的颜色和十字光标的大小? (3)图形文件的“Save”(保存)与“Save as”(另存)有何区别?

操作系统原理实验报告(终版)

操作系统原理实验报告(终版)

————————————————————————————————作者:————————————————————————————————日期:

[键入文字] XX学校 实验报告 课程名称: 学院: 专业班: 姓名: 学号: 指导教师: 2011 年3 月

目录 实验1 进程管理 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验要求 (3) 四、程序说明和程序流程图 (4) 五、程序代码 (5) 六、程序运行结果及分析 (7) 七.指导教师评议 (8) 实验2 进程通信 (9) 一、实验目的 (9) 二、实验内容 (9) 三、实验要求 (9) 四、程序说明和程序流程图 (9) 五、程序代码 (11) 七.指导教师评议 (14) 实验3 存储管理 (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验要求 (15) 四、程序说明和程序流程图 (16) 六、程序运行结果及分析 (23)

七.指导教师评议 (23) 实验4 文件系统 (24) 一、实验目的 (24) 二、实验内容 (24) 三、实验要求 (24) 四、程序说明和程序流程图 (24) 五、程序代码 (26) 六、程序运行结果及分析 (26) 七.指导教师评议 (27)

实验1 进程管理 一、实验目的 1. 弄清进程和程序的区别,加深对进程概念的理解。 2. 了解并发进程的执行过程,进一步认识并发执行的实质。 3. 掌握解决进程互斥使用资源的方法。 二、实验内容 1. 管道通信 使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。 2. 软中断通信 使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。 三、实验要求 1. 根据实验内容编写C程序。 2. 上机调试程序。 3. 记录并分析程序运行结果。

光学设计实验指导书2012

实验一光学设计软件ZEMAX的安装和基本操作 一.实验目的 学习ZEMAX软件的安装过程,熟悉ZEMAX软件界面的组成及基本使用方法。二.实验要求 a)掌握ZEMAX软件的安装、启动与退出的方法。 b)掌握ZEMAX软件的用户界面。 c)掌握ZEMAX软件的基本使用方法。 d)学会使用ZEMAX的帮助系统。 e)学会使用ZEMAX初步仿真光路图。 三.实验内容 (一)界面及基本操作 1.通过桌面快捷图标或“开始—程序”菜单运行ZEMAX,熟悉ZEMAX的初始用户界面,如下图所示: 图1.1ZEMAX用户界面 2.浏览各个菜单项的内容,熟悉各常用功能、操作所在菜单,了解各常用菜单的作用。 3. 熟悉使用各个常用的快捷按钮。

4.学会从主菜单的编辑菜单下调出各种常见编辑窗口(镜头数据编辑、优化函数、多重数据结构)。 5.调用ZEMAX 自带的例子(例如根目录下samples\tutorial\tutorial zoom2.zmx 文件),学会打开常用的分析功能项:草图(2D 草图、3D 草图、渲染模型等)、特性曲线(像差曲线、光程差曲线)、点列图、调制传递函数等,学会由这些图进行简单的成像质量分析。 6.从主菜单中调用优化工具,简单掌握优化工具界面中的参量。 7.掌握镜头数据编辑(LDE )窗口的作用以及窗口中各个行列代表的意思。 8.从主菜单-报告下形成各种形式的报告。 9.通过主菜单-帮助下的操作手册调用帮助文件,学会查找相关帮助信息。 (二) 仿真光路图 根据已拟好的设计草图,在ZEMAX 中实现光路仿真,包括光路系统整体设置、创建光学元件、透镜(组),元件间大致间距等。 1.光路系统的整体设置,包括此光学系统所适用的波长、入瞳直径、视场等,在主菜单-系统里有相应的各个设置。 2.创建光学元件、透镜(组),就是将设计草图中的各种光学元件用ZEMAX 的方式去仿真实现。ZEMAX 仿真的基本元素是面和面间距,仿真创建各种元件基本都以具体设置每个面和面间距的参数来实现。 (1)面:面的基本参数包括面型(Surf:type )、曲率半径(Radius)、厚度(Thickness)、材料(玻璃)(Glass),半口径(Semi-Diameter)等,每一个面对应于LDE 窗口里的一个行,每一个参数对应LDE 窗口里的一列,如下图: ZEMAX 的默认面型是透明标准(Standard )球面,曲率半径和半口径为无穷(Infinity )。面的厚度和材料的定义都是以指定面起向后算到下一个面之间的这一段的厚度和材料。 (2)面间距:指的是该面在光轴上的交点到下一个面在光轴上的交点之间的距离,向右为正,向左为负。常用于标识透镜厚度、元件与元件的间距等。 例如:一个透镜的厚度,可以用透镜的前表面的面厚度值Thickness 来完成仿真;前一个元件与后一个元件的间距,可以用前一个元件的后表面到后一个元件的前表面之间的面间距来完成仿真。 3.根据设计要求和设计草图,估算各个元件之间的大致间距,通过面间距的设置,实现整个光学系统的初步仿真。 4.仿真一个轴上点光源(m μλ587.0=)在物距为u=30mm 时,由焦距为20mm ,材料为BK7,口径为10mm 的单正透镜成像的光路。 四.报告要求: 1. 打开安装目录下的samples\tutorial\tutorial zoom 2.zmx 文件,生成其2D 图、渲染(转角)、像差特征曲线、OPD 曲线、曲面数据报告(第7面)和图解报告4。截屏后打印出来。 2. 试在打印出来的2D 图上标出各个面的位置以及相应面厚度值的具体指向(方向、

参考答案 模拟电子技术实验指导书(2012)

实验一 常用电子仪器的使用 一、 实验目的 1.熟悉示波器,低频信号发生器和晶体管毫伏表等常用电子仪器面板,控制旋钮的名称,功能及使 用方法。 2.学习使用低频信号发生器和频率计。 3.初步掌握用示波器观察波形和测量波形参数的方法。 二、实验原理 在电子电路实验中,经常使用的电子仪器有示波器、低频信号发生器、直流稳压电源、交流毫伏表及频率计等。它们和万用电表一起,可以完成对电子电路的静态和动态工作情况的测试。 实验中要对各种电子仪器进行综合使用,可按照信号流向,以连线简捷,调节顺手,观察与读数方便等原则进行合理布局,各仪器与被测实验装置之间的布局与连接如图1—1所示。接线时应注意,为防止外界干扰,各仪器的共公接地端应连接在一起,称共地。信号源和交流毫伏表的引线通常用屏蔽线或专用电缆线,示波器接线使用专用电缆线,直流电源的接线用普通导线。 图1—1 模拟电子电路中常用电子仪器布局图 1. 低频信号发生器 低频信号发生器按需要输出正弦波、方波、三角波三种信号波形。输出电压最大可达20V (峰-峰值)。通过输出衰减开关和输出幅度调节旋钮,可使输出电压在毫伏级到伏级范围内连续调节。低频信号发生器的输出信号频率可以通过频率分档开关进行调节。 低频信号发生器作为信号源,它的输出端不允许短路。 2.交流毫伏表 交流毫伏表只能在其工作频率范围之内,用来测量正弦交流电压的有效值。为了防止过载而损坏,测量前一般先把量程开关置于量程较大位置上,然后在测量中逐档减小量程。 3.示波器 示波器是一种用途极为广泛的电子测量仪器,它能把电信号转换成可在荧光屏幕上直接观察的图象。示波器的种类很多,通常可分通用、多踪多线、记忆存贮、逻辑专用等类。 双踪示波器可同时观测两个电信号,需要对两个信号的波形同时进行观察或比较时,选用双踪示波器比较合适。 本实验要测量正弦波和方波脉冲电压的波形参数,正弦信号的波形参数是幅值U m 、周期T (或频率f )和初相;脉冲信号的波形参数是幅值U m 、周期T 和脉宽T P 。幅值U m 、峰峰值U P-P 和有效值都可表示正弦量的大小,但用示波器测U P-P 较方便(用万用表交流电压档测得的是正弦量的有效值U= 2 m U )。由于频率f= T 1 , 所以测出周期T ,即可算得频率。矩形脉冲电压,可用周期T ,脉宽T P 和幅值U m 三个参数来描述。T P 与T 之比称为占空比。 三、 实验内容和步骤

操作系统原理实验五

实验五线程的同步 1、实验目的 (1)进一步掌握Windows系统环境下线程的创建与撤销。 (2)熟悉Windows系统提供的线程同步API。 (3)使用Windows系统提供的线程同步API解决实际问题。 2、实验准备知识:相关API函数介绍 ①等待对象 等待对象(wait functions)函数包括等待一个对象(WaitForSingleObject ())和等待多个对象(WaitForMultipleObject())两个API函数。 1)等待一个对象 WaitForSingleObject()用于等待一个对象。它等待的对象可以为以下对象 之一。 ·Change ontification:变化通知。 ·Console input: 控制台输入。 ·Event:事件。 ·Job:作业。 ·Mutex:互斥信号量。 ·Process:进程。 ·Semaphore:计数信号量。 ·Thread:线程。 ·Waitable timer:定时器。 原型: DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 等待时间 ); 参数说明: (1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访问。 (2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒,如表2-1所示。 返回值: 如果成功返回,其返回值说明是何种事件导致函数返回。

Static HANDLE hHandlel = NULL; DWORD dRes; dRes = WaitForSingleObject(hHandlel,10); //等待对象的句柄为hHandlel,等待时间为10ms 2)等待对个对象 WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与 WaitForSingleObject()相同。 原型: DWORD WaitForMultipleObjects( DWORD nCount, //句柄数组中的句柄数 CONST HANDLE * lpHandles, //指向对象句柄数组的指针 BOOL fWaitAll, //等待类型 DWORD dwMilliseconds //等待时间 ); 参数说明: (1)nCount:由指针 * lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUM WAIT OBJECTS。 (2)* lpHandles:指向对象句柄数组的指针。 (3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个 对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数 返回。 (4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒。 返回值:、 如果成功返回,其返回值说明是何种事件导致函数返回。 各参数的描述如表2-2所示。

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