当前位置:文档之家› 《unix》实验指导书.doc

《unix》实验指导书.doc

《unix》实验指导书.doc
《unix》实验指导书.doc

西安理工大学

计算机科学与工程学院

《UNIX/Linux操作系统分析》课程实验指导书

编者:王海晟

时间:2004年10月

实验目录

实验一Linux下基本操作练习实验2实验二Linux下的shell编程设计实验4实验三Linux内核定时器实验6实验四Linux内核模块实验8实验五Linux系统调用设计实验10实验六Linux共享内存分配实验12实验一Linux下基本操作练习实验

(必修,2学时)

一、实验目的

(1)登录Linux和熟悉GNOME

通过登录Linux操作理解以下内容:

1)Linux登录ID的要求。

2)在GNOME环境下登录进入Linux系统。

3)修改口令。

4)正确退出或者注销Linux系统。

通过以下操作熟悉GNOME界面:

1)回顾GNOME面板图标和菜单。

2)管理GNOME视窗。

(2)使用Linux Shell

1)了解用户Linux环境所使用的Shell。

2)更改用户系统的Shell。

3)初步了解bash。

(3)熟悉Linux的文件和目录

1)掌握Linux文件名通配符的使用。

2)了解Linux系统目录的特点。

(4)了解Linux文件系统

1)了解Linux文件系统根目录的子目录。

2)了解/bin目录中的文件。

3)了解/dev目录中的文件。

二、实验任务

1.登录Linux系统和使用GNOME

2.学习Linux系统的Shell使用方法

3.掌握Linux系统的文件、目录和权限原理

4.掌握Linux文件系统原理

三、实验原理与方法

Linux是一个与DOS或Windows完全不同的操作环境,具有它自己独特的风格。

1.登录Linux和使用GNOME

在本实验中,我们首先回顾Linux登录ID和口令的要求,使用标准Linux图形用户界面GNOME 练习登录Linux系统,并学习修改登录口令。

接着,将学习GNOME的使用。GNOME是优秀的Linux桌面平台,也是目前Linux各版本中使用的对国际化支持最好的桌面平台。使用GNOME需要熟悉面板,练习使用鼠标和键盘管理视窗;还需要练习工作空间的切换和使用工作空间菜单。

然后通过Linux系统的Shell、Linux文件、目录和权限等诸方面来掌握Linux系统管理的有关知识。

最后,退出(或者注销)并返回Linux登录界面。

2.Linux系统的Shell

使用Linux系统时,用户多数时间是通过Shell与系统进行对话的。Shell是一个接收用户输入命令并将其转换成指令的程序,它是用户与Linux系统之间的界面之一。

Linux系统中可以使用的Shell包括:

bash:Bourne Again Shell。这是Linux系统上最常用的Shell,它合乎POSIX

标准且相容于Bourne Shell,是GNU工程(自由软件基金会)的产物,

并且提供了编辑命令行的功能。

csh:C Shell。由Berkeley(伯克利大学)开发,与Bourne Shell在交互式使

用上很多是相兼容的,但在程序设计界面上却有很大的不同。它不提

供编辑命令行的功能,但它有类似的功能叫命令历史记录。

ksh:Korn Shell。在UNIX系统下得到普遍使用,并最早将现代Shell技术

(包括取自C Shell的部分)引入Bourne Shell,提供了编辑命令行功能。

sh:Bourne Shell。是原始的Shell,不提供编辑命令行功能。

tcsh:C Shell的加强版,提供了编辑命令行的功能。

zsh:Z Shell。最新的Shell,与Bourne Shell兼容,提供编辑命令行的功能。

POSIX标准:POSIX表示可移植操作系统接口(Portable Operating System Interface,缩写为POSIX是为了读音更像UNIX)。电气和电子工程师协会(IEEE)最初开发POSIX标准,是为

了提高UNIX环境下应用程序的可移植性。然而,POSIX并不局限于UNIX。许多其它的操作

系统,例如DEC OpenVMS和Microsoft Windows NT,都支持POSIX标准,尤其是IEEE Std.

1003.1-1990(1995年修订)或POSIX.1,POSIX.1提供了源代码级别的C语言应用编程接口

(API)给操作系统的服务程序,例如读写文件。POSIX.1已经被国际标准化组织(ISO)所接受,

被命名为ISO/IEC9945-1:1990标准。

3.Linux系统的文件、目录和权限

Linux的文件名与DOS有许多相似之处也有其自身的特点。

Linux文件名没有标准格式。通常文件名中可以包含任何字符(“/”字符除外,“~”字符不能作为文件名的第一个字符),文件名的长度限制在256个字符以内。Linux的文件名也提供了功能强大且精确的通配符。

文件的权限是Linux系统安全的核心部分,包括:

1)Read(可读)权限:表示可以读取文件内的数据。

2)Write(可写)权限:表示可以改变或删除该文件。

3)Execute(可执行)权限:表示可以把该文件当成程序执行。

除文件权限之外,Linux系统上还有目录和很多其他类型的文件,其中包括特殊文件(设备)、Socket 和符号连接等等(平时我们经常使用的Windows设备如软驱、光驱等在Linux中也是一种特殊的文件)。

拥有root口令的用户称为超级用户,超级用户有权访问整个系统,包括建立普通用户帐号、修改密码、安装与卸载软件等一切权限。超级用户的提示符为“#”,普通用户提示符为“$”。

几个用户在一个系统下共用一个帐号,其个人文件的安全就得不到保障。建立普通用户帐号后,系统能保证用户是唯一能够存取其个人文件的人。另一方面,即使没有与人共享一个系统,建立普通用户帐号也是必要的。因为如果总是以超级用户登录进行操作(超级用户的权限是整个系统),一旦出现误操作(如:破坏或移动、删除一个重要的系统文件)处理起来也很棘手。

4.Linux文件系统

Linux的文件系统是文件和目录层次的集合。了解Linux文件系统的结构有助于更好地理解和使用Linux。在Linux文件系统根目录下,有如下子目录:bin、dev、etc、home、install、lib、mnt、proc、root、tmp、user、var(不同版本,目录会略有不同)。

1)/bin目录该目录中存放许多基本的系统程序。

2)/dev目录该目录中存放的文件是设备驱动程序,用来访问系统设备和资源,如磁盘设备、调制解调器、内存等。

/dev目录下常用的设备文件:

/fd0、/fd1:/fd0代表第一个软盘,/fd1代表第二个软盘。

/console:/console指系统控制台,也就是直接连接系统的监视器。

/had:/had代表第一个硬盘。

/tty:/tty开头的设备名代表用户系统上的虚拟控制台。

/tty1代表第一个虚拟控制台,

/tty2代表第二个虚拟控制台。

四.可提供的仪器设备

一台运行Red Hat Linux操作系统并带有GNOME的计算机。

五、预习要求:

1.在开始本实验之前,请回顾教科书中的相关内容。

2.掌握上述的原理与方法。

六、注意事项:

注意保护设备,记录做实验的目的、方法、过程等,具体要写成实验报告。

七、思考题:

典型的Linux系统的命令有很多,通过实践了解Linux中最常用的命令。

实验二Linux下的shell编程设计实验

(必修,2学时)

一、实验目的

1)通过编写程序进一步掌握Linux的SHELL编程语言和技术。

2)通过编程掌握Linux环境变量的使用方法。

二、实验任务

1.使用Perl编程语言编写程序,在程序中依次获取shell环境变量并输出。

2.学习Linux系统的Shell编程语言PERL的使用方法

三、实验原理与方法

Linux是一个与DOS或Windows完全不同的操作环境,具有它自己独特的风格。

Linux下的SHELL编程是从事Linux开发的一项基础;熟练掌握一种shell编程语言是本课程所要求的基本技能。

Linux环境变量对于Linux编程具有一定的意义,通过获取Linux环境变量可极大的便利程序编程。

使用PERL语言编写shell脚本,获取并掌握shell环境变量的性质用法。

与书上介绍的原理比较,进一步加深理解。

四.可提供的仪器设备

一台运行Red Hat Linux操作系统并带有GNOME的计算机。

五、预习要求:

1.在开始本实验之前,请回顾教科书中的相关内容。

2.掌握上述的原理与方法。

六、注意事项:

注意保护设备,记录做实验的目的、方法、过程等,具体要写成实验报告。

七、思考题:

典型的Linux系统的环境变量有很多,通过实践尽可能多的理解Linux下的环境变量的使用。

实验三Linux内核定时器实验

(必修,2学时)

一、实验目的

通过研究内核的时间管理算法学习内核源代码。首先学习内核如何实现定时器间隔(部分工作要靠阅读内核代码)。然后应用这些知识,建立一种用户空间机制来测量一个多线程程序的执行时间。完成这个实验,还将学习如何使用信号。

二、实验任务

1、使用ITIMER—REAL实现gettimeofday()版本.将它设置为每秒钟产生一个信号。使用signal工具来确定ITMER—REAL何时已经减小为0。并计算已经经过的秒数。

2、编写一个主程序产生两个子进程,每个子近程分别递归计算N=20,30和36的斐波纳契序列,确定这二个进程各自的实际时间运行时间。

三、实验原理与方法

时间是相对某个重要的时间纪元而言的c例如,美国时间使用6,Gregorian日历来计算,其所基于的时间零大约是在2000年前。当在shell中键入date命令时,该命令就会读取内核变量来确定时间。如Mon Jun 2109:01:28MDT2001,其含义是从时间纪元开始到现在已经经过了大约2001.5年了。

unlx系统在1970年之前并不存在,因此不用表达1970午之前的时间。这是通过把1970年1月1R 凌晨12:00(格林威治标准时间(6MT)00:00:00)作为时间纪元来实现的。两个long int(长整)类型的内核变量分别记录丁从UNIX时间纪元开始到现在已经经过的时间秒数和微秒数。用户空间程序可以按照下面的方式读取系统时间:

四.可提供的仪器设备

一台运行Red Hat Linux操作系统的PC,GNU C/C++。

五、预习要求:

1.在开始本实验之前,请回顾教科书中的相关内容。

2.掌握上述的原理与方法。

3.必须作实验预习,对预习报告不做形式要求。

4.按时完成实验并按时提交实验报告。

5.可以用C/C++语言实现。

六、注意事项:

注意保护设备,记录做实验的目的、方法、过程等,具体要写成实验报告。

七、思考题:

。分析内核源代码了解内核对gettimeofday()函数实现的原理。

实验四Linux内核模块实验

(必修,2学时)

一、实验目的

这是一个设计性试验。学生需要设计一个内核模块,在编译命令使用相应的选项编译成为一个内核模块,并使用相应的命令将之加入内核。。

二、实验任务

1.编写一个简单的内核模块,该模块至少需要有两个函数:一个是init_module()函数,在把模块装载到内核时被调用,它为内核的某些东西注册一个处理程序,或是用自身的代码取代某个内核函数;另一个是cleanup_module()函数,在卸载模块时被调用,其任务是清除init_module()函数所做

的一切操作。编写完成后进行该模块的编译、装载和卸载操作。

2、向上面模块中再添加一些新函数,如open()、release()、write()和read()函数,并编写一个函数来测试你的模块能否实现自己添加的函数的功能。其中open()、release()和write()函数都可以是空操作或较少的操作,它们仅仅为结构file_operations提供函数指针。。

三、实验原理与方法

内核模块为Linux动态加载驱动程序提供了非常方便的方法。

源码:1.1必要的header文件:

除了前面讲到的头文件#include和#include外,如果你的内核打开了版本检查,那么我们就还必须增加头文件#include,否则就会出错。

1.2init_module()函数:

由于题目的要求不高,故可只在该函数里完成一个打印功能,如printk(“Hello!This is a testing module!\n”);等。为便于检查模块是否装载成功,我们可以给一个返回值,如return0;

若返回一个非0值,则表示init_module()失败,从而不能装载模块。

1.3cleanup_module()函数:

只需用一条打印语句来取消init_module()函数所做的打印功能操作就可以了,如printk(“Sorry!The testing module is unloaded now!\n”);等。

1.4模块的编写:

此处把该模块文件取名为testmodule.c

#include//在内核模块中共享

#include//一个模块

//处理CONFIG_MODVERSIONS

#if CONFIG_MODVERSIONS==1

#define MODVERSIONS

#include

#endif

int init_module()//初始化模块

{

printk(“Hello!This is a testing module!\n”);

return0;

}

void cleanup_module()//取消init_module()函数所做的打印功能操作

{

printk(“Sorry!The testing module is unloading now!\n”);

}

1.5模块的编译、装载和卸载:

[root@linux/]#gcc–O2–Wall–DMODULE–D__KERNEL__-c testmodule.c

[root@linux/]#ls–s//在当前目录下查看生成的目标文件testmodule.o

现在,模块testmodule已经编译好了。用下面命令将它装载到系统中:

[root@linux/]#insmod–f testmodule.o

如果装载成功,则在/proc/modules文件中就可看到模块testmodule,并可看到它的主设备号。同时在终端显示:

Hello!This is a testing module!

如果要卸载,就用如下命令:

[root@linux/]#rmmod testmodule

如果卸载成功,则在/proc/devices文件中就可看到模块testmodule已经不存在了。同时在终端显示:

Sorry!The testing module is unloading now!

2向testmodule模块中添加新函数open()、release()、write()和read()

2.1函数open()

int open(struct inode*inode,struct file*filp){

MOD_INC_USE_COUNT;//增加该模块的用户数目

printk(“This module is in open!\n”);

return0;

}

2.2函数release()

void release(struct inode*inode,struct file*filp){

MOD_DEC_USE_COUNT;//该模块的用户数目减1

printk(“This module is in release!\n”);

return0;

#ifdef DEBUG

printk(“release(%p,%p)\n”,inode,filp);

#endif

}

2.3函数read()

int read(struct inode*inode,struct file*filp,char*buf,int count){ int leave;

if(verify_area(VERIFY_WRITE,buf,count)==DEFAULT)

return DEFAULT;

for(leave=count;leave>0;leave--){

__put_user(1,buf,1);

buf++;

}

return count;

}

2.4函数write()

int write(struct inode*inode,struct file*filp,const char*buf,int count){ return count;

}

3模块的测试

在该模块程序编译加载后,再在/dev目录下创建模块设备文件moduledev,使用命令:#mknod /dev/moduledev c major minor,其中“c”表示moduledev是字符设备,“major”是moduledev 的主设备号。(该字符设备驱动程序编译加载后,可在/proc/modules文件中获得主设备号,或者使用命令:[root@linux/]#cat/proc/modules|awk”\\$2==\”

moduledev\”{print\\$1}”获得主设备号)

#include

#include

#include

#include

main(){

int i,testmoduledev;

char buf[10];

testmoduledev=open(“/dev/moduledev”,O_RDWR);

if(testmoduledev==-1){

printf(“Can’t open the file!\n”);

exit(0);

}

read(testmoduledev,buf,10);

for(i=0;i<10;i++)

printf(“%d\n”,buf[i]);

close(testmoduledev);

return0;

}

四.可提供的仪器设备

一台运行Red Hat Linux操作系统的PC,GNU C/C++。

五、预习要求:

1.在开始本实验之前,请回顾教科书中的相关内容。

2.掌握上述的原理与方法。

3.必须作实验预习,对预习报告不做形式要求。

4.按时完成实验并按时提交实验报告。

5.可以用C/C++语言实现。

六、注意事项:

注意保护设备,记录做实验的目的、方法、过程等,具体要写成实验报告。

七、思考题:

在程序正确的前提下如何使得程序设计结构更加合理,并在实验报告中分析内核模块和普通应用程序的区别。

实验五Linux系统调用设计实验

(选修,2学时)

一、实验目的

1)通过在Linux进程之间进行的通信实例来学习使用系统调用进行并发程序设计的方法。

2)通过Linux进程通信的程序设计与实现,进一步熟悉操作系统的进程概念,理解Linux进程管理概念和系统调用的用法。

3)通过编写和分析Linux实验程序,学习Linux程序设计、调试和运行的方法。

二、实验任务

1.分别编写父进程和子进程的工作程序以及进程通信的管道程序。

2.在管道程序中分别实例化父进程和子进程,并使双方通过管道进行数据通信。

三、实验原理与方法

并发程序的设计关键是使用创建进程的系统调用,使一个程序运行时可以生成几个同时运行的程序,如果程序中没有创建进程的动作则为顺序程序设计。

程序中定义管道和文件描述符,并且创建子进程child。

程序用到的系统调用有pipe()、dup()、fork()、close、execl()、exit,它们的功能分别是建立管道、复制文件描述符、创建进程并使子进程与父进程有相同的程序正文、关闭文件描述符、用指定文件覆盖调用程序、撤销当前进程。

清单pipeline.c

//定义管道程序

#define STD_INPUT0//定义标准输入设备描述符

#define STD_OUTPUT1//定义标准输出设备描述符

int fd[2];

main()

{

static char process1[]="father",process2[]="child";

pipe(fd);//定义管道

pipeline(process1,process2);//调用自定义函数pipeline()

exit(1);//程序结束

}

pipeline(char*process1,char*process2)

{

int i;

while((i=fork())==-1);//创建进程,直到创建成功为止

if(i)

{

close(fd[0]);//关闭管道输入描述符

close(STD_OUTPUT);//关闭标准输出描述符1

dup(fd[1]);//指定标准输出描述符1为管道写指针

close(fd[1]);//关闭原始管道写指针

execl(process1,process1,0);//用程序father覆盖当前程序

printf("father failed.\n");//execl()执行失败

}

else

{

close(fd[1]);//关闭管道输出描述符

close(STD_INPUT);//关闭标准输入描述符0

dup(fd[0]);//指定标准输入描述符0为管道读指针

close(fd[0]);//关闭原始管道读指针

execl(process2,process2,0);//用程序child覆盖当前程序

printf("child failed.\n");//execl()执行失败

}

exit(2);//程序结束

}

清单father.c

main()

{

static char string[]=“Parent is using pipe write.”;

int len;

len=sizeof(string);

write(l,string,len);/*将string中的内容写入管道中*/

printf(“parent,parent,parent\n\n\n”);

exit(0);

}

清单child.c

main()

{

char output[30];

read(0,output,30);/*从管道中读数据并存入output中*/

printf(“%s\n child,child.\n”,output);

return(0);

}

编译。

cc–o child child.c

cc-o father father.c

cc-o pipeline pipeline.c

运行。

./pipeline

若运行不成功,则应该用文本编辑器对源程序进行修改调试。

四.可提供的仪器设备

一台运行Red Hat Linux操作系统的PC,GNU C/C++。

五、预习要求:

1.在开始本实验之前,请回顾教科书中的相关内容。

2.掌握上述的原理与方法。

3.必须作实验预习,对预习报告不做形式要求。

4.按时完成实验并按时提交实验报告。

5.可以用C/C++语言实现。

六、注意事项:

注意保护设备,记录做实验的目的、方法、过程等,具体要写成实验报告。

七、思考题:

在程序正确的前提下如何结合前几次的实验内容,记录父进程和子进程交互的过程,生存的时间等信息。

实验六Linux共享内存分配实验

(选修,2学时)

一、实验目的

1)了解通过利用操作系统调用实现用户程序分配内存以及回收所用内存的程序过程,加深对操作系统存储管理机制的理解。

2)通过阅读和分析Linux实验程序,学习Linux程序设计、调试和运行的方法。

二、实验任务

1.调试给出的Linux实验程序文件。

2.分析Linux实验程序。

三、实验原理与方法

本实验程序主要定义了一个描述自由存储块的结构,每一个自由块都包含块的大小、指向下一块的指针以及块区本身,所有的自由块以地址增加顺序排列,并用链表链接起来。这一链表是本程序维护的一个空闲区域,对于操作系统的当前记录来说是已分出去的区域。因为本程序是运行在用户态的程序。

步骤1:在文本编辑中键入程序清单并保存为my-malloc.h。

my-malloc.h文件

#include

typedef long Align;/*for alignment to long boundary*/

union header{/*block header:*/

struct{

union header*next;/*next block if on Free list*/

unsigned int size;/*size of this block*/

}s;

Align x;/*force alignment of blocks*/

};

typedef union header Header;

#define NALLOC10/*minimum#units to request*/

static Header*morecore(unsigned int nu);

void*Malloc(unsigned int nbytes);

void Free(void*ap);

步骤2:在文本编辑中键入程序并保存为my-malloc.c。

my-malloc.c文件

#include

#include“my_malloc.h”

static Header base;/*empy list to get started*/

static Header*free_list=NULL;/*start of free list*/

/*Malloc:general-purpose storage allocator*/

void*Malloc(unsigned int nbytes)

{

Header*p,*prev;

unsigned int nunits;

nunits=(nbytes+sizeof(Header)-1)/sizeof(Header)+1;

if((prev=free_list)==NULL){/*no free list yet*/

base.s.next=free_list=prev=&base;

base.s.size=0;

}

for(p=prev->s.next;;prev=p,p=p->s.next){

if(p->s.size>=nunits){/*big enough*/

if(p->s.size==nunits)/*exactly*/

prev->s.next=p->s.next;

else{

p->s.size-=nunits;

p+=p->s.size;

p->s.size=nunits;

}

free_list=prev;

return(void*)(p+1);

}

if(p==free_list)/*wrapped around Free list*/ if((p=morecore(nunits))==NULL)

return NULL;/*none left*/

}/*endfor*/

}

/*morecore:ask system for more memory*/

static Header*morecore(unsigned int nu)

{

char*cp;

Header*up;

if(nu

nu=NALLOC;

cp=sbrk(nu*sizeof(Header));

printf(“sbrk:%X--%X\n”,cp,cp+nu*sizeof(Header));

if(cp==(char*)-1)/*no space at all*/

return NULL;

up=(Header*)cp;

up->s.size=nu;

Free(up+1);

return free_list;

}

/*Free:put block ap in Free list*/

void Free(void*ap)

{

Header*bp,*p;

bp=(Header*)ap–1;/*point to block header*/ for(p=free_list;!(bp>p&&bps.next);p=p->s.next)

if(p>=p->s.next&&(bp>p||bps.next))

break;/*freed block at start or end of arena*/ if(bp+bp->s.size==p->s.next){/*join to upper nbr*/ bp->s.size+=p->s.next->s.size;

bp->s.next=p->s.next->s.next;

}

else

bp->s.next=p->s.next;

if(p+p->s.size==bp){/*join to lower nbr*/ p->s.size+=bp->s.size;

p->s.next=bp->s.next;

}

else

p->s.next=bp;

free_list=p;

}

void printlist(void)

{

Header*p;

int i=0;

printf(“base:%X,base.next:%X,base.next.next:%X,free:%x\n”,&base, base.s.next,base.s.next->s.next,free_list);

for(p=&base;p->s.next!=free_list;p=->s.next){

i++;

printf(“block%d,size=%d”,I,p->s.size);

if(p>free_list)

printf(“used!\n”);

else

printf(“free!\n”);

}

}

当请求分配内存时,扫描自由存储块链表,直到找到一个足够大的可供分配的内存块,若找到的块大小正好等于所请求的大小时,就把这一块从自由链表中取下来,返回给申请者。若找到的块太大,即对其分割,并将一块大小适合的空间返回给申请者,余下的部分返回链表。若找不到足够大的块,就通过调用morecore()函数从操作系统区请求另外一块足够大的内存区域,并把它链接到自由块链表中,然后再继续搜索。

morecore()函数从操作系统得到存储空间,在Linux中,通过系统调用sbrk(n)向操作系统申请n 个字节的存储空间,返回值为申请到的存储空间的起始地址。由于要求系统分配存储空间是一个代价较大的操作,故通常一次申请一个较大的内存空间,需要时再将其分割。

释放存储块也要搜索自由链表,目的是找到适当的位置将要释放的块插进去,如果被释放的块的任何一边与链表中的某一块邻接,即对其进行合并操作,直到没有可合并的邻接块为止,这样可防止存储空间变得过于零碎。Linux正是通过采用所谓的Buddy算法防止存储空间由于内存空间的频繁分配和回收而变得过于零碎。

步骤3:在文本编辑中键入程序并保存为test.c。

test.c文件

#include“my-malloc.h.h”

void main(void)

{

/*print_list();*/

char*p[200];

int i;

for(i=0;i<20;i++){

p[i]=(char*)Malloc(8);

printf(“malloc%d,%X\n”,i,p[i]);

print_list();

}

for(i=19;i>=0;i--){

Free(p[i]);

printf(“free%d\n”,i);

print_list();

}

}

步骤4:编译。

gcc-o test test.c

如果有错,请用Text Editor工具修改源程序,直到编译通过。

步骤5:运行。

./test

分析实验结果。

四.可提供的仪器设备

一台运行Red Hat Linux操作系统的PC,GNU C/C++。

五、预习要求:

1.在开始本实验之前,请回顾教科书中的相关内容。

2.掌握上述的原理与方法。

3.必须作实验预习,对预习报告不做形式要求。

4.按时完成实验并按时提交实验报告。

六、注意事项:

注意保护设备,记录做实验的目的、方法、过程等,具体要写成实验报告。

七、思考题:

研读内核相关源文件理解内核对虚拟存储器的分配过程和机理。

6.4Linux声音设备编程(选修,2学时)

一、实验目的

通过对机器内部扬声器的编程:

1)了解和学习Linux内部设备的控制和管理方法。

2)熟悉Linux环境的程序设计和调试方法。

3)进一步了解操作系统输入/输出处理技术。

二、实验任务

1.分别编写父进程和子进程的工作程序以及进程通信的管道程序。

2.在管道程序中分别实例化父进程和子进程,并使双方通过管道进行数据通信。

三、实验原理与方法

在Linux环境下对声音设备进行编程比大多数人想象的要简单得多。常用的声音设备是内部扬声器和声卡,它们对应/dev目录下的一个或多个设备文件,我们可以像打开普通文件一样打开它们,用ioctl()函数设置一些参数,然后对这些打开的特殊文件进行写操作。

由于这些文件并非普通文件,所以不能用ANSI C(标准C)的fopen、fclose等来操作文件,而应该使用系统文件I/O处理函数(open、read、write、lseek和close)来处理这些设备文件。ioctl()或许是Linux 下最庞杂的函数,它可以控制各种文件的属性,在Linux声音设备编程中,最重要的就是使用此函数正确设置必要的参数。

在本实验中,我们通过来学习如何实现Linux下对机器内部扬声器的编程。由于此类编程涉及到系统设备的读写,所以,很多时候需要有root权限,如果将实验例子编译后不能正确执行,那么,首先请检查是否因为没有操纵某个设备的权限。

内部扬声器是控制台的一部分,所以它对应的设备文件为/dev/console。变量KIOCSOUND在头文件/usr/include/linux/kd.h中声明,使用ioctl()函数可以来控制扬声器的发声,使用规则为:ioctl(fd,KIOCSOUND,(int)tone);

fd为文件设备号,tone是音频值。当tone为0时,终止发声。但是,这里的音频和我们平常认为的音频是不同的。由于计算机主板定时器的时钟频率为1.19MHz,所以要进行正确的发声,必须进行如下的转换:

扬声器音频值=1190000/期望的音频值

扬声器发声时间的长短通过函数usleep(unsigned long usec)来控制,它在头文件/usr/include/unistd.h中定义,让程序睡眠usec微秒。

实验内容与步骤

步骤1:登录进入Rad Hat Linux。

步骤2:单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入清单6-4程序并保存为6-4.c。

清单6-4让扬声器按指定的长度和音频发声

#include

空间分析实验指导书

空间分析实验指导书 黎华 武汉理工大学资环学院 2011年9月

目录 实验一、市区择房分析 (2) 实验二、最短路径分析 (3) 实验三、寻找最佳路径 (5) 实验四(综合实验一)、学校选址规划 (7)

实验一、市区择房分析 1、背景 如何找到环境好、购物方便、小孩上学方便的居住区地段是购房者最关心的问题,因此购房者就需要从总体上对商品房的信息进行研究分析,选择最适宜的购房地段。 2、数据 ●城市市区交通网络图(network.shp) ●商业中心分布图(marketplace.shp) ●名牌高中分布图(school.shp) ●名胜古迹分布图(famous place.shp) 3、步骤 1)所寻找的区域应该满足以下条件 ●离主要交通要道200米之外,以减少噪音污染 ●在商业中心的服务范围内,服务范围以商业中心规模的大小(属性字段YUZHI)来 确定 ●距名牌高中在750米内,以便小孩上学便捷 ●距名胜古迹500米内,环境幽雅 2)对每个条件进行缓冲区分析,得到各个条件所对应的区域 3)运用空间叠置分析对上述4个图层进行叠加,得到适合的购房地段

实验二、最短路径分析 1.背景:在现实生活中寻求最短,最快,提高效率有着重大意义,而交通网络中要素的设置如权重的改变和阻强的设置对最短路径的选择也有着很大的影响,研究这些因子的改变究竟对最短路径能造成多大的影响,对于现实也有一定的指导意义。 2.目的:学会用ArcGIS9 进行各种类型的最短路径分析,了解内在的运算机理。 3.数据:试验数据位于\Chp7\Ex2,请将练习拷贝至E:\Chp7\Ex2\ 一个GeoDatabase 地理数据库:City.mdb,内含有城市交通网、超市分布图,家庭住址以及网络关系。 4.要求:应该能够给出到达指定目的地的路径选择方案根据不同的权重要求得到不同的最佳路径,并给出路径的长度;根据需求找出最近的设施的路径,这里是以超市为例。 (1)在网络中指定一个超市,要求分别求出在距离、时间限制上从家到超市的最佳路径。 (2)给定访问顺序,按要求找出从家经逐个地点达到目的地的最佳路径。 5.操作步骤: 首先打开ArcMap选择E:\Chp7\Ex2\city.mdb再双击后选择将整个要素数据集city加载进来。然后将place 点状要素以HOME 字段属性值进行符号化,1 值是家,0 值是超市,(1)无权重最佳路径的选择 1)在设施网络分析工具条上,点选旗标和障碍工具板下拉箭头,将旗标放在家和想要去的超市点上。 2)确认在Analysis 下拉菜单中的Options 按钮打开的Analysis Options 对话框中的weight 和weight filter 标签项全部是none,这样使得进行的最短路径分析是完全按照这个网络自身的长短来确定的。 3)点选追踪工作(Track task)下拉菜单选择寻找路径(find path)。单击solve 键,则最短路径将显示出来,这条路径的总成本将显示在状态列。 (2)加权最佳路径选择 1)在设施网络分析工具条上,点选旗标和障碍工具板下拉箭头,将旗标放在家和想去的某个超市点上。 2)选择Analysis 下拉菜单,选择Option按钮,打开Analysis Option对话框,选择Weight 标签页,在边的权重(edge weight)上,全部选择长度(length)权重属性。 3)点选追踪工作(Track task)下拉菜单选择寻找路径(find path)。单击solve键,则以长度为比重为基础的最短路径将显示出来,这条路径的总成本将显示在状态列。 4)上述是通过距离的远近选择而得到的最佳路径,而不同类型的道路由于道路车流量的问题,有时候要选择时间较短的路径,同样可以利用网络分析进行获得最佳路径。 这里的时间属性是在建网之前,通过各个道路的类型(主干道,次要道等)来给定速度属性,然后通过距离和速度的商值确定的,并将其作为属性设定于每个道路上,这里没有考虑红灯问题以及其他因素,而是一种理想情况,不过可以将其他的要素可以逐渐加入来完善。 (3)按要求和顺序逐个对目的点的路径的实现 1)在设施网络分析工具条上,点选旗标和障碍工具板下拉箭头,将旗标按照车辆访问的顺序逐个放在点上。

电脑DIY实验指导书

电脑DIY实验指导书 《电脑DIY》实验指导书 实验一了解计算机的组成3-13 一、实验目的 1、观察计算机系统的组成; 2、通过观察了解计算机系统中各个部件的连接方法; 3、了解各部件在系统中的作用。 二、实验前的准备工作 认真阅读本实验内容,准备打开主机箱的工具并按要求准备做好记录。 三、实验指导 在实验过程中要注意观察,并做好观察记录。 四、实验内容 1、观察系统外部设备的连接状况,记录各外设的名称、型号和与主机连接点情况; 2、在教师的指导下将外设去掉,用准备好的工具将主机箱打开; 3、观察主机的结构,记录主机箱内包含的部件的名称、规格等,如图所示:

电脑DIY 实验指导书 4、了解各部件的作用,看清楚部件的安装位置; 5、将主机箱安装好,并把外设连接好; 6、整理好使用过的用品,实验结束。 五、实验报告要求 1、将在实验过程中观察到的部件或设备按顺序记录在实验报告单上; 2、将你认为没有看明白的部分写出来。 这一次实验认识了计算机的组成,了解了cpu 、主板、内存的分类,认识了主板的南北桥芯片的作用和位置,知道了在以后购买时候应当注意的内容,知道如何选择硬件。了解了各个部位的主要硬件指标。

电脑DIY实验指导书 实验二计算机硬件的组装3-24 一、实验目的 1、在识别各个部件和板卡的基础上,将它们组装在一起; 2、通过对计算机系统的组装,进一步熟悉各部件的功能; 3、掌握安装和拆卸计算机部件的方法与注意事项。 二、实验前的准备工作 准备好必要的工具,认真阅读各部件的使用说明书,并按要求准备做好记录。 三、实验指导 在实验过程中要按安装步骤进行安装,找准各部件的安装位置,注意在拆装的过程中要用力均匀,防止损坏设备。 四、实验内容 1、按要求做好准备工作; 2、可将主板放置在绝缘泡沫板上; 3、将CPU、内存条和CPU风扇等安装在主板上; 4、将主板装入主机箱,拧紧主板的固定螺丝; 5、把电源固定在机箱的相应位置,并接好主板电源线; 6、安装显卡、声卡等内置板卡,并设置好主板跳线; 7、安装好硬盘、软驱和光驱等部件; 8、检查并确认安装正确无误; 9、连接好显示器、键盘和鼠标后可开机试验; 10、能正常启动后,请关机、断电并按相反顺序将各部件拆卸开放回原来位置。

实验指导书

苯甲酸红外光谱的测绘—溴化钾压片法制样 一、实验目的 1、了解红外光谱仪的基本组成和工作原理。 2、熟悉红外光谱仪的主要应用领域。 3、掌握红外光谱分析时粉末样品的制备及红外透射光谱测试方法。 4、熟悉化合物不同基团的红外吸收频率范围.学会用标准数据库进行图谱检索 及化合物结构鉴定的基本方法。 二、实验原理 红外光谱分析是研究分子振动和转动信息的分子光谱。当化合物受到红外光照射,化合物中某个化学键的振动或转动频率与红外光频率相当时,就会吸收光能,并引起分子永久偶极矩的变化,产生分子振动和转动能级从基态到激发态的跃迁,使相应频率的透射光强度减弱。分子中不同的化学键振动频率不同,会吸收不同频率的红外光,检测并记录透过光强度与波数(1/cm)或波长的关系曲线,就可得到红外光谱。红外光谱反映了分子化学键的特征吸收频率,可用于化合物的结构分析和定量测定。 根据实验技术和应用的不同,我们将红外光划分为三个区域:近红外区(0.75~2.5μm;13158~40001/cm),中红外区(2.5~25μm;4000~4001/cm)和远红外区(25~1000μm;400~101/cm)。分子振动伴随转动大多在中红外区,一般的红外光谱都在此波数区间进行检测。 傅立叶变换红外光谱仪主要由红外光源、迈克尔逊干涉仪、检测器、计算机和记录系统五部分组成。红外光经迈克尔逊干涉仪照射样品后,再经检测器将检测到的信号以干涉图的形式送往计算机,进行傅立叶变换的数学处理,最后得到红外光谱图。

傅立叶变换红外光谱法具有灵敏度高、波数准确、重复性好的优点,可以广泛应用于有机化学、金属有机化学、高分子化学、催化、材料科学、生物学、物理、环境科学、煤结构研究、橡胶工业、石油工业(石油勘探、润滑油、石油分析等)、矿物鉴定、商检、质检、海关、汽车、珠宝、国防科学、农业、食品、生物医学、生物化学、药学、无机和配位化学基础研究、半导体材料、法庭科学(司法鉴定、物证检验等)、气象科学、染织工业、日用化工、原子能科学技术、产品质量监控(远距离光信号光谱测量:实时监控、遥感监测等)等众多方面。 三、仪器和试剂 1、Nicolet 5700 FT-IR红外光谱仪(美国尼高力公司) 2、压片机(日本岛津公司) 3、压片模具(日本岛津公司) 4、玛瑙研钵(日本岛津公司) 5、KBr粉末(光谱纯,美国尼高力公司) 6、苯甲酸(分析纯) 四、实验步骤 1、样品的制备(溴化钾压片法)

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

硬件基础实验指导书与答案

《计算机硬件基础》课程实验指导书 辽宁工程技术大学软件学院 2017年5月

目录 64位操作系统下使用MASM (3) 实验上机操作范例 (5) 实验一CPU结构 (15) 实验二指令格式 (22) //实验三循环程序设计 (25) 实验四综合程序设计(一) (32) 实验五综合程序设计(二) (36) 实验六高级汇编技术 (42)

64位操作系统下使用MASM 1.安装DOSBox。双击DOSBox0.74-win32-installer.exe。 2.运行DOSBox。双击桌面的DOSBox快捷方式,如图1所示。 图1 运行DOSBOX虚拟机 3.将MASM文件夹里的全部文件拷贝到一个目录下,比如d:\masm下,然后将这个目录挂载为DOSBox的一个盘符下,挂载命令为Mount c d:\masm 。然后切换到挂载的c盘,如图2所示。

图2 挂载masm文件夹3.编译汇编源程序,如图3所示。 图3 汇编源程序4.连接和运行源程序,如图4所示。 图4连接和运行源程序

实验上机操作范例 【范例】完成具有如下功能的分段函数 1 X>0 Y = 0 X=0 -1 X<0 其中:X存放在内存单元中,Y为结果单元。【问题分析】根据题意画出程序流程图,如图1所示。 图1 分段函数的程序流程图 根据程序流程图编写如下程序 DSEG SEGMENT X DW ? Y DW ? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG

START:MOV AX, DSEG MOV DS, AX LEA SI, X MOV AX, [SI] AND AX, AX JNS LP1 MOV Y, 0FFH ; X<0 JMP END1 LP1: JNZ LP2 MOV Y, 00H JMP END1 LP2: MOV Y, 01H END1: MOV AH, 4CH INT 21H CSEG ENDS END START 汇编语言程序的开发分为以下4个部分:编辑(生成.asm文件)—→汇编(生成.obj文件)—→连接(生成.exe文件)—→调试。 下面介绍汇编语言源程序从编辑到生成一个可执行文件(.exe文件)的过程。利用Microsoft公司提供的MASM6.15版本的工具包(包括MASM.EXE、LINK.EXE、ML.EXE、DEBUG32.EXE等),如图2所示。

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

实验指导四空间大数据处理与地图投影

实验四空间数据处理与地图投影 一、实验目的 1.掌握空间数据处理(融合、拼接、剪切、交叉、合并)的基本方法,原理。 2.掌握地图投影变换的基本原理与方法。 3.掌握ArcGIS中投影的应用及投影变换的方法、技术,同时了解地图投影及其变换在实际中的应用。 二、实验准备 1.软件准备:ArcGIS 10.2 2.数据准备: (1)stationsll.shp(美国爱达荷州轮廓图) (2)idll.shp(美国爱达荷州滑雪场资料) 以上两个数据是以十进制表示经纬度数值的shapefile (3)snow.txt(美国爱达荷州40个滑雪场的经纬度值) (4)stations.shp,一个已投影的shapefile,用于检验习作2的投影结果 (5)idoutl.shp,基于爱达荷横轴墨卡托坐标系的爱达荷州轮廓图,用于检验习作3投影的正确性 三、实验容与步骤 1.空间数据处理 1.1 裁剪要素 ?在ArcMap中,添加数据“县界.shp”、“Clip.shp”(Clip 中有四个实体) ?开始编辑,激活Clip图层。选中Clip图层中的一个实体(注意不要选中“县界”中的实体!)

图4-1 编辑Clip ?点击按钮,打开ArcToolBox; ?选择“Analysis Tools->Extract”,双击“Clip”,弹出窗口剪切窗口,指定输入实体为“县界”,剪切实体为“Clip”(必须为多边形实体),并指定输出实体类路径及名称,这里请命名为“县界_Clip1” 如图4-5; 图4-2 工具箱

图4-3 剪切窗口 ?依次选中Clip主题中其它三个实体,重复以上的操作步骤,完成操作后将得到共四个图层——“县界_Clip1”,“县界_Clip2”,“县界_Clip3”,“县界_Clip4”); ?操作完成后,一定要“Save Editors”。 图4-4 生成四个剪切图层

计算机组成原理实验指导书

计算机组成原理 实验报告 学号: 姓名: 提交日期: 成绩: 计算机组成原理实验报告 Computer Organization Lab Reports ______________________________________________________________________________ 班级: ____ 姓名:____学号:_____ 实验日期:____

一.实验目的 1. 熟悉Dais-CMX16+达爱思教仪的各部分功能和使用方法。 2. 掌握十六位机字与字节运算的数据传输格式,验证运算功能发生器及进位控制的组合功能。了解运算器的工作原理。 3. 完成算术、逻辑、移位运算实验,熟悉ALU运算控制位的运用。 ______________________________________________________________________________二.实验环境 Dais-CMX16+达爱思教仪 ______________________________________________________________________________三.实验原理 实验中所用的运算器数据通路如图1-1所示。ALU运算器由CPLD描述。运算器的输出经过2片74LS245三态门与数据总线相连,2个运算寄存器AX、BX的数据输入端分别由4个74LS574锁存器锁存,锁存器的输入端与数据总线相连,准双向I/O输入输出端口用来给出参与运算的数据,经2片74LS245三态门与数据总线相连。 图1-1 运算器数据通路 图1-1中,AXW、BXW在“搭接态”由实验连接对应的二进制开关控制,“0”有效,通过【单拍】按钮产生的负脉冲把总线上的数据打入,实现AXW、BXW写入操作。 表1-1 ALU运算器编码表 算术运算逻辑运算 M M13 M12 M11 功能M M13 M12 M11 功能 M S2 S1 S0 M S2 S1 S0 0 0 0 0 A+B+C 1 0 0 0 读B 0 0 0 1 A—B —C 1 0 0 1 非A 0 0 1 0 RLC 1 0 1 0 A-1

智能仪器实验指导书.doc

《智能仪器》实验指导书 适用专业:电子信息专业 说明:实验课时数为8节课,可从以下实验中自行选取8学时进行实验 实验一模拟信号调理实验(有源滤波器的设计) 一、实验目的 1. 熟悉运算放大器和电阻电容构成的有源波器。 2. 掌握有源滤波器的调试。 二、实验学时 课内:2学时课外:2学时 三、预习要求 1. 预习有源低通、高通和带通滤波器的工作原理 2. 已知上限截止频率fH=480Hz,电容C=0.01uF,试计算图1所示电路形式的巴特沃斯二阶低通滤波器的电阻参数,运放采用OP-07。 3. 将图2中的电容C改为0.033uF,此时图2所示高通滤波器的下限截止频率fL=?。 四、实验原理及参考电路 在实际的电子系统中输入信号往往包含有一些不需要的信号成份,必须设法将它衰减到足够小的程度,或者把有用信号挑选出来。为此,可采用滤波器。 考虑到高于二阶的滤波器都可以由一阶和二阶有源滤波器构成,下面重点研究二阶有源滤波器。 1.二阶有源低通滤波器

二阶有源低通滤波器电路如图1所示。可以证明其幅频响应表达式为 图1 二阶有源低通滤波器图2 二阶有源高通滤波器 式中: 上限截止频率 当Q=0.707时,这种滤波器称为巴特沃斯滤波器。 2. 二阶有源高通滤波器 如果将图1中的R和C的位置互换,则可得二阶高通滤波器电路,如图2所示。令 和 可得其幅频响应表达式为

其下限截止频率 五、实验内容 1. 已知截止频率fH=200Hz,试选择和计算图1所示电路形式的巴特沃斯二阶低通滤波器的参数。运算放大器用OP-07。 2. 按图1接线,测试二阶低通滤波器的幅频响应。测试结果记入表1中。 表1 Vi=0.1V(有效值)的正弦信号 3. 按图2接线,测试二阶高通滤波器的幅频响应。测试结果记入表2中。 表2 Vi=0.1V(有效值)的正弦信号 4. 将图2中的电容C改为0.033uF,同时将1的输出与图2的输入端相连,测试它们串联起来的幅频响应。测试结果记入表3中。 表3 Vi=0.1V(有效值)的正弦信号 六、实验报告要求

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

ACCESS2010数据库技术实验指导书3

《ACCESS2010数据库技术及应用》 实验指导(3) 学号: 姓名: 班级: 专业:

实验三窗体 实验类型:验证性实验课时: 4 学时指导教师: 时间:201 年月日课次:第节教学周次:第周 一、实验目的 1. 掌握窗体创建的方法 2. 掌握向窗体中添加控件的方法 3. 掌握窗体的常用属性和常用控件属性的设置 二、实验内容和要求 1. 创建窗体 2. 修改窗体,添加控件,设置窗体及常用控件属性 三、实验步骤 案例一:创建窗体 1.使用“窗体”按钮创建“成绩”窗体。 操作步骤如下: (1)打开“教学管理.accdb”数据库,在导航窗格中,选择作为窗体的数据源“教师”表,在功能区“创建”选项卡的“窗体”组,单击“窗体”按钮,窗体立即创建完成,并以布局视图显示,如图3-1所示。 (2)在快捷工具栏,单击“保存”按钮,在弹出的“另存为”对话框中输入窗体的名称“教师”,然后单击“确定”按钮。 图3-1布局视图 2.使用“自动创建窗体”方式 要求:在“教学管理.accdb”数据库中创建一个“纵栏式”窗体,用于显示“教师”表中的信息。 操作步骤: (1)打开“教学管理.accdb”数据库,在导航窗格中,选择作为窗体的数据源“教师”表,在功能区“创建”选项卡的“窗体”组,单击“窗体向导”按钮。如图3-2所示。 (2)打开“请确定窗体上使用哪些字”段对话框中,如图3-3 所示。在“表和查询”下拉列表中光图3-2窗体向导按钮

标已经定位在所学要的数据源“教师”表,单击按钮,把该表中全部字段送到“选定字段”窗格中,单击下一步按钮。 (3)在打开“请确定窗体上使用哪些字”段对话框中,选择“纵栏式”,如图3-4所示。单击下一步按钮。 (4)在打开“请确定窗体上使用哪些字”段对话框中,输入窗体标题“教师”,选取默认设置:“打开窗体查看或输入信息”,单击“完成”按钮,如图3-5所示。 (5)这时打开窗体视图,看到了所创建窗体的效果,如图3-6所示。 图3-3“请确定窗体上使用哪些字”段对话框 图3-4“请确定窗体使用的布局”段对话框中

计算机硬件实验指导书模板

第一部分EL实验系统的结构 EL-l微机实验教学系统由功能实验板、可选的CPU板、二块小面包板三部分构成, 可安装在45*30*10cm的实验箱内。总框图如下: 面包板: 1)通用面包板 2)金属圆孔组成的通用实验板 CPU板: 1)8086 PC总线板 2)8086 CPU板 3)8051 CPU板 4)8098 CPU板 5)80C198 CPU板 功能实验板: 由若干相对独立的功能接口电路组成, 它们是: D/A电路、A/D电路、发光二极管电路、开关量输入电路、RAM/ROM电路、简单I/O电路、8253可编程定时器/计数器电路、8255并行接口电路、总线驱动电路、8279接口电路、单脉冲发生器、LED显示电路、键盘电路、复位电路、8250串行接口电路。 ( 一) 功能实验板结构

1、输出显示电路 1)数码显示电路。 该电路由6位共阴极数码管, 3片75452, 2片74SL07组成, 74LS07为段驱动器, 相应输入插孔为CZ4。75452为位驱动器, 相应输入插控为CZ3(LD1, LD2, LD3, LD4, LD5, LD6)。 2)LED灯显示电路。 该电路由2片74LS04, 12只发光二极管( 红、绿、黄各4只) 组成。12只二极管相应的输人插孔为CZ2(LI1, LI2, LI3, LI4, LI5, LI6, LI7, LI8, LI9, LI10, LIl1, LIl2) 2、信号发生电路 1)开关量输入电路: 该电路由8只开关组成, 每只开关有两个位置, 一个位置代表高电平, 一个位置代表低电平。该电路的输出插孔为CZl(Kl, K2, K3, K4, K5, K6, K7, K8)。 2)时钟输入电路: 该电路由1片74LSl6l组成: ·当CPU为PC总线时, 输入时钟为AT总线的CLK, ·当CPU为805l、8098、80C198时, CLK的输入时钟为晶振频率, ·当CPU为8086时, CLK是2MHz。 输出时钟为该CLK的2分频(CLK0), 4分频(CLKI), 8分频(CLK2), 16分频(CLK3), 相应输出插孔CZ47(CLK0, CLKl, CLK2,

实验指导书

混凝土基本理论及钢桁架静力测试试验指导书

试验一、钢筋混凝土受弯构件正截面破坏试验 一、试验目的 1.了解受弯构件正截面的承载力大小、挠度变化及裂缝出现和发展过程; 2.观察了解受弯构件受力和变形过程的三个工作阶段及适筋梁的破坏特征; 3.测定受弯构件正截面的开裂荷载和极限承载力,验证正截面承载力计算方法。 二、试件、试验仪器设备 1.试件特征 (1). 根据试验要求,试验梁的混凝土强度等级为C20,纵向受力钢筋强度等级I级。 (2). 试件尺寸及配筋如图1所示,纵向受力钢筋的混凝土净保护层厚度为15mm 。 (3). 梁的中间500mm 区段内无腹筋,其余区域配有 6@60的箍筋,以保证不发生斜 截面破坏。 (4). 梁的受压区配有两根架立筋,通过箍筋与受力筋绑扎在一起,形成骨架,保证受力钢筋处在正确的位置。 2.试验仪器设备 (1). 静力试验台座、反力架、支座及支墩 (2). 20T 手动式液压千斤顶 (3). 读数显微镜及放大镜 (4). 位移计(百分表)及磁性表座 三、试验装置及测点布置 1.试验装置见图2 (1). 在加荷架中,用千斤顶通过分配梁进行两点对称加载,使简支梁跨中形成长 500mm 的纯弯曲段(忽略梁的自重)。 (2). 构件两端支座构造应保证试件端部转动及其中一端水平位移不受约束,基本符 合铰支承的要求。 2.测点布置 梁的跨中及两个对称加载点各布置一位移计f 3~f 5,量测梁的整体变形,考虑在加载的过程中,两个支座受力下沉,支座上部分别布置位移测点f 1和f 2,以消除由于支座下沉对挠度测试结果的影响。 图1 试件尺寸及配筋图

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

oracle数据库实验指导书

计算机科学学院《ORACLE数据库》实验指导书

《ORACLE数据库》实验指导书 实验一Oracle数据库安装配置以及基本工具的使用 1.实验的基本内容 实验室中oracle数据库安装后某些服务是关闭的(为了不影响其他课程的使用),所以在进入数据库前需要对oracle进行配置: (1)启动oracle OraHomeTNSLISTENER 和oracleserviceORACLE 两个服务 (2)修改listener.ora 和tnsnames.ora 两个文件的内容 (3)以用户名:system ,口令:11111 以“独立登录”的方式进入oracle 数据库系统 (4)熟悉数据库中可用的工具。 2.实验的基本要求 (1)掌握Oracle11g的配置以及登录过程。 (2)熟悉系统的实验环境。 3.实验的基本仪器设备和耗材 计算机 4.实验步骤 (1) 查看设置的IP地址是否与本机上的IP地址一致。若不一致则修改为本机IP地址。 (2) 启动oracle OraHomeTNSLISTENER 和oracleserviceORACLE 两个服务 控制面板/性能与维护/管理工具/服务/ oracle OraHomeTNSLISTENER(右击/启动)。 控制面板/性能与维护/管理工具/服务/ oracleserviceORACLE(右击/启动) (3) 修改listener.ora 和tnsnames.ora 两个文件的内容 D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN (用记事本方式打开),将HOST=“…..”内容修改为本机的IP地址,保存退出。 D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN (用记事本方式打开),将HOST=“…..”内容修改为本机的IP地址,保存退出。 (4) 启动oracle 数据库

计算机组成原理实验指导书

计算机组成原理实验指导书适用TD-CMA实验设备

实验一基本运算器实验 一、实验原理 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3 0 CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。ALU中所有模块集成在一片CPLD中。 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。图中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1) 对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接0。 (2) 对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在4位矩阵中使用‘右1’和‘左3’对角线来实现右循环1位。 (3) 对于未连接的输出位,移位时使用符号扩展或是0填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。 原理如图1-1-1所示

图1-1-1 运算器原理图 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3 0 决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是算术运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。ALU中所有模块集成在一片CPLD(MAXII EPM240)中。 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。图中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即:

实验指导书

实验一材料硬度测定(综合性) 一、实验内容 1.金属布氏硬度实验。 2.金属洛氏硬度实验。 二、实验目的及要求 该实验的目的是使学生熟悉金属布氏、洛氏、维氏硬度计的使用方法,巩固硬度试验方法的理论知识,掌握各种硬度计的结构原理、操作方法及注意事项。要求学生具有踏实的理论知识,同时也具有严谨、一丝不苟的作风。 三、实验条件及要求 (一)实验条件 1.布氏硬度计、洛氏硬度计和显维硬度计,读数放大镜,标准硬度块。 2.推荐试样用材:灰铸铁、经调质处理的45钢、淬火低温回火的T10钢。 (二)要求 制备试样过程中不得使试样因冷、热加工影响试验面原来的硬度。试验面应为光滑的平面,不应有氧化皮及污物,测布氏硬度、洛氏硬度时试验面的粗糙度Ra≤0.8μm。 试验时,应保证试验力垂直作用于试验面上,保证试验面不产生变形、挠曲和振动。试验应在10~35℃温度范围内进行。 不同硬度试验对试样及试验操作尚有具体要求。 四、实验相关知识点 1.硬度试验原理。 2.对试样的要求。 3.硬度试验方法的选择。 4.各种硬度计的结构原理、操作方法及注意事项。 5.试验数据的获得。 6.不同硬度试验方法的关系。 五、实验实施步骤 (一)金属布氏硬度试验 金属布氏硬度值是单位压痕表面积所承受的外力。

1.试验规范的选择 布氏硬度试验时应根据测试材料的硬度和试样厚度选择试验规范,即压头材料与直径、F/D2值、试验力F及试验力保持时间t。 (1)压头材料与直径的选择压头为硬质合金球。 球体直径D的选择按GB/T231.1-2009《金属布氏硬度试验方法》有五种,即10mm、5mm、2.5mm、2mm和1mm。压头直径可根据试样厚度选择,见压头直径、压痕平均直径与试样最小厚度关系表。选择压头直径时,在试样厚度允许的条件下尽量选用10mm球体作压头,以便得到较大的压痕,使所测的硬度值具有代表性和重复性,从而更充分地反映出金属的平均硬度。 (2)F/D2、试验力F及试验力的选择 F/D2比值有七种:30、15、10、5、2.5、1.25和1,其值主要根据试验材料的种类及其硬度范围来选择。 球体直径D和F/D2比值确定后,试验力F也就确定了。 试验须保证压痕直径d在(0.24~0.6)D范围内,试样厚度为压痕深度的10倍以上。 (3)试验力保持时间t的选择试验力保持时间t主要根据试样材料的硬度来选择。黑色金属:t=10~15s;有色金属:t=(30±2)s;<35HBW的材料:t=(60±2)s。 2.布氏硬度试验过程 (1)试验前,应使用与试样硬度相近的二等标准布氏硬度块对硬度计进行校对,即在硬度块上不同部位测试五个点的硬度,取其平均值,其值不超过标准硬度块硬度值的±3%方可进行试验,否则应对硬度计进行调整、修理。 (2)接通电源,打开电源开关。将试样安放在试验机工作台上,转动手轮使工作台慢慢上升,使试样与压头紧密接触,直至手轮与螺母产生相对滑动。同时应保证试验过程中试验力作用方向与试验面垂直,试样不发生倾斜、移动、振动。 启动按钮开关,在施力指示灯亮的同时迅速拧紧压紧螺钉,使圆盘随曲柄一起回转,直至自动反向转动为止,施力指示灯熄灭。从施力指示灯亮到熄灭的时间为试验力保持时间,转动手轮取下试样。 (3)用读数显微镜在两个互相垂直的方向测量出试样表面的压痕直径d1 。

《流体力学》课程实验(上机)指导书及实验报告格式

《流体力学》课程实验指导书袁守利编 汽车工程学院 2005年9月

前言 1.实验总体目标、任务与要求 1)学生在学习了《流体力学》基本理论的基础上,通过伯努利方程实验、动量方程实 验,实现对基本理论的验证。 2)通过实验,使学生对水柱(水银柱)、U型压差计、毕托管、孔板流量计、文丘里流量计等流体力学常用的测压、测流量装置的结构、原理和使用有基本认识。 2.适用专业 热能与动力工程 3.先修课程 《流体力学》相关章节。 4.实验项目与学时分配 5. 实验改革与特色 根据实验内容和现有实验条件,在实验过程中,采取学生自己动手和教师演示相结合的方法,力求达到较好的实验效果。

实验一伯努利方程实验 1.观察流体流经实验管段时的能量转化关系,了解特定截面上的总水头、测压管水头、压强水头、速度水头和位置水头间的关系,从而加深对伯努利方程的理解和认识。 2.掌握各种水头的测试方法和压强的测试方法。 3.掌握流量、流速的测量方法,了解毕托管测速的原理。 二、实验条件 伯努利方程实验仪 三、实验原理 1.实验装置: 图一伯努利方程实验台 1.水箱及潜水泵 2.上水管 3.电源 4.溢流管 5.整流栅 6.溢流板 7.定压水箱 8.实验 细管9. 实验粗管10.测压管11.调节阀12.接水箱13.量杯14回水管15.实验桌 2.工作原理 定压水箱7靠溢流来维持其恒定的水位,在水箱下部装接水平放置的实验细管8,水经实验细管以恒定流流出,并通过调节阀11调节其出水流量。通过布置在实验管四个截面上的四组测压孔及测压管,可以测量到相应截面上的各种水头的大小,从而可以分析管路中恒定流动的各种能量形式、大小及相互转化关系。各个测量截面上的一组测压管都相当于一组毕托管,所以也可以用来测管中某点的流速。 电测流量装置由回水箱、计量水箱和电测流量装置(由浮子、光栅计量尺和光电子

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