华工操作系统实验3实验报告及实验步骤详解

华工操作系统实验3实验报告及实验步骤详解

ID:10111610

大小:91.00 KB

页数:12页

时间:2018-05-26

华工操作系统实验3实验报告及实验步骤详解_第1页
华工操作系统实验3实验报告及实验步骤详解_第2页
华工操作系统实验3实验报告及实验步骤详解_第3页
华工操作系统实验3实验报告及实验步骤详解_第4页
华工操作系统实验3实验报告及实验步骤详解_第5页
资源描述:

《华工操作系统实验3实验报告及实验步骤详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、华南理工大学操作系统课程实验报告实验概述【实验目的】 1.掌握进程的概念,深入理解进程的含义。认识并理解并发环境中进程执行的实质问题,了解构成并发机制的进程创建过程;2.了解在进程创建后通过对进程控制的系统调用,可实现对进程的有效控制。掌握在进程执行中对进程进行睡眠、同步、撤消等控制方法;3.分析进程竞争资源的现象,学习解决进程互斥的方法。【实验内容】1、创建新的进程;查看运行进程;换出某个进程;杀死运行进程。2、采用写者优先重写P94的读者-写者问题,并通过一个读写序列,将算法与读者优先算法进行比较。3、P98的53题的上机

2、作业。【实验原理】1.简述调用fork创建新进程的过程。fork()用于创建新的进程,所创建进程为当前进程的子进程,可以通过fork()函数的返回值来控制进程是在父进程中还是在子进程中。如果运行在父进程中,则返回PID为子进程的进程号,如果在子进程中,则返回的PID为0。2.简述信号量的作用及使用方法。作用:多进程资源共享时,使用信号量,避免产生死锁。使用方法:信号量是一个整数;大于或等于0时代表可供并发进程使用的资源实体数;小于0时代表正在等待使用临界区的进程数;用于互斥的信号量初始值应大于0;只能通过P、V原语操作而改变。

3、【实验环境】运行电脑系统:win7所用软件:VMware9.0.0.0模拟系统:Ubuntu实验内容【实验过程】(实验步骤、记录、数据、分析)1、创建新的进程:使用fork()函数查看运行进程&换出某个进程:使用execl换出进程,并且用PS来替换以达到查看进程的效果杀死运行进程:在父进程后使用kill函数代码:#include#include#include#includeintmain(){pid_tpid;pid=fork();//创建进

4、程if(pid==0){printf("Iamthechild,mypidis%d!",getpid());execl("/bin/ps","ps","r",NULL);//查看进程和替换进程}else{sleep(2);printf("Iamtheparent,mypidis%d,mychildpidis%d!",getpid(),pid);kill(getpid(),SIGTERM);//杀死进程printf("Notkill");}}运行结果:结果分析:如图所示,在调用了fork()函数后,程序先创建了子进程,然

5、后进程被execl替换成ps,显示出了当前正在运行的进程,最后父进程运行,由于执行了kill()函数,所以后面的printf里的内容并未打印出来。2.采用写者优先重写P94的读者-写者问题,并通过一个读写序列,将算法与读者优先算法进行比较。代码:#include"unistd.h"#include"stdio.h"#include"stdlib.h"#include"signal.h"#includepthread_mutex_trmutex;//控制对rc的访问pthread_mutex_twmutex

6、;//控制对wc的访问pthread_mutex_treadDB;//用于写进程对读进程的互斥pthread_mutex_twriteDB;//用于读进程对写进程互斥和写进程之间的互斥intrc=0;//正在读或者即将读的进程数目intwc=0;//即将写的进程数目pthread_tntid;voidread_data_base(){pthread_ttid;tid=pthread_self();printf("reading,tidis%d",(unsignedint)tid);sleep(2);}voidwrite_d

7、ata_base(){pthread_ttid;tid=pthread_self();printf("writing,tidis%d",(unsignedint)tid);sleep(2);}void*reader(void*ptr){printf("readercomeing,readytoread...");pthread_mutex_lock(&wmutex);pthread_mutex_unlock(&wmutex);pthread_mutex_lock(&rmutex);rc=rc+1;if(rc==1)pt

8、hread_mutex_lock(&readDB);pthread_mutex_unlock(&rmutex);read_data_base();rc=rc-1;if(rc==0)pthread_mutex_unlock(&readDB);pthread_mutex_unlo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。