操作系统实验一(陈珂).doc

第PAGE \* MERGEFORMAT8页 《操作系统原理》实验报告 专 业 网络工程 班 级 14-2 学 号 14034460220 姓 名 林浩强 指导教师 陈 珂 完成时间 2016.11.21 成 绩 实验一 进程管理 一、实验目的 ? 加深对进程概念的理解,明确进程和程序的区别。 ? 进一步认识并发执行的实质。 ? 分析进程争用资源的现象,学习解决进程互斥的方法。 二、实验内容 1、进程创建 编写一段程序,利用系统调用fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。 2、进程控制 修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 三、实验步骤 1.1、在VMware运行Linux(Ubuntu 16.4),并打开Terminal 1.2、新建main.c文件,并使用C语言进行编程,实现“实验1:进程创建” 1.3、编译文件“main.c” 1.4、执行“main.c”并观察输出结果,并根据结果体会理解进程的创建原理 2.1、新建main.c文件,并使用C语言进行编程,实现“实验2:进程控制” 2.2、编译文件“main.c” 2.3、执行“main.c”并观察输出结果,并根据结果体会理解进程的控制原理 四、程序清单:注意加注释(包含关键字、方法、变量等),在每个模块前加注释 实验一:进程创建 #include stdio.h #include unistd.h void main() { int p1,p2,i; while((p1=fork())==-1); if (p1==0) for(i=0;i10;i++) { putchar(b); } else { while ((p2=fork()==-1); if (p2==0) { for(i=0;i10;i++) { putchar(c); } } else { for(i=0;i10;i++) { putchar(a); } } } } 实验二:进程控制 #include stdio.h #include unistd.h void main() { int p1,p2,i; while((p1=fork())==-1); if(p1==0) { lockf(1,1,0); for(i=0;i10;i++) { printf(child%d\n,i); } lockf(1,0,0); } else { while((p2=fork())==-1); if(p2==0) { lockf(1,1,0); for(i=0;i10;i++) { printf(son%d\n,i); }

文档评论(0)

1亿VIP精品文档

相关文档