当前位置:文档之家› 操作系统实验

操作系统实验

操作系统实验
操作系统实验

《操作系统》实验报告(一)

Linux基本操作与编程(验证性 2学时)

1、实验目的:

1)熟悉Linux操作系统的环境和使用。

2)* 了解LINUX系统的安装过程。(注:*表示可选择)

3)掌握Linux环境下的命令操作。

2、实验内容:

(1)完成LINUX系统的登录,启动终端。进行下列操作并记录结果(要求:结果以屏幕截图表示)。

1)运行pwd命令,确定你当前的工作目录。

2)利用以下命令显示当前工作目录的内容: ls –l

3)运行以下命令: ls –al

4)使用mkdir命令建立一个子目录subdir。

5)使用cd命令,将工作目录改到根目录(/)上。

6)使用ls-l命令列出/dev的内容。

7)使用不带参数的命令cd改变目录,然后用pwd命令确定你当前的工作目录是哪里?

8)使用命令cd ../..,你将工作目录移到什么地方?

(2)在LINUX下查看你的文件。

1)利用cd命令,将工作目录改到你的主目录上。

2)将工作目录改到你的子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中。

3)使用cat命令查看file1文件的内容。

4)利用man命令显示date命令的用法: man date

5)将date命令的用法附加到文件file1的后面:man date >> file1

6)利用cat命令显示文件file1的内容。

7)利用ls -l file1命令列出文件file1的较详细的信息。运行ls -l/bin命令显示目录的内容。

8)利用ls -l/bin|more命令行分屏显示/bin目录的内容。

9)利用cp file1 fa命令生成文件file1的副本。然后利用ls -l命令查看工作目录的内容。

10)用cd命令返回你的主目录,输入命令ls –l后,解释屏幕显示的第一列内容的含义

(3)编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。要求记录所使用的命令及结果。

操作步骤:

1)在文本编辑器中,编写C程序a.c如下:

#include "stdio.h"

main()

{ printf("hello"); }

2) 在终端中,用gcc命令进行编译,生成可执行文件a。

gcc a.c –o a

3) 在终端中执行a 的命令如下:

./a

(4)编写一个程序:显示信息“Time for Play!”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户。要求记录所使用的命令及结果。(提示:使用sleep(s)函数)

3、实验结果分析:

(对上述实验内容中的各题结果,进行分析讨论。并回答下列问题)

(1)进程包括哪些特征?

间断性,失去封闭性,不可再现性,动态性,并发性,独立性

(2)在Linux中,如何设置前、后台命令和程序的执行?

命令后直接加& ,这个命令就在后台执行;正在运行的命令,使用Ctrl+z ,就挂

起;jobs命令,可以现实后台,包括挂起的命令;

使用bg %作业号就可以把挂起的命令在后台执行;使用fg %作业

号就可以把后台命令调到前台

(3)你所使用的Linux系统的内核版本是多少?用什么命令查看内核版本?目前你所了解的各发行版本的情况如何?

Linux version 2.6.32-358.el6.i686 (mockbuild@x86-022.build.eng.bos.redhat.c

om) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Tue

Jan 29 11:48:01 EST 2013

(4)你对Linux系统有什么认识?

linux是一款开放性的操作系统,也可以说成是开放的源代码系统,这些代码可以完全自由的

修改可以再任何的计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX

的概念所开发出来的,所以它也继承了UNIX的稳定和效率的特点!

4、总结:你对本次实验有什么体会或看法。

《操作系统》实验报告(二)

文件访问权限设置与输入输出重定向(2学时)

一、实验目的

1、掌握linux的文件访问权限设置。

2、熟悉输入输出重定向和管道操作。

二、实验内容

1、启动进入红帽linux系统

2、设置文件权限:

●在用户主目录下创建目录test,进入test目录,用vi创建文件file1,并输入

任意的文字内容。

●用ls -l显示文件信息,注意文件的权限和所属用户和组。

●对文件file1设置权限,使其他用户可以对此文件进行写操作:#chmod o+w

file1。

●用ls -l查看设置结果。

●取消同组用户对此文件的读取权限:#chmod g-r file1。查看设置结果。

●用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户

和所属组用户只有读和执行的权限:#chmod 755 file1。设置完成后查看设

置结果。

3、输入、输出重定向和管道

(1)输出重定向

●用ls命令显示当前目录中的文件列表:#ls –l。

●使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到

文件list中:#ls –l > list。

●查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。

这说明shell是首先创建了一个空文件,然后再运行ls命令:#cat list。

●再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定

向到文件list中。这次使用追加符号>>进行重定向:#ls –l >> list。

●查看文件list的内容,可以看到用>>进行重定向是把新的输出内容附加在文

件的末尾,注意其中两行list文件的信息中文件大小的区别:cat list。

●重复命令#ls –l > list。

●再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小

和创建时间的区别。

(2)管道

● who |grep root命令的结果是?

命令ls –l |wc –l结果是?

4、退出linux系统

操作步骤:

在主菜单上选择“注销”->关闭计算机。

三、实验结果与讨论(根据实验结果回答下列问题)

1.文件backup.tar的权限如下:

-rw-r—r-- 1 root root 19274 Jul 14 11:00 backup.tar

回答:-rw-r—r-- 的含义是什么?

答:是LINUX/FTP的简易权限表示法:

对应于本用户-所在组-其他人的权限,每一个用执行(x)-读取(r)-写入(w)

如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.

2、文件backup.tar的所有者添加执行权限的命令是?

答:chmod u+x backup.tar.gz

3、赋予所有用户读和写backup.tar文件权限的命令是?

答:chmod a+w,a+r backup.tar.gz

四、个人体会

(你对本次实验有什么体会或看法?)

《操作系统》实验报告(三)

文件和目录管理

一、实验目的

1) 掌握在Linux系统下的文件和文件系统的概念及命令;

2) 掌握Linux系统下的目录操作。

二、实验内容

1.进入linux终端后,用命令的操作结果回答下列问题:

1)vi的三种工作模式是?其中不能进行直接转换的是什么模式到什么模式?

命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出的操作步骤是?

Ese:wq

3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任

意输入文字3行。请问执行命令:cat myfile2 后,myfile2中还有几行内

容?该命令的作用是?用命令操作验证你的回答。

myfile2中还有1行内容该命令的作用是替换myfile的内容

4)请用至少两种不同的命令创建一个文本文件(Myext.txt),在其中写入“我是

2014级学生,我正在使用Linux系统。”,记录命令及执行结果。

1、Vi创建

2、

5)用___pwd________命令可查看所创建文件Myext.txt的绝对路径,写出它的绝对

路径__/root_________;用___ls -l________命令查看该文件的类型及访问权限,其

访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________。

6)若将该文件的访问权限修改为:所有者有读写权限;其他用户只读;同组用户

可读写,请写出命令,并记录结果。

7)查找my开头的所有文件,可___find my*_________命令,写出命令并记录结

8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1

的内容是/root目录的详细信息;file2的内容任意,最后将这两个文件合并为file3

文件,请先写出命令序列,并在终端中验证,记录结果。

2.文件及目录操作,写出操作所使用的命令,并记录结果。

●在终端中完成下列命令操作,并记录结果

●在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir

下建立d1和d2两个子目录。

●查看mydir和myfile的默认权限

●查看当前myfile和mydir的权限值是多少?

●将myfile文件分别复制到root 和dd1的主目录中

●将root主目录中的myfile改为yourfile

●通过从键盘产生一个新文件text.txt并输入I am a student

●查找text.txt文件是否包含student字符串

三、实验结果与分析,回答下列问题:

1、能够创建文件的命令有哪些?

vi 和cat>name

2、能够查看当前目录的绝对路径的命令是?

pwd

3、Linux中按用户属性将用户分成哪些类型?根据文件的访问权限,用户又被分成哪些类型?能够查看文件访问权限的命令是?

用户同组其他

可读可写可执行cat f1

四、小结

(本次实验的体会或小结)

《操作系统》实验报告(四)

作业调度算法模拟(验证性2学时)

1、实验目的:

1)掌握作业调度的主要功能及算法。

2)通过模拟作业调度算法的设计加深对作业管理基本原理的理解。

3)熟悉Linux环境下应用程序的编程方法。

2、实验内容:

(1)作业调度算法(FCFS)编程模拟:

编制一段程序,对所输入的若干作业,输入、输出数据样例如下表所示。按FCFS算法模拟调度,观察、记录并分析调度的输出结果情况。

fcfs.c

#include

#include

#define SIZE 5

struct Job_type

{

char no[2]; //作业名

int tb; //作业到达时间(分)

int tr; //运行时间(分)

}x,job[5];

void load()

{ int i;

printf("\nEnter the Jobs' datas:\n");

for(i=0;i

scanf("%s%d%d",&job[i].no,&job[i].tb,&job[i].tr);

printf("输入作业顺序:\n");

for(i=0;i

printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);

}

void fcfs()

{ int i,j,t=0,tw=0,tt=0;

for(i=0;i

for(j=i+1;j

if(job[i].tb>job[j].tb)

{x=job[i];

job[i]=job[j];

job[j]=x;

}

printf("FCFS调度结果:\n");

printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");

for(i=0;i

{

printf(" %d",t);

t=t+job[i].tr;

tw=t-job[i].tb-job[i].tr; //作业等待时间

tt=t-job[i].tb; //周转时间

printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr,t,tw,tt);

}

}

void main()

{

load();

fcfs();

}

(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果。

【输入输出样例2:SJF算法】

输入输出

A 0 4

B 0 3

C 0 5

D 0 2 A 0 6 10 10

B 0 3 6 6

C 0 10 15 15

#include

#include

#define SIZE 5

struct Job_type

{

char no[2]; //作业名

int tb; //作业开始时间(分)

int tr; //运行时间(分)

}x,job[5];

void load()

{ int i;

printf("\nEnter the Jobs' datas:\n");

for(i=0;i

scanf("%s%d%d",&job[i].no,&job[i].tb,&job[i].tr);

printf("输入作业顺序:\n");

for(i=0;i

printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr); }

void sjf() //短作业调度函数{

}

void main()

{

load();

sjf();

}

3、实验结果分析:

(对上述实验各题所使用的原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析。)

在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。

短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。该算法对长作业不利,完全未考虑作业的紧迫程度。

4、总结:你对本次实验有什么体会或看法。

《操作系统》实验报告(五)

内存管理算法模拟(验证性 2学时)

一、实验目的:

4)掌握内存管理的主要技术与功能。

2)模拟内存管理算法的实现方法。

二、实验内容:

设计一个能模拟内存管理行为的系统程序,该系统至少应包括FIFO和LRU算法(Least Recently Used)(当需要置换一页时,选择最长时间未被使用的那一页淘汰掉。)的实现。

阅读下列的参考程序,写出main()函数,输入下面的各组测试数据,运行并记录结果。

数据1:

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

数据2:

0,1,7,2,3,2,17,1,0,3,0,3,0,3,0,10

数据3:

24 15 18 23 24 17 18 24 18 17 17 15 24 17 24 18

数据4:

4 3 2 1 4 3

5 4 3 2 1 5 7 2 3 4 8 1 4 3 5 2 3 1

参考程序 page.c

#include

#include

#define ERR -1

#define page_len 16 //页序列总长

#define total_vp 18 //作业的总页数+1,即序列中出现的最大页号+1,为了开

pl[total_vp]数组所用

typedef struct{

int pn,pfn,counter,time;

}pl_type;

pl_type pl[total_vp];

struct pfc_struct{

int pn,pfn;

struct pfc_struct *next;

};

typedef struct pfc_struct pfc_type;

pfc_type pfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;

int diseffect;

int page[page_len];

void initialize(int total)

{ int i;

diseffect=0;

for(i=0; i

{ pl[i].pn=i;

pl[i].pfn=ERR;

}

for(i=1;i

{ pfc[i-1].next=&pfc[i];

pfc[i-1].pfn=i-1;}

pfc[total-1].next=NULL;

pfc[total-1].pfn=total-1;

freepf_head=&pfc[0];

}

void FIFO(int total)

{ int i,j;

pfc_type *p,*t;

initialize(total);

busypf_head=busypf_tail=NULL;

for(i=0;i

{

if(pl[page[i]].pfn==ERR)

{ diseffect+=1;

if(freepf_head==NULL)

{p=busypf_head->next;

pl[busypf_head->pn].pfn=ERR;

freepf_head=busypf_head;

freepf_head->next=NULL;

busypf_head=p;

}

p=freepf_head->next;

freepf_head->next=NULL;

freepf_head->pn=page[i];

pl[page[i]].pfn=freepf_head->pfn;

if(busypf_tail==NULL)

busypf_head=busypf_tail=freepf_head;

else

{ busypf_tail->next=freepf_head;

busypf_tail=freepf_head;

}

freepf_head=p;

}}

printf("FIFO:%d",diseffect);

}

main()

{ int i; int k;

printf(“请输入页的引用序列:\n”);

for(k=0;k

scanf("%d",&page[k]);

for(i=4;i<=7;i++)

{

printf("%2d page frames ",i);

FIFO(i);}

参考程序LRU算法,略

三、实验结果分析:

(对上述实验各题所使用的原始数据、调试数据与状态(包括出错)及最终结果进行记

录并分析。)

随着块数的增加,缺页数目也减少,4个实验中3个实验的块数增加到了5以后,即使块数再增加,缺页数目也是保持不变。只有实验4,块数增加到7以后,缺页数目又再次减少了

四、总结:你对本次实验有什么体会或看法。

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科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个部分。如下图:

操作系统课程设计答案

// tjty.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #define Bsize 3 #define Psize 20 struct pageInfor { int content;//页面号 int timer;//被访问标记 }; class PRA { public: PRA(void); int findSpace(void);//查找是否有空闲内存 int findExist(int curpage);//查找内存中是否有该页面 int findReplace(void);//查找应予置换的页面 void display(void);//显示 void FIFO(void);//FIFO算法 void LRU(void);//LRU算法 void Optimal(void);//OPTIMAL算法 void BlockClear(void);//BLOCK恢复 pageInfor * block;//物理块 pageInfor * page;//页面号串 private: }; PRA::PRA(void) { int QString[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1}; block = new pageInfor[Bsize]; for(int i=0; i

block[i].timer = 0; } page = new pageInfor[Psize]; for(i=0; i= block[pos].timer) pos = i;//找到应予置换页面,返回BLOCK中位置return pos; } void PRA::display(void) {

操作系统实验实验1

广州大学学生实验报告 1、实验目的 1.1、掌握进程的概念,明确进程的含义 1.2、认识并了解并发执行的实质 2.1、掌握进程另外的创建方法 2.2、熟悉进程的睡眠、同步、撤消等进程控制方法 3.1、进一步认识并发执行的实质 3.2、分析进程竞争资源的现象,学习解决进程互斥的方法 4.1、了解守护进程 5.1、了解什么是信号 5.2、INUX系统中进程之间软中断通信的基本原理 6.1、了解什么是管道 6.2、熟悉UNIX/LINUX支持的管道通信方式 7.1、了解什么是消息 7.2、熟悉消息传送的机理 8.1、了解和熟悉共享存储机制 二、实验内容 1.1、编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统 中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 1.2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及 'son ……',父进程显示'parent ……',观察结果,分析原因。 2.1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容 2.2、利用wait( )来控制进程执行顺序 3.1、修改实验(一)中的程序2,用lockf( )来给每一个进程加锁,以实现进程之间的互斥 3.2、观察并分析出现的现象 4.1、写一个使用守护进程(daemon)的程序,来实现: 创建一个日志文件/var/log/Mydaemon.log ; 每分钟都向其中写入一个时间戳(使用time_t的格式) ; 5.1、用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process1 is killed by parent! Child process2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 5.2、用软中断通信实现进程同步的机理

实时操作系统报告

实时操作系统课程实验报告 专业:通信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];

操作系统实验报告一

重庆大学 学生实验报告 实验课程名称操作系统原理 开课实验室DS1501 学院软件学院年级2013专业班软件工程2 班学生姓名胡其友学号20131802 开课时间2015至2016学年第一学期 总成绩 教师签名洪明坚 软件学院制

《操作系统原理》实验报告 开课实验室:年月日学院软件学院年级、专业、班2013级软件工 程2班 姓名胡其友成绩 课程名称操作系统原理 实验项目 名称 指导教师洪明坚 教师 评语教师签名:洪明坚年月日 1.实验目的: ?进入实验环境 –双击expenv/setvars.bat ?检出(checkout)EPOS的源代码 –svn checkout https://www.doczj.com/doc/a65353080.html,/svn/epos ?编译及运行 –cd epos/app –make run ?清除所有的临时文件 –make clean ?调试 –make debug ?在“Bochs Enhanced Debugger”中,输入“quit”退出调试 –调试指令,请看附录A 2.实验内容: ?编写系统调用“time_t time(time_t *loc)” –功能描述 ?返回从格林尼治时间1970年1月1日午夜起所经过的秒数。如果指针loc 非NULL,则返回值也被填到loc所指向的内存位置 –数据类型time_t其实就是long ?typedef long time_t; 3.实验步骤: ?Kernel space –K1、在machdep.c中,编写系统调用的实现函数“time_t sys_time()”,计算用户秒数。需要用到 ?变量g_startup_time,它记录了EPOS启动时,距离格林尼治时间1970年1午夜的秒数 ?变量g_timer_ticks

计算机操作系统实训资料

计算机操作系统实验(训)指导书 学院:电子信息工程学院 班级:13计算机科学与技术本01班 学号: 姓名: 指导教师: 西安思源学院 电子信息工程学院

前言 操作系统是计算机科学与技术专业的一门重要的专业课,是一门实践性很强的技术课程。掌握操作系统原理、熟悉操作系统的使用是各层次计算机软硬件开发人员必不可少的基本技能。操作系统课程讲授理论原理比较容易,而如何指导学生进行实践则相对较难,导致学生不能深刻地理解操作系统的本质,也不能在实际中应用所学的操作系统理论知识及操作系统所提供的功能来解决实际问题。 本实验课程在操作系统原理课程教学中占有重要地位,目的是让学生及时掌握和巩固所学的基本原理和基础理论,加深理解。提高学生自适应能力,为将来使用和设计各类新的操作系统打下基础。 一般来说,学习操作系统分为以下几个层次: 1.学习并掌握操作系统的基本概念及原理,了解操作系统的实现机制。 2.掌握常用操作系统的使用、操作和维护,成为合格的系统管理员。 目前最常用的操作系统主要有UNIX、Linux、Windows等等。 3.通过分析操作系统源代码,掌握修改、编写操作系统的能力。开放源代码的操作系统Linux的出现为我们提供了机遇。 操作系统本身的构造十分复杂,如何在有效的时间内,使学生既能了解其实现原理又能对原理部分进行有效的实践,是操作系统教学一直在探索的内容。本实验课程以Windows和Linux操作系统为主要平台,从基本原理出发,通过几个实验,使学生能对操作系统的基本原理有更深入的了解,为将来从事操作系统方面的研究工作打下一定的基础。

目录 实验一Windows的用户界面 (4) 实验二Windows2003的任务与进程管理器 (6) 实验三Linux使用环境 (10) 实验四Linux进程管理、内存管理、设备管理 (13) 实验五Windows2003内存管理 (16) 实验六目录和文件管理 (19) 实验七用户与组群管理 (21)

操作系统实验_实验1

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室 2015年11月11日 实验课 操作系统成绩 程名称 实验项 进程管理与进程通信指导老师陈康民目名称 (***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***) 进程管理 (一)进程的创建实验 一、实验目的 1、掌握进程的概念,明确进程的含义 2、认识并了解并发执行的实质 二、实验内容 1、编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一 个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及'son ……', 父进程显示'parent ……',观察结果,分析原因。 三、实验步骤 1、编写一段程序,使用系统调用fork( )创建两个子进程。 代码: #include main( ) { int p1,p2; while((p1=fork( ))= = -1); /*创建子进程p1*/ if (p1= =0) putchar('b'); else { while((p2=fork( ))= = -1); /*创建子进程p2*/ if(p2= =0) putchar('c'); else putchar('a'); } } 运行结果:

bca,bac, abc ,……都有可能。 2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及'son ……',父进程显示'parent ……',观察结果,分析原因。 代码:#include main( ) { int p1,p2,i; while((p1=fork( ))= = -1); /*创建子进程p1*/ if (p1= =0) for(i=0;i<10;i++) printf("daughter %d\n",i); else { while((p2=fork( ))= = -1); /*创建子进程p2*/ if(p2= =0) for(i=0;i<10;i++) printf("son %d\n",i); else for(i=0;i<10;i++) printf("parent %d\n",i); } } 结果:

西北工业大学操作系统实验_OS3(10)

评语: 课中检查完成的题号及题数: 课后完成的题号与题数: 成绩: 指导教师: 实验报告三 实验名称:七、八日期:2013.05.23 班级:10011007 学号:2010302555 姓名:杨宏志实验七理解线程的相关概念 1. 实验目的 理解当操作系统引入线程的概念后,进程是操作系统独立分配资源的单位,线程成为系统调度的单位,与同一个进程中的其他线程共享程序空间。 2. 实验预习内容 预习线程创建和构造的相关知识,了解C语言程序编写的相关知识。 3. 实验内容及步骤 (1)编写一个程序,在其main()函数中创建一个(或多个)线程,观察该线程是如何与主线程并发运行的。输出每次操作后的结果; (2)在main()函数外定义一个变量shared(全局变量),在main()中创建一个线程,在main()中和新线程shared 进行循环加/减操作,观察该变量的变化; (3)修改程序把shared 变量定义到main()函数之内,重复第(2)步操作,观察该变量的变化。

4. 实验总结 (1) 观察上述程序执行结果,并分析原因; (2) 提交源程序清单,并附加流程图与注释。思考:分析进程和线程的不同之处。 5. 具体实现 1)观察线程并发性: #include #include #include void * func(void *params) { while(1) { printf("i am the thread 2\n"); sleep(1); } return NULL; } int main() { pthread_t tid; int res=pthread_create(&tid, NULL,func,NULL); while(1) { printf("i am main thread\n"); sleep(1); } return 0; }

操作系统实验一

本科实验报告 课程名称:操作系统 学号: 姓名: 专业: 班级: 指导教师: 课内实验目录及成绩 信息技术学院

实验(实验一) 1 实验名称:基本shell命令及用户管理 2 实验目的 2.1 掌握安装Linux操作系统的方法。 2.2 掌握Linux操作系统的基本配置。 2.3 了解GNOME桌面环境。 2.4 掌握基本shell命令的使用。 3 实验准备 3.1 下载VMware Workstation虚拟机软件(版本不限)。 3.2 准备Linux操作系统的安装源(内核版本和发行版本均不限)。 注:实验准备、实验内容4.1和4.2作为回家作业布置,同学们利用课余时间可在私人计算机上完成。 4 实验要求、步骤及结果 4.1 安装虚拟机软件。 【操作要求】安装VMware Workstation虚拟机软件,并填写以下4.1.1和4.1.2的内容。 4.1.1【VMware Workstation虚拟机版本号】 4.1.2【主要配置参数】 4.2 安装Linux操作系统。 【操作要求】安装Linux操作系统,版本不限。 Linux发行版本: Linux内核版本:

【主要操作步骤:包括分区情况】 1、创建一台虚拟机安装操作系统时客户机操作系统选择Linux 2、修改虚拟机的安装路径。 3、建一个新的虚拟磁盘,磁盘的空间20GB,并且将单个文件存储虚拟磁盘。 4、设置分区完毕,安装虚拟机 4.3 了解Linux操作系统的桌面环境之一GNOME。 【操作要求】查看桌面图标,查看主菜单,查看个人用户主目录等个人使用环境。【操作步骤1】桌面图标

【操作步骤2】主菜单 【操作步骤3】个人用户主目录 【操作步骤4】启动字符终端

嵌入式实时操作系统vxworks实验教程[1]

???VxWorks 偠 ? Laboratory Tutorial for Embedded Real ˉtime Operating System VxWorks ?? ? ? ? ? ? ? 2003 10

???VxWorks 偠 ? ? 1 ???? (1) 1.1 ?? (1) 1.2 ??? (7) 2 ? MPC860 (16) 3 ???VxWorks ? ? Tornado (25) 3.1 ???VxWorks (25) 3.2 Tornado? ? (43) 4 VxWorks?BootRom (48) 5 偠 (55) 5.1 偠??Tornado??? (55) 5.2 偠?? ??? ? ? (74) 5.3 偠?? ? ? ?? (78) 5.4 偠 ?? ??? (101) 5.5 偠?? ?????? ?? (110) 5.6 偠 ? ?????? ?? (116) ? A hwa-xpc860 偠 (120)

1 ???? ?? ?? 催? ?? ??? ?? ? ? ?? ??Ё?????? ? ?? ?? ? ? ?? ?? (Embebdded computer) Ё??? ?? ? ??? ⑤?20??60 ?? ????? ? ????? ? 1.1.1 ???? ??? ?? ? Н? ??? ????? ?? ?? ???? ???? ?? ?? ?? ?? ???? ??? ????? ? ?????BIOS? ? ? ???? ?催 ? ? ? ㄝ???? ? ??? ? ? ? ?????????? ???? ?? ? ? ? ? ???? ?? ? ? ???? ?ㄝ???? ???? ??? ? ? ??? ? ???? ? ? ?? ㄝ ?? ? ??? ? ?? ? (control)???Mointer) ??(Managemet)ㄝ ?? 1.1.2 ? ?????? ? ? 1.1. 2.1 ? ?? ? ?? ??4?? ? 1? ? ? ? ?? ? ? ???Ё ????? ???? ?? ? ? ?? ?2? ? ??? ?? ?????? ? ????? ??? П? ??? ??????? ? ?? ???? ? 3? ? ? ? ????? ?? ? 催 ? ? ? 4? ? 乏 ? ?? ?? ? ? ? ??? ? ? Ё??∴??? ?? ?? ?? ? mW??uW??1.1.2.2 ? ???? ???? ?? ?? ? ? ?? ? ??? ?? ? ? ? ? ???1000 ??????? 30 ?? ?

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

Windows操作系统实验三实验报告

Windows操作系统C/C++ 程序实验 姓名:___________________ 学号:___________________ 班级:___________________ 院系:___________________ ______________年_____月_____日

实验三Windows 2000/xp线程同步 一、背景知识 二、实验目的 在本实验中,通过对事件和互斥体对象的了解,来加深对Windows 2000/xp线程同步的理解。 1) 回顾系统进程、线程的有关概念,加深对Windows 2000/xp线程的理解。 2) 了解事件和互斥体对象。 3) 通过分析实验程序,了解管理事件对象的API。 4) 了解在进程中如何使用事件对象。 5) 了解在进程中如何使用互斥体对象。 6) 了解父进程创建子进程的程序设计方法。 三、工具/准备工作 在开始本实验之前,请回顾教科书的相关内容。 您需要做以下准备: 1) 一台运行Windows 2000/xp Professional操作系统的计算机。 2) 计算机中需安装V isual C++ 6.0专业版或企业版。 四、实验内容与步骤 1. 事件对象 清单4-1程序展示了如何在进程间使用事件。父进程启动时,利用CreateEvent() API创建一个命名的、可共享的事件和子进程,然后等待子进程向事件发出信号并终止父进程。在创建时,子进程通过OpenEvent() API打开事件对象,调用SetEvent() API使其转化为已接受信号状态。两个进程在发出信号之后几乎立即终止。 步骤1:登录进入Windows 2000/xp Professional。 步骤2:在“开始”菜单中单击“程序”-“Microsoft V isual Studio 6.0”–“Microsoft V isual C++ 6.0”命令,进入V isual C++窗口。 步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-1.cpp。 步骤4:单击“Build”菜单中的“Compile 3-1.cpp”命令,并单击“是”按钮确认。系统

操作系统实验心得(精选多篇)

操作系统实验心得 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。

大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域 3)其他 例如: <1>定义了指针后记得初始化,在使用的时候记得判断是否为 null <2>在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等 <3>在变量处理的时候变量的格式控制是否合理等

操作系统实验报告4

《操作系统》实验报告 实验序号: 4 实验项目名称:进程控制

Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜ 修改后: #include #include 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); } 在“命令提示符”窗口运行CL命令产生可执行程序4-1.exe:C:\ >CL 4-1.cpp

实验任务:写出程序的运行结果。 4.正在运行的进程 (2)、编程二下面给出了一个使用进程和操作系统版本信息应用程序(文件名为4-5.cpp)。它利用进程信息查询的API函数GetProcessVersion()与GetVersionEx()的共同作用。确定运行进程的操作系统版本号。阅读该程序并完成实验任务。 #include #include

兰州大学操作系统实验十文件全资料系统观察题目和问题详解

实验十 实验名称:10 文件系统观察 实验目的: 1.学习和掌握文件系统的基本概念 2.学习对文件和文件系统的观察和操作 3.学习和使用文件系统的权限控制 实验时间 3学时 预备知识: 1.基本命令 命令名主要选项功能说明ls -a, -l, -i 列出指定文件 stat 显示文件系统信息 cd 切换目录 pwd 报告当前路径 touch -a, -m 创建新文件 mv -i, -u 移动 cp -a, -i, -l, -s, -R 复制 rm -i,-r 删除文件 mkdir -p 创建目录

rmdir 删除目录(空目录) ln -s 建立 find -type, -name, -ctime 查找文件 locate 快速查找文件 grep -i,-l, -r, -v, -n 查找文件容 chmod -R 添加、删除、指派文件或目录的权限 chown 改变文件属主 chgrp 改变文件组 umask 查看、设置权限掩码 mkfs -t 创建文件系统 mke2fs -j, -b, -i 创建ext2/ext3文件系统 mount -t, -o, -a 挂载文件系统 umount 卸载文件系统 df -i, -h, -k, -a 提供硬盘及其分区、其它驱动器在文件系统中的装入位 置以及它们所占用的空间大小等信息。 du -c, -h 提供关于文件和目录所占空间的信息 fsck 检查文件系统 2.文件类型 类型说明 普通文件一组连续的数据用一个名称表示 目录实施了分级文件系统的结构 设备文件要访问硬件的每个程序都必须通过对应的设备文件来访问硬件 对存储在文件系统中其他点的文件的引用

操作系统实验报告.

学生学号0121210680225 实验课成绩 武汉理工大学 学生实验报告书 实验课程名称操作系统 开课学院计算机科学与技术学院 指导老师姓名刘军 学生姓名李安福 学生专业班级软件sy1201 2014 — 2015 学年第一学期

《操作系统》实验教学大纲 课程编号: 课程名称:操作系统/Operating System 实验总学时数:12学时 适应专业:计算机科学与技术、软件工程 承担实验室:计算机科学与技术学院实验中心 一、实验教学的目的和任务 通过实验掌握Linux系统下常用键盘命令、系统调用、SHELL编程、后台批处理和C程序开发调试手段等基本用法。 二、实验项目及学时分配 序号实验项目名称实验学时实验类型开出要求 01 Linux键盘命令和vi 2 设计必开 02 Linux下C编程 2 设计必开 03 SHELL编程和后台批处理 2 设计必开 04 Linux系统调用(time) 2 设计必开 05 Linux进程控制(fork) 4 设计必开 三、每项实验的内容和要求: 1、Linux键盘命令和vi 要求:掌握Linux系统键盘命令的使用方法。 内容:见教材p4, p9, p40, p49-53, p89, p100 2、Linux下的C编程 要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。 内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。 3、SHELL编程和后台批处理 要求:掌握Linux系统的SHELL编程方法和后台批处理方法。 内容:(1) 将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。 (2) 将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。 (3) 修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键 盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容, 然后输出到屏幕。 4、Linux系统调用使用方法。

操作系统实验报告_实验五

实验五:管道通信 实验内容: 1.阅读以下程序: #include #include #include main() { int filedes[2]; char buffer[80]; if(pipe(filedes)<0) //建立管道,filedes[0]为管道里的读取端,filedes[1]则为管道的写入端 //成功则返回零,否则返回-1,错误原因存于errno中 err_quit(“pipe error”); if(fork()>0){ char s[ ] = “hello!\n”; close(filedes[0]); //关闭filedes[0]文件 write(filedes[1],s,sizeof(s)); //s所指的内存写入到filedes[1]文件内 close(filedes[1]); //关闭filedes[0]文件 }else{ close(filedes[1]); read(filedes[0],buffer,80); //把filedes[0]文件传送80个字节到buffer缓冲区内 printf(“%s”,buffer); close(filedes[0]); } } 编译并运行程序,分析程序执行过程和结果,注释程序主要语句。

2.阅读以下程序: #include #include #include main() { char buffer[80]; int fd; unlink(FIFO); //删除FIFO文件 mkfifo(FIFO,0666); //FIFO是管道名,0666是权限 if(fork()>0){ char s[ ] = “hello!\n”;

操作系统实验3答案

实验三操作系统进程管理 一、实验目的 1) 掌握系统进程的概念,加深对Linux / UNIX进程管理的理解。 2) 学会使用ps命令和选项。 3) 列出当前shell中的进程。 4) 列出运行在系统中的所有进程。 5) 根据命令名搜索特定的进程。 6) 使用kill命令终止进程。 7) 根据用户名查找和终止进程。 二、实验内容和相应的答案截图,三、实验结果分析 步骤1:创建一个普通用户(参见实验二),以普通用户身份登录进入GNOME。 步骤2:打开一个“终端”窗口(参见实验二)。 步骤3:回顾系统进程概念,完成以下填空: 1) Linux系统中,几乎每一个启动的进程,都会由内核分配一个唯一的__PID__进程标识符,用于跟踪从进程启动到进程结束。 2) 当启动新进程的时候,内核也给它们分配系统资源,如__内存_和__CPU_。 3) 永远不向父进程返回输出的进程叫做__僵进程__。 4) 由父进程派生出来的进程叫做____子___进程。 5) ___父_进程是一个派生另一个进程的进程。 6) 运行用于提供服务的Linux系统进程是_______________。 7) 如果父进程在子进程之前结束,它创建了一个______________进程。 步骤4:回顾ps命令和信息。基本的ps命令显示当前shell中的进程信息,用户只能够查看当前终端窗口中初始化的进程。输入ps命令,将结果填入表3-3中。 表3-3 实验记录 下面,在当前终端窗口中,练习使用给出的每个选项的ps命令。

输入ps -f 命令,显示运行在系统中的某个进程的完全信息,填入表3-4中。 表3-4 实验记录 步骤5:列出系统中运行的所有进程。 输入ps -ef 命令,显示运行在系统中的各个进程的完全信息。执行该命令,并与ps –f 命令的输出结果对照,一致吗?有何不同? 答:不一致,后者显示了所有进程的完全可用信息,多了很多。 分析当前终端窗口中的输出结果,记录下来用于写实验报告。 a. 显示了多少个进程?答:59 b. 进程ID的PID是什么? c. 启动进程的命令(CMD) 是什么?答:sched d. 请观察,什么命令的PID号是1?答:init[5] e. 执行ps –ef >aaa命令,将ps命令的输出送到文本文件aaa。再次运行cat aaa | wc命令,计算进程的数目。其中,cat是显示文本文件命令。“|”是管道命令,就是将前一个命令的输出作为后一个命令的输入。wc 命令用来计算文本的行数,第一个数字显示的是行的数目,可以用来计算进程的数目。计算出进程数目并做记录。 执行man ps命令,可以打开Linux用户命令手册。了解ps命令的用法。输入wq命令可退出用户手册的阅读。man命令可以执行吗?结果如何? 答:Man ps时出现

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

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 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 才能支持信号量。

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