操作系统实验一Word文档下载推荐.docx

上传人:b****3 文档编号:17934700 上传时间:2022-12-12 格式:DOCX 页数:16 大小:187.99KB
下载 相关 举报
操作系统实验一Word文档下载推荐.docx_第1页
第1页 / 共16页
操作系统实验一Word文档下载推荐.docx_第2页
第2页 / 共16页
操作系统实验一Word文档下载推荐.docx_第3页
第3页 / 共16页
操作系统实验一Word文档下载推荐.docx_第4页
第4页 / 共16页
操作系统实验一Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

操作系统实验一Word文档下载推荐.docx

《操作系统实验一Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统实验一Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

操作系统实验一Word文档下载推荐.docx

缺勤(0分)

软件

/系统质量

60

功能考虑完善,界面友好,Bug极少,针对异常情况有处理(55-60分)

功能考虑完善,界面良好,有一定Bug(49-54分)

功能较完善,Bug较多(43-48分)

完成程序基本功能(36-42分)

部分实现,无法运行(1-35分)

抄袭、被抄袭(0分)

实验演示答辩

重点突出、有特色、专业知识掌握好、能流畅回答老师提问(9-10分)

有一定特色、能较好地回答老师提问(7-8分)

能讲解项目的关键实现,能回答基本问题(0-6分)

实验报告撰写质量

20

文档规范,文字、图表表达清楚(18-20分)

文档较规范,文字、图表表达较清楚(11-17分)

文档不规范,内容空泛、结构混乱(0-10分)

指导教师评定成绩:

指导教师签名:

年月日

实验1多线程和多进程的管理与调度

实验目的

1.加深对进程概念的理解,明确进程与线程的区别。

2.掌握Linux进程创建和撤销的方法,进一步认识并发执行的实质。

3.了解多线程的程序设计方法。

实验内容

1.进程管理

1)获取进程信息

编写程序,获取系统当前执行进程的信息,包括进程名称与ID、PID和PGID等。

2)创建进程

编写进程,实现父进程创建子进程,返回后父子进程都分别循环输出字符串“Iamparent.”或“Iamchild.”5次,每输出一次延时1秒,然后进入下一次循环。

观察并分析运行结果,然后将程序改为父子进程同步执行:

子进程循环输出字符串“Iamchild.”5次,然后父进程再循环输出字符串“Iamparent.”5次。

观察并分析运行结果。

2.线程管理

1)线程创建

主程序创建两个线程,每个线程循环打印一句话,观察运行结果。

2)线程传参

创建两个线程,分别向线程传递如下两种类型的参数:

●传递整数值

●传递字符

实验要求

1.按照要求编写程序,放在相应的目录中,编译成功后执行,并分析实验结果。

2.比较进程退出的不同方式之间的区别:

exit,return,abort

3.根据实际完成内容写实验报告,在报告中记录实验过程中遇到的问题和针对问题的解决方案。

实验提示

1.进程管理相关命令和函数:

ps,top,pstree,getpid(),getpgid(),fork(),exit()

2.线程管理相关函数:

pthread_create(),pthread_join(),pthread_exit()

3.因为pthread的库不是Linux系统的库,所以编译多线程程序时要加上-lpthread。

年级、专业、班级

2015级物联网工程2班

姓名

徐冲

实验题目

多线程和多进程的管理与调度

实验时间

2017年10月25日

实验地点

主教409

实验成绩

实验性质

□验证性□设计性□综合性

教师评价:

□算法/实验过程正确;

□源程序/实验内容提交□程序结构/实验步骤合理;

□实验结果正确;

□语法、语义正确;

□报告规范;

其他:

评价教师签名:

一、实验目的

二、实验内容

1.进程管理

编写程序,获取系统当前执行进程的信息,包括进程名称与ID、PID和PGID等。

2.线程管理

传递整数值传递字符

二、实验过程或算法(源程序)

#include<

stdio.h>

unistd.h>

stdlib.h>

pthread.h>

sys/types.h>

sys/wait.h>

//线程1:

求1~n之间的素数

void*MyThread1(void*in)

{

intn;

inth=0,leap=1,k,m,i;

printf("

inputthevalueofn:

\n"

);

//输入n的值scanf("

%d"

&

n);

theprimebetween1~%dis:

\n"

n);

for(intm=2;

m<

=n;

m++){for(inti=2;

i<

=m/2;

i++){if(m%i==0){leap=0;

break;

}}if(leap){printf("

%4d"

m);

h++;

if(h%10==0)printf("

}leap=1;

}

\nthread1exit!

//线程1退出

pthread_exit(0);

}

//线程2:

生成Fibonacci序列

void*MyThread2(void*in)

intfib0=0,fib1=1,fib2,i,N;

inputfibvalueN:

//输入N值scanf("

N);

thefibsequenceasfollowing:

for(i=0;

N;

i++){if(i==0)printf("

0"

elseif(i==1)printf("

1"

else{fib2=fib0+fib1;

%d"

fib2);

fib0=fib1;

fib1=fib2;

}}

\nthread2exit!

//线程2退出

//4号进程来创建2个线程

intMainThread4()

intret1=0,ret2=0;

pthread_tid1,id2;

//定义两个线程id

//调用pthread_create()函数来创建线程1

ret1=pthread_create(&

id1,NULL,MyThread1,NULL);

//ret1==1表示创建失败;

//ret1==0表示创建成功;

if(ret1){

//如果出错,报错提示

Creatpthread1error!

return1;

//调用pthread_create()函数来创建线程2

ret2=pthread_create(&

id2,NULL,MyThread2,NULL);

//ret2==1表示创建失败;

//ret2==0表示创建成功;

if(ret2){

Creatpthread2error!

pthread_join(id1,NULL);

//主线程等待线程1结束pthread_join(id2,NULL);

//主线程等待线程2结束

mainthread4exit!

//主线程退出

return0;

//3号进程创建的子进程分别调用下面这个函数来完成不同任务voidChildFun(inti)

switch(i){case4:

ThisisNo.4process,IDis%d,parentIDis%d,willcreat2thread\n"

getpid(),getppid());

MainThread4();

case5:

ThisisNo.5process,IDis%d,parentIDis%d,willexcute./proc2\n"

execl("

proc2"

"

./proc2"

NULL);

default:

}exit(0);

//3号进程来创建两个子进程

intCreatProcess()

inti;

for(inti=4;

=5;

i++)

{pid_tchild;

child=fork();

//创建失败

if(child==-1){

Errorhappenedinforkfuction!

//子进程返回值为0

elseif(child==0)ChildFun(i);

//调用函数执行不同操作

for(inti=0;

=1;

{

//进程等待其他子进程的退出

pid_tcpid=wait(NULL);

Theprocess%dexit\n"

cpid);

//父进程创建的两个进程分别调用下面这个函数来完成不同任务voidFun(inti)

switch(i){case2:

ThisisNo.2process,IDis%d,parentIDis%d,willexecutecommand:

ls-l:

//2号进程调用execl函数来执行ls-l命令

/bin/ls"

ls"

-l"

case3:

ThisisNo.3process,IDis%d,parentIDis%d,willcreat2process\n"

CreatProcess();

//3号进程调用这个函数来创建2个子进程break;

//父进程等待其子进程的退出

intmain()

for(i=2;

=3;

elseif(child==0){

//printf("

NowtheprocessIDis%d:

getpid());

Fun(i);

for(i=0;

//父进程等待子进程的退出

//最后父进程退出

TheNo.1parentprocessIDis%dexit\n"

三、实验结果及分析和(或)源程序调试过程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1