当前位置:文档之家› 西安交通大学操作系统课内实验报告

西安交通大学操作系统课内实验报告

西安交通大学操作系统课内实验报告
西安交通大学操作系统课内实验报告

西安交通大学实验报告

操作系统实验报告

岳凡

2130505141

计算机36班

操作系统实验

实验一:用户接口实验

实验目的

1)理解面向操作命令的接口Shell。

2)学会简单的shell编码。

3)理解操作系统调用的运行机制。

4)掌握创建系统调用的方法。

操作系统给用户提供了命令接口和程序接口(系统调用)两种操作方式。用户接口实验也因此而分为两大部分。首先要熟悉Linux的基本操作命令,并在此基础上学会简单的shell 编程方法。然后通过想Linux内核添加一个自己设计的系统调用,来理解系统调用的实现方法和运行机制。在本次实验中,最具有吸引力的地方是:通过内核编译,将一组源代码变成操作系统的内核,并由此重新引导系统,这对我们初步了解操作系统的生成过程极为有利。

实验内容

1)控制台命令接口实验

该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux 操作系统的bash”来让实验者理解面向操作命令的接口shell和进行简单的shell编程。

查看bash版本。

在shell 提示符下输入:

$echo $BASH_VERSION

我们的版本是4.3.42(1)-release

(2)建立bash 脚本,输出Hello word

在编辑器中输入以下内容

#!/bin/bash

echo Hello World!

执行脚本使用指令:

$./script

编写bash脚本,统计/my目录下c语言文件的个数

通过bash 脚本,可以有多种方式实现这个功能,而使用函数是其中个一个选择。在使用函数之前,必须先定义函数。进入自己的工作目录,编写名为count 的文件脚本程序:

#! /bin/bash

function c ount

{

echo –n " Number of matches for $1: " #接收程序的第一个参数

ls $1|wc –l #对子程序的第一个参数所在的目录进行操作

}

将count 文件复制到当前目录下,然后在当前目录下建立文件夹,在my 目录下建立几个c 文件,以便用来进行测试

2)系统调用实验

该实验是通过实验者对“Linux操作系统的系统调用机制”的进一步了解来理解操作系统调用的运行机制;同时通过“自己创建一个系统调用mycall()”和“编程调用自己创建的系统调用”进一步掌握创建和调用系统调用的方法。

编程调用一个系统调用fork(),观察结果。

在应用程序中调用系统调用fork()非常简单,下面的程序可以很清楚的显示出有fork()系统调用生成了子进程,而产生的分叉作用:

# include

int main()

{

int iUid;

iUid=fork();

if(iUid==0)

for(;;) { printf("This is child process.\n");

sleep(1);

}

if(iUid>0)

for(;;) {

printf("This is parent process.\n");

sleep(1);

}

if(iUid<0) printf("Can not use system call.\n");

return 0;

}

程序运行结果:

编程调用创建的系统调用foo(),观察结果。

在内核源码中添加如下代码:

asmlinkage int sys_foo(int x)

{ printf(“%d\n”,x);

}

编程调用创建的系统调用foo(),观察结果。

#include

#include

_syscall1(char*,foo,int,ret)

main()

{

int I,J; I=100; J=0; J=foo(I);

printf("This is the result of new kernel\n");

printf("%d",j);

}

重新编译内核,编译成功后的内核版本如下:

自己创建一个系统调用mycall(),实现功能:显示字符串到屏幕上。在内核源码中添加如下代码:

#include

asmlinkage long sys_newcall(int i)

{

//printk("this is a system call made by yourself\n");

return(i*10);

}

测试新的System_call

CODE: vi test.c

编程调用自己创建的系统调用。

测试:CODE:./test

实验体会:

通过本次实验,我们理解了面向操作命令的接口Shell,学会了简单的shell 编码,理解了操作系统调用的运行机制,掌握了创建系统调用的方法。本次实验通过内核编译,将一组源代码变成操作系统的内核,并由此重新引导系统,这让我们初步了解了操作系统的生成过程。

实验二:进程管理实验

实验目的

1)加深对进程概念的理解,明确进程和程序的区别。

2)进一步认识并发执行的实质。

3)分析进程争用资源的现象,学习解决进程互斥的方法。

4)了解Linux系统中进程通信的基本原理。

进程是操作系统中最重要的概念,贯穿始终,也是学习现代操作系统的关键。通过本次实验,要求理解进程的实质和进程管理的机制。在Linux系统下实现进程从创建到终止的全过程,从中体会进程的创建过程、父进程和子进程的关系、进程状态的变化、进程之间的同步机制、进程调度的原理和以信号和管道为代表的进程间通信方式的实现。

实验内容

1)编制实现软中断通信的程序

1.实验原理:

使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上发出的中断信号(即按delete键),当父进程接收到这两个软中断的某一个后,父进程用系统调用kill()向两个子进程分别发出整数值为16和17软中断信号,子进程获得对应软中断信号,然后分别输出下列信息后终止:

Child process 1 is killed by parent !!

Child process 2 is killed by parent !!

父进程调用wait()函数等待两个子进程终止后,输入以下信息,结束进程执行:Parent process is killed!!

2.实验源码:

#include

#include

#include

#include

int wait_flag;

void stop( );

main( ) {

int pid1, pid2; // 定义两个进程号变量

signal(3,stop); // 或者signal(14,stop);

while((pid1 = fork( )) == -1); // 若创建子进程1不成功,则空循环

if(pid1 > 0) { // 子进程创建成功,pid1为进程号

while((pid2 = fork( )) == -1); // 创建子进程2

if(pid2 > 0) {

wait_flag = 1;

sleep(5); // 父进程等待5秒

kill(pid1,16); // 杀死进程1

kill(pid2,17); // 杀死进程2

wait(0); // 等待第1个子进程1结束的信号

wait(0); // 等待第2个子进程2结束的信号

printf("\n Parent process is killed !!\n");

exit(0); // 父进程结束

}

else {

wait_flag = 1;

signal(17,stop); // 等待进程2被杀死的中断号17

printf("\n Child process 2 is killed by parent !!\n");

exit(0);

}

}

else {

wait_flag = 1;

signal(16,stop); // 等待进程1被杀死的中断号16

printf("\n Child process 1 is killed by parent !!\n");

exit(0);

}

}

void stop( ) {

wait_flag = 0;

}

3.程序运行结果:

或者多次运行,并且Delete键后,会出现如下结果:

4.简要原因分析:

上述结果中“Child process 1 is killed by parent !!” 和“Child process 2 is killed by parent !!”相继出现,当运行几次后,谁在前谁在后是随机的。这是因为:从进程调度的角度看,子进程被创建后处于就绪态。此时,父进程和子进程作为两个独立的进程,共享同一个代码段,分别参加调度、执行,直至进程结束。但是谁会先被调度程序选中执行,则与系统的调度策

略和系统当前的资源状态有关,是不确定的。因此,谁先从fork()函数中返回继续执行后面的语句也是不确定的。

2)编制实现进程的管道通信的程序

1.实验原理:

使用系统调用pipe()建立一条管道线,两个子进程分别向管道写一句话:

Child process 1 is sending a message!

Child process 2 is sending a message!

而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

要求:父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。

2.程序源码:

#include

#include

#include

int pid1,pid2; // 定义两个进程变量

main( ) {

int fd[2];

char OutPipe[100],InPipe[100]; // 定义两个字符数组

pipe(fd); // 创建管道

while((pid1 = fork( )) == -1); // 如果进程1创建不成功,则空循环

if(pid1 == 0) { // 如果子进程1创建成功,pid1为进程号

lockf(fd[1],1,0); // 锁定管道

sprintf(OutPipe,"\n Child process 1 is sending message!\n"); // 给Outpipe赋值

write(fd[1],OutPipe,50); // 向管道写入数据

sleep(5); // 等待读进程读出数据

lockf(fd[1],0,0); // 解除管道的锁定

exit(0); // 结束进程1

}

else {

while((pid2 = fork()) == -1); // 若进程2创建不成功,则空循环if(pid2 == 0) {

lockf(fd[1],1,0);

sprintf(OutPipe,"\n Child process 2 is sending message!\n");

write(fd[1],OutPipe,50);

sleep(5);

lockf(fd[1],0,0);

exit(0);

}

else {

wait(0); // 等待子进程1 结束

read(fd[0],InPipe,50); // 从管道中读出数据

printf("%s\n",InPipe); // 显示读出的数据

wait(0); // 等待子进程2 结束read(fd[0],InPipe,50);

printf("%s\n",InPipe);

exit(0); // 父进程结束

}

}

}

3.运行结果截图:

4.简要分析

管道,是指用于连接一个读进程和一个写进程,以实现它们之间信息的共享文件又称pipe文件。向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入管道;而接收管道输送的接收进程(读进程),可以从管道中接收数据。

为了协调双方的通信,管道通信机制必须提供以下3方面的协调能力:

互斥。当一个进程正在对pipe进程读/写操作时,另一进程必须等待,程序中使用lock(fd[1],1,0)函数实现对管道的加锁操作,用lock(fd[1],0,0)解除管道的锁定。

同步。当写进程把一定数量的数据写入pipe后,便去睡眠等待,直到读进程取走数据后,再把它唤醒。当读进程试图从一空管道中读取数据时,也应睡眠等待,直至

写进程将数据写入管道后,才将其唤醒。

判断对方是否存在。只有确定写进程和读进程都存在的情况下,才能通过管道进行通信。

5)实验体会:

通过本次实验,我们理解了进程的实质和进程管理的机制。进程是操作系统中最重要的概念,是现代操作系统的关键。实验中我们在Linux 系统下实现进程从创建到终止的全过程,体会了进程的创建过程、父进程和子进程的关系、进程状态的变化、进程之间的同步机制、进程调度的原理和以信号和管道为代表的进程间通信方式的实现。

实验三存储器管理实验

实验目的

1)理解内存页面调度的机理

2)掌握几种理论页面置换算法的实现方法

3)了解HASH数据结构的使用

4)通过实验比较几种调度算法的性能优劣

页面置换算法是虚拟存储管理实现的关键,通过本次实验理解内存页面调度的机制,在模拟实现FIFO、LRU、NRU和OPT几种经典页面置换算法的基础上,比较各种页面置换算法的效率及优缺点,从而了解虚拟存储实现的过程。

准备知识

(1)C++、指针、结构体(类)

(2)HASH表查找方式

(3)操作系统相关内存交换知识

(4)用到的LINUX函数

int getpid() 获得当前进程的id

void srand ( int a ) 以a为种子产生随机数

int rand() 根据前面的种子,返回一个随机数实验内容

程序整体截图:

对比以下几种算法的命中率:

1)先进先出算法FIFO(First In First Out)

运行结果截图:

2)最近最少使用算法LRU(Least Recently Used)

运行结果截图:

3)最佳置换算法OPT(Optimal Replacement)

运行结果截图:

实验四文件系统实验

实验目的

1)掌握文件系统的工作机理。

2)理解文件系统的主要数据结构。

3)学习较为复杂的LINUX下的编程

实验内容

1)设计并实现一个一级(单用户)文件系统程序

a.提供以下操作:

文件创建/删除接口命令create/delete

目录创建/删除接口命令mkdir/rmdir

显示目录内容命令ls

b.创建的文件不要求格式和内容

2)设计并实现一个二级文件系统程序

a.提供用户登录;

b.文件、目录要有权限

3)程序设计思想

设计一个简单的文件系统,包括格式化、显示目录(文件)、创建文件、登录等几个简单命令的实现,而且能完成超级块的读写、节点的读写等过程。这是一个比真正的文件系统简单得多、但又能基本体现文件系统理论的程序。在超级块的使用上,采用操作系统关于这方面的经典理论:在节点使用上,主要模仿LINUX的EXT2文件系统。

4)程序截图:

5)实验体会:

通过本次实验,我们理解了内存页面调度的机制,掌握了几种理论页面置换算法的实现

方法,了解了HASH 数据结构的使用。页面置换算法是虚拟存储管理实现的关键,FIFO、LRU、NRU 和OPT 是几种经典页面置换算法,我们通过实现这几种算法,比较了较各种页面置换算法的效率及优缺点,从而了解了虚拟存储实现的过程。

程序源代码:(部分源码截图)

存储器管理实验源代码部分截图:

文件系统实验源代码部分截图:

操作系统-Linux课程实验报告

实验、 Linux Ubuntu的安装、创建新的虚拟机VMWare 实验 Shell编程 1.实验目的与内容 通过本实验,了解Linux系统的shell机制,掌握简单的shell编程技巧。 编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,如“Welcome to Linux”, 并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。 2.程序源代码清单 #include<> #include int main(){ printf("Hello Linux\n"); int pid; int state; int pfd[2]; pipe(pfd); if (fork()==0){ printf("In the grep progress\n"); dup2(pfd[0],0); close(pfd[0]); close(pfd[1]); execlp("grep","grep","sh",0); perror("exelp grep error"); } esle if(fork()==0){ printf("In the ps progress\n"); dup2(pfd[1],1); close(pfd[0]); close(pfd[1]); execlp("ps","ps","-ef",0); perror("execlp ps -ef"); }

close(pfd[1]); close(pfd[0]); wait(&state); wait(&state); } 实验内核模块 实验步骤: (1).编写内核模块 文件中主要包含init_clock(),exit_clock(),read_clock()三个函数。其中init_clock(),exit_clock()负责将模块从系统中加载或卸载,以及增加或删除模块在/proc中的入口。read_clock()负责产生/proc/clock被读时的动作。 (2).编译内核模块Makefile文件 # Makefile under ifneq ($(KERNELRELEASE),) #kbuild syntax. dependency relationshsip of files and target modules are listed here. obj-m := else PWD := $(shell pwd) KVER ?= $(shell uname -r) KDIR := /lib/modules/$(KVER)/build all: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: rm -rf .*.cmd *.o *. *.ko .tmp_versions *.symvers *.order endif 编译完成之后生成模块文件。 (3).内核模块源代码 #include #include #include #include #include #include #define MODULE #define MODULE_VERSION "" #define MODULE_NAME "clock" struct proc_dir_entry* my_clock; int read_clock(char* page, char** start, off_t off, int count, int* eof, void* data) { int len; struct timeval xtime;

网页设计实验报告

实验报告 课程名称网络技术基础实验项目TCP/IP协议配置实验仪器计算机 系别 专业 班级/学号 学生姓名 实验日期 成绩 指导教师

实验一 TCP/IP协议配置 一、实验目的(标题黑体小四) 1.熟练掌握模板的用法。 2.掌握CSS的用法。 3.掌握网站发布的方法。 二、实验内容 1. 创建和使用模板。 2. css的创建和使用。 3. 发布网站。 三、实验课时 4课时 四、实验步骤 创建网站 1、创建一个站点,并创建 images 文件夹存放图片。将示例图片拷贝至images 目录下 2、创建 CSS 文件,名称为 style.css,将其保存至 style文件夹。 3、创建模板文件 tpl.dwt,并保存。结果如下: (1) 给 tpl.dwt 附加样式表 style.css。 在 tpl.dwt 的空白处点击鼠标右键,选择“附加样式表”: 选择 style.css 文件: 完成后,在 tpl.dwt 的 head标签里有如下的代码: (2) 设置模板的背景颜色。打开 CSS 面板,为 style.css 新建一条 css 规则。过程如 下:

将背景颜色设为#ff1e70: 在 style.css 生成如下的代码: body { background-color: #ff1e70? } 3) 制作布局。插入一 2 行 2 列的表格。表格的宽度=316+634=950,其他的设置:让表格居中对齐。 (4) 消除表格两边的空隙。展开 CSS 样式表,双击 body: 双击 body后,打开“body的 CSS 规则定义”对话框,按照下面的方式设置:Style.css 的代码变为: body { background-color: #ff1e70? margin: 0px? }

西安交通大学接口技术实验报告

西安交通大学 微型计算机接口技术实验报告 班级:物联网 姓名: 学号:

实验一基本I/O扩展实验 一、实验目的 1、了解 TTL 芯片扩展简单 I/O 口的方法,掌握数据输入输出程序编制的方法; 2、对利用单片机进行 I/O 操作有一个初步体会。 二、实验内容 74LS244 是一种三态输出的8 总线缓冲驱动器,无锁存功能,当G 为低电平时,Ai 信号传送到Yi,当为高电平时,Yi 处于禁止高阻状态。 74LS273 是一种8D 触发器,当CLR 为高电平且CLK 端电平正跳变时,D0——D7 端数据被锁存到8D 触发器中。 实验原理图: 三、实验说明 利用74LS244 作为输入口,读取开关状态,并将此状态通过74LS273 再驱动发光二极管显示出来,连续运行程序,发光二极管显示开关状态。

四、实验流程图 五、实验连线 1、244的cs连接到CPU地址A15,Y7—Y0连接开关K1-K8; 2、273的CS连接到CPU地址A14,Q7-Q0连接到发光二极管L1-L8; 3、该模块的WR,RD连接CPU的WR,RD,数据线AD7-AD0,地址线A7-A0分别与CPU的数据线AD7-AD0,地址线A7-A0相连接。

六、程序源代码(略) 七、实验结果 通过开关K01 到K08 可以对应依次控制LED 灯的L1 到L8 ,即当将开关Ki 上拨时,对应的Li 被点亮,Ki 下拨时,对应的Li熄灭。 此外,如果将开关拨到AAH 时,将会产生LED 灯左移花样显示;如果开关拨到55H 时,将会产生LED 灯右移花样显示。 七、实验心得 通过本次实验,我了解了TTL 芯片扩展简单I/O 口的方法,同时也对数据输入输出程序编制的方法有一定的了解与掌握,对利用单片机进行I/O 操作有一个初步体会,实验使我对自己在课堂上学的理论知识更加理解,同时也锻炼了我的动手操作能力。

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

计算机操作系统实验课实验报告

实验报告 实验课程: 计算机操作系统学生姓名:XXX 学号:XXXX 专业班级:软件 2014年12月25日

目录 实验一熟悉Windows XP中的进程和线程.. 3实验二进程调度 (7) 实验三死锁避免—银行家算法的实现 (18) 实验四存储管理 (24)

实验一熟悉Windows XP中的进程和线程 一、实验名称 熟悉Windows XP中的进程和线程 二、实验目的 1、熟悉Windows中任务管理器的使用。 2、通过任务管理器识别操作系统中的进程和线程的相关信息。 3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。 三、实验结果分析 1、启动操作系统自带的任务管理器: 方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并 完成下表: 表一:统计进程的各项主要信息 3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。再

从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程, 原因是该系统是系统进程。 4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所 有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。 5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进 程“explorer.exe”的各项信息,并填写下表: 进程:explorer.exe 中的各个线程

Web网页设计实验报告

WEB系统开发 综合实验报告 题目红尘客栈网上订房页面 专业计算机科学与技术(信息技术及应用) 班级计信2班 学生蒋波涛 重庆交通大学 2013年

目录 一、设计目的 (3) 二、设计题目 (3) 三、结构设计 (3) 四、技术分析 (4) 五、设计过程 (7) 六、实验心得 (10) 七、实验总结 (11)

一、设计目的 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。我们当代大学生更是离不开网络给我们带来的好处与便利.但是,我们成天浏览的网站网页到底是如何制作的呢?我想这一点很多同学都没有去深究过.所以,这学期我选择了”web网页设计”这门课, 本课程的设计目的是通过实践使同学们经历网页制作的全过程. 通过设计达到掌握网页设计、制作的技巧。 了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。 熟练掌握Photoshop cs3、Dreamweaver cs等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素质。学会和团队配合,逐渐培养做一个完整项目的能力。 二、设计题目 《红尘客栈》 三、结构设计 选定主题,确定题目之后,在做整个网站之前对网站进行需求分析。首先,做好需求调研。调研方式主要是上网查阅资料,在图书馆里翻阅相关书籍。 然后,调研结束之后对整个网站进行功能描述,并对网站进行总体规划,接着逐步细化。 我们选做的主题是个人主页,并且选定题目为“红尘客栈”,其目的是做一个简单的网站,介绍酒店概况,提供一定的资讯信息。 四、技术分析 (一)建立布局 在这次的网页设计中用到大量的布局,所以怎么样建立布局是关键。Dreamweaver cs3是大多数人设计网页的称手兵器,也是众多入门者的捷径。特别是其在布局方面的出色表现,更受青睐。大家都知道,没有表格的帮助,很难组织出一个协调合理的页面。 1.点击“ALT+F6”键,进入布局模式,插入布局表格。建立一个大概的布局。 2.使用背景图片:选中该项,按浏览可以插入一幅准备好的图片作为表格的背景,因为图片是以平铺的形式作为表格背景,所以表格大小和图片尺寸都要控制好。 (二)网页中的图像

西安交大数字图像处理第二次实验报告

数字图像处理第二次作业

摘要 本次报告主要记录第二次作业中的各项任务完成情况。本次作业以Matlab 2013为平台,结合matlab函数编程实现对lena.bmp,elain1.bmp图像文件的相关处理:1.分别得到了lena.bmp 512*512图像灰度级逐级递减8-1显示,2.计算得到lena.bmp图像的均值和方差,3.通过近邻、双线性和双三次插值法将lena.bmp zoom到2048*2048,4. 把lena和elain 图像分别进行水平shear(参数可设置为1.5,或者自行选择)和旋转30度,并采用用近邻、双线性和双三次插值法zoom到2048*2048。以上任务完成后均得到了预期的结果。 1.把lena 512*512图像灰度级逐级递减8-1显示 (1)实验原理: 给定的lena.bmp是一幅8位灰阶的图像,即有256个灰度色。则K位灰阶图像中某像素的灰度值k(x,y)(以阶色为基准)与原图同像素的灰度值v(x,y)(以256阶色为基准)的对应关系为: 式中floor函数为向下取整操作。取一确定k值,对原图进行上式运算即得降阶后的k位灰阶图像矩阵。 (2)实验方法 首先通过imread()函数读入lena.bmp得到图像的灰度矩阵I,上式对I矩阵进行灰度降阶运算,最后利用imshow()函数输出显示图像。对应源程序为img1.m。 (3)处理结果 8灰度级

7灰度级 6灰度级 5灰度级

4灰度级 3灰度级 2灰度级

1灰度级 (4)结果讨论: 由上图可以看出,在灰度级下降到5之前,肉眼几乎感觉不出降阶后图像发生的变化。但从灰度级4开始,肉眼明显能感觉到图像有稍许的不连续,在灰度缓变区常会出现一些几乎看不出来的非常细的山脊状结构。随着灰度阶数的继续下降,图像开始出现大片的伪轮廓,灰度级数越低,越不能将图像的细节刻画出来,最终的极端情况是退化为只有黑白两色的二值化图像。由此可以得出,图像采样的灰度阶数越高,灰度围越大,细节越丰富,肉眼看去更接近实际情况。 2.计算lena图像的均值方差 (1)实验原理 对分辨率为M*N的灰度图像,其均值和方差分别为: (2)实验方法 首先通过imread()函数读入图像文件到灰度矩阵I中,然后利用 mean2函数和std2函数计算灰度矩阵(即图像)的均值和标准差,再由标准差平方得到方差。对应源程序:img1.m (3)处理结果 均值me =99.0512,标准差st =52.8776,方差sf =2.7960e+03。 (4)结果分析 图像的均值可反应图像整体的明暗程度,而方差可以反应图像整体的对比度情况,方差越大,图像的对比度越大,可以显示的细节就越多。 3.把lena图像用近邻、双线性和双三次插值法zoom到2048*2048; (1)实验原理 图像插值就是利用已知邻近像素点的灰度值来产生未知像素点的灰度值,以便由原始图

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

简单网页制作实验总结报告

《大学计算机基础》 实验报告 专业名称: 电子商务2班 学号: xxxxxxxxxxx 姓名: x x 指导教师: x x 2011年12月24日

目录 第一章网站主题设计说明 (1) 1.1 主题内容 (1) 1.2 设计思路 (1) 第二章网站内容设计 (2) 1.1 链接1标题 (2) 1.2 链接2标题 (2) 1.3 flash制作说明 (2) 第三章网站技术难点 (3) 第四章心得体会..................................... ..... ......................... (4)

第一章网站主题设计说明 1.1 主题内容 (1) 网站主题为“四季の花”,包括春夏秋冬四个季节的比较典型的花朵及有关花的诗句,色彩缤纷,十分艳丽夺目。 1.2 设计思路 (2) 大多网站都设计的关于音乐,影视,购物等非常热门的东西,本站设计的主题是花,能让人们在闲下来的时候看看花,品品诗歌,所以做有关花的网页是个不错的选择。同时,让人们分清楚春夏秋冬都各有什么典型的花。

第二章网站内容设计 1.1链接1标题:春の花 春天是生命的季节,在这个季节里,万物复苏。所以就找了虞美人,桃花,牡丹,以及海棠花来作为春天的代表。同时配有与这些花有关的诗句。 1.2 链接2标题:夏の花 夏天充满了激情与阳光,我找了兰花,荷花,百合花等来代表这个季节,色彩艳丽,十分醒目夺人。 1.3 链接3标题:秋の花 大丽花,菊花,月季和牡丹花都竞相出现在本网页,色彩缤纷,赏心悦目。 1.4 链接4标题:冬の花 蝴蝶兰,水仙,迎春花,梅花是冬季的代表,他们刻画了一副傲立冬天的坚强的姿态。

西 安 交 通 大 学 实 验 报 告 生物信息学

课程生物信息学实验名称核酸和蛋白质序列数据的使用系别实验日期: 专业班级组别交报告日期: 姓名学号报告退发:(订正、重做) 同组人无教师审批签字: 实验目的:了解常用的序列数据库,掌握基本的序列数据信息的查询方法。 实验步骤:在序列数据库中查找某条基因序列(insulin人的),通过相关一系列数据库的搜索、比对与结果解释 实验结果: 1.该基因的功能是? DNA结合、RNA结合、雄激素受体结合、酶结合、蛋白结合、转录激活活性、转录调控区的DNA结合、微管蛋白结合、泛素蛋白与连接酶结合、泛素蛋白连接酶的活性、提高泛素蛋白连接酶的活性、锌离子结合 3. 该蛋白质有没有保守的功能结构域 该蛋白质有保守的功能结构域。分别为cd00027(Location:1763 –1842 Blast Score: 107)cd00162(Location:23 –68 Blast Score: 134)pfam04873(Location:655 –978 Blast Score: 1301)pfam12820(Location:344 –507 Blast Score: 809)pfam13923(Location:20 –65 Blast Score: 135) 4. 该蛋白质的功能是怎样的? ①E3泛素蛋白连接酶,专门介导L YS-6'-联泛素链的形成,并通过促胞对DNA损伤的反应,在DNA修复中起着核心的作用;目前还不清楚是否也介导其他类型的泛素链形成。E3泛素蛋白连接酶的活性是其抑癌能必需的。②BARD1- BRCA1异源二聚体协调各种不同的细胞通路,如DNA损伤修复,泛素化和转录调控,以维持基因组稳定性。③调节中心体微核。 ④从G2到有丝分裂的正常细胞周期进程所必需的。⑤参与转录调控在DNA损伤反应中的P21。⑥为FANCD2靶向DNA损伤位点所需。⑦可以用作转录调控因子。⑧绑定到ACACA 和防止其去磷酸化,抑制脂质合成。 5. 该蛋白质的三级结构是什么?如果没有的话, 和它最相似的同源物的结构是什么样子的?给出 示意图。 该蛋白有三级结构,如图所示

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

网页制作实验报告

网页制作实验报告 页制作实验报告 实验一:站点设置 一、实验目的及要求 本实例是经过“站点定义为”对话框中的“高级”选项卡创建一具新站点。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域,同时接入国际互联。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装页三剑客(dreamweaver mx;flash mx;fireworks mx)等页设计软件; 三、实验原理 经过“站点定义为”对话框中的“高级”选项卡创建一具新站点。 四、实验办法与步骤 1)执行“站点\治理站点”命令,在弹出的“治理站点”对话框中单击“新建”按钮,在弹出的快捷菜单中挑选“站点”命令。 2)在弹出的“站点定义为”对话框中单击“高级”选项卡。 3)在“站点名称”文本框中输入站点名称,在“默认文件夹”文本框中挑选所创建的站点文件夹。在“默认图象文件夹”文本框中挑选存放图象的文件夹,完成后单击“确定”按钮,返回“治理站点”对话框。 4)在“治理站点”对话框中单击“完成”按钮,站点创建完毕。 五、实验结果 六、讨论与结论 实验开始之前要先建立一具根文件夹,在实验的过程中把站点存在自己建的文件夹里,如此才干使实验条理化,别至于在实验后寻别到自己的站点。在实验过程中会浮现一些选项,计算机普通会有默认的挑选,最后别要去更改,假如要更改要先充分了解清晰该选项的含义,以及它会造成的效果,否则会使实验的结果失真。实验前先熟悉好操作软件是做好该实验的关键。 实验二:页面图像设置 一、实验目的及要求: 本实例的目的是设置页面的背景图像,并创建鼠标经过图像。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域,同时接入国际互联。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装页三剑客(dreamweaver mx;flash mx;fireworks mx)等页设计软件; 4、安装acdsee、photoshop等图形处理与制作软件; 5、其他一些动画与图形处理或制作软件。 三、实验原理 设置页面的背景图像,并创建鼠标经过图像。 四、实验办法与步骤 1) 在“页面属性”对话框中设置页面的背景图像。 2) 在页面文档中单击“”插入鼠标经过图像。 五、实验结果

西安交通大学实验报告

西安交通大学实验报告 课程_大学计算机_实验名称_检索绘图音频及图像处理_第页共页 系别_____ 能动学院___________ 实验日期年月日专业班级________________组别_____________ 实验报告日期年月日姓名________________学号_____________ 报告退发 ( 订正、重做 ) 同组人_________________________________ 教师审批签字 ●目标任务: 一. 信息检索 1.使用百度地图网站搜索西安交通大学南门到西安大唐芙蓉园的公交线路。(屏幕截图)2.在本校图书馆网站查找两门课程的教学参考书(屏幕截图)。 3.使用百度图片网站搜索有关“飞机”和“天空”的图片,各下载一张,并分别命名为:天空.jpg,飞机.jpg。 4.使用Ei检索,检索目前中国高速铁路(High-speed railway in China)相关的工程论文(屏幕截图) 二. 矢量图绘制 题目:使用Microsoft Office Visio 2010办公绘图软件,绘制流程图。 要求:参见实验教材p27,“四. 实验任务和要求”。 三.数字音频处理 题目:使用GoldWave音频处理软件,完成手机铃声制作 要求:从网上下载一个音乐文件,选取最喜爱的片段,将其保存成手机要求的音频格式(如MP3、WAV)作为手机铃声(存放为另一个音乐文件)。 结果:在实验报告中,粘贴两个音乐文件的属性对话框屏幕截图。(分析文件的大小与占用空间的不同) GoldWave软件存放地址: D:\计算机应用技术基础、ECAT.Software\ECAT-Software\GoldWave.rar 或从网上下载。 四.数字图像处理 题目:使用Photoshop软件进行“飞行编队”图像设计。 要求:参见实验教材p37,“四. 实验任务和要求”(1)飞行编队设计。 结果:将设计的“三角飞行编队图片”粘贴到实验报告中。 最后上传实验报告。 ●实验环境

操作系统课程设计实验报告

河北大学工商学院 课程设计 题目:操作系统课程设计 学部信息学部 学科门类电气信息 专业计算机 学号2011482370 姓名耿雪涛 指导教师朱亮 2013 年6月19日

主要内容 一、设计目的 通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 二、设计思想 实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 设计模板如下图: 注:本人主要涉及设备管理模块

三、设计要求 设备管理主要包括设备的分配和回收。 ⑴模拟系统中有A、B、C三种独占型设备,A设备1个,B设备2个,C设备2个。 ⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。 ⑶屏幕显示 注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 设备管理模块详细设计 一、设备管理的任务 I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。 二、设备管理函数的详细描述 1、检查设备是否可用(主要代码) public bool JudgeDevice(DeviceType type) { bool str = false; switch (type) { case DeviceType.a: {

网页制作实验报告

北京理工大学珠海学院课程设计说明书 _2013_—_2014_学年第_1_学期 题目: 《Web应用开发课程设计》 学院:计算机学院 专业班级: 11级软件工程3班 学号: 110202031031 学生姓名:蒋征 指导教师:魏志军 成绩: 时间: 2014/1/5 2014年 1 月 5 日

摘要 本次作品是一个IT技术交流论坛,实现论坛的基本功能,注册、登录、发帖、浏览和回帖。 论坛分三个分板块,网页、C#和JA V A,纵向层次也是三层,主页、板块页和帖子页。网站使用JavaScript实现动态页面。 关键词:计算机技术交流社区JavaScript 网页 I

目录 摘要 ............................................. I 目录 ............................................. II 1 网站结构和布局 (1) 1.1 网站结构 (1) 1.1.1 总体结构 (1) 1.1.2 横向链接结构 (2) 1.2 页面布局 (3) 1.2.1 主页 (3) 1.2.2 分版页面 (6) 1.2.3 帖子页面 (6) 2 技术应用 (8) 2.1 逻辑设计 (8) 2.1.1 HTML和CSS设计 (8) 2.1.2 JavaScript设计 (10) 参考文献 (13) 心得体会 (14) I

教师评语 (15) 成绩评定表 (16) 课程设计答辩记录表 (17) II

1 网站结构 1.1主体结构 1.1.1总结构 网站是以技术交流社区为主题的论坛型网站。 这个网站是按树形结构设计如图1-1-1,页面种类共分三层,分别是主页,分主题页还有就是内容页。 主页连向三个分主题分区页面,分别是MTHL板块,C#板块还有就是JAVA 板块。 主题分区页面下面是内容帖子。 图1-1-1网页关系 1

西安交通大学检测技术课内实验报告

西安交通大学 现代检测技术实验报告 实验一金属箔式应变片——电子秤实验 实验二霍尔传感器转速测量实验 实验三光电传感器转速测量实验 实验四E型热电偶测温实验 实验五E型热电偶冷端温度补偿实验

实验一 金属箔式应变片——电子秤实验 一、实验目的: 了解金属箔式应变片的应变效应,直流全桥工作原理和性能,了解电路的定标。 二、实验仪器: 应变传感器实验模块、托盘、砝码、数显电压表、±15V 、±4V 电源、万用表(自备)。 三、实验原理: 电阻丝在外力作用下发生机械变形时,其电阻值发生变化,这就是电阻应变效应,描述电阻应变效应的关系式为 ε?=?k R R (1-1) 式中 R R ?为电阻丝电阻相对变化; k 为应变灵敏系数; l l ?= ε为电阻丝长度相对变化。 金属箔式应变片就是通过光刻、腐蚀等工艺制成的应变敏感组件。如图1-1所示,将四 个金属箔应变片分别贴在双孔悬臂梁式弹性体的上下两侧,弹性体受到压力发生形变,应变片随弹性体形变被拉伸,或被压缩。 图1-1 双孔悬臂梁式称重传感器结构图

图1-2 全桥面板接线图 全桥测量电路中,将受力性质相同的两只应变片接到电桥的对边,不同的接入邻边,如图3-1,当应变片初始值相等,变化量也相等时,其桥路输出 Uo=R R E ?? (3-1) 式中E 为电桥电源电压。 R R ?为电阻丝电阻相对变化; 式3-1表明,全桥输出灵敏度比半桥又提高了一倍,非线性误差得到进一步改善。 电子称实验原理同全桥测量原理,通过调节放大电路对电桥输出的放大倍数使电路输出电压值为重量的对应值,电压量纲(V )改为重量量纲(g )即成一台比较原始的电子称。 四、实验内容与步骤 1.应变传感器上的各应变片已分别接到应变传感器模块左上方的R1、R2、R3、R4上,可用万用表测量判别,R1=R2=R3=R4=350Ω。 2.差动放大器调零。从主控台接入±15V 电源,检查无误后,合上主控台电源开关,将差动放大器的输入端Ui 短接并与地短接,输出端Uo 2接数显电压表(选择2V 档)。将电位器Rw3调到增益最大位置(顺时针转到底),调节电位器Rw4使电压表显示为0V 。关闭主控台电源。(Rw3、

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

操作系统实验报告

操作系统教程 实 验 指 导 书 姓名: 学号: 班级:软124班 指导老师:郭玉华 2014年12月10日

实验一WINDOWS进程初识 1、实验目的 (1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2)掌握WINDOWS API的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。 2、实验内容和步骤 (1)编写基本的Win32 Consol Application 步骤1:登录进入Windows,启动VC++ 6.0。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序: E:\课程\os课\os实验\程序\os11\debug>hello.exe 运行结果 (如果运行不成功,则可能的原因是什么?) : 有可能是因为DOS下路径的问题 (2)计算进程在核心态运行和用户态运行的时间 步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。 步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。 步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。 E:\课程\os课\os实验\程序\os12\debug>time TEST.exe 步骤4:运行结果 (如果运行不成功,则可能的原因是什么?) : 因为程序是个死循环程序 步骤5:分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。 屏蔽i循环: 屏蔽j循环: _______________________________________________________________________________调整循环变量i的循环次数:

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