欢迎来到天天文库
浏览记录
ID:58406753
大小:145.50 KB
页数:17页
时间:2020-05-09
《大连理工大学操作系统实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、大连理工大学本科实验报告课程名称:操作系统实验学院(系):计算机科学与技术学院专业:计算机科学与技术班级:电计学号:学生姓名:年月日实验项目列表序号实验项目名称学时成绩指导教师预习操作结果1进程管理2存储管理3磁盘移臂调度456789101112131415161718总计学分:大连理工大学实验报告学院(系):计算机科学与技术学院专业:计算机科学与技术班级:电计1301姓名:学号:组:___实验时间:2016.6.3实验室:综412实验台:指导教师签字:成绩:进程管理实验一、实验目的加深对于进程并发执行概念的理解。实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期
2、间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。二、实验原理和内容原理:(1)fork成功创建子进程后将返回子进程的进程号,不成功会返回-1(2)exec系统调用有一组6个函数,其中示例实验中引用了execve系统调用语法:#includeintexecve(constchar*path,constchar*argv[],constchar*envp[]);path要装入的新的执行文件的绝对路径名字符串.argv[]要传递给新执行程序的完整的命令参数列表(可以为空).e
3、nvp[]要传递给新执行程序的完整的环境变量参数列表(可以为空).Exec执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。exec调用失败,它会返回-1。内容:(1)每个进程都执行自己独立的程序,打印自己的pid,每个父进程打印其子进程的pid;父子1子2父子1子2(2)每个进程都执行自己独立的程序,打印自己的pid,父进程打印其子进程的pid;(3)编写一个命令处理程序,能处理max(m,n),min(m,n)和average(m,n,l)这几个命令。(使用exec函数族)三实验代码及结果(1)#include#include4、.h>intmain(){if(fork()==0){printf("子进程的pid为:%d.",getpid());if(fork()==0){printf("二级子进程的pid为:%d.",getpid());}}else{printf("父进程的pid为%d.",getpid());}return0;}运行结果:(2)#include#includeintmain(){if(fork()==0){printf("子进程的pid为%d.",getpid());}else{if(fork()==0){printf("子进程2的pid%d5、.",getpid());}else{printf("父进程的pid为%d.",getpid());}}return0;}(3)调用函数为:include#include#include#defineN10intmain(){inti;charcmdname[N];printf("$");scanf("%s",cmdname);if(strcmp(cmdname,"min")==0){execl("/home/lenovo/min","min",NULL);}elseif(strcmp(cmdname,"max")==0)6、{execl("/home/lenovo/max","max",NULL);}elseif(strcmp(cmdname,"ave")==0){execl("/home/lenovo/average","ave",NULL);}elseprintf("´íÎó!");return0;}Max函数为:#include#include#includeintmain(){inta,b;printf("请输入要比较的两个数:");scanf("%d%d",&a,&b);printf("大的数是:%d",a>b?a:b);}Min函7、数为:#include#include#includeintmain(){inta,b;printf("请输入要比较的两个数:");scanf("%d%d",&a,&b);printf("小的数是:%d",a#include#include
4、.h>intmain(){if(fork()==0){printf("子进程的pid为:%d.",getpid());if(fork()==0){printf("二级子进程的pid为:%d.",getpid());}}else{printf("父进程的pid为%d.",getpid());}return0;}运行结果:(2)#include#includeintmain(){if(fork()==0){printf("子进程的pid为%d.",getpid());}else{if(fork()==0){printf("子进程2的pid%d
5、.",getpid());}else{printf("父进程的pid为%d.",getpid());}}return0;}(3)调用函数为:include#include#include#defineN10intmain(){inti;charcmdname[N];printf("$");scanf("%s",cmdname);if(strcmp(cmdname,"min")==0){execl("/home/lenovo/min","min",NULL);}elseif(strcmp(cmdname,"max")==0)
6、{execl("/home/lenovo/max","max",NULL);}elseif(strcmp(cmdname,"ave")==0){execl("/home/lenovo/average","ave",NULL);}elseprintf("´íÎó!");return0;}Max函数为:#include#include#includeintmain(){inta,b;printf("请输入要比较的两个数:");scanf("%d%d",&a,&b);printf("大的数是:%d",a>b?a:b);}Min函
7、数为:#include#include#includeintmain(){inta,b;printf("请输入要比较的两个数:");scanf("%d%d",&a,&b);printf("小的数是:%d",a#include#include
此文档下载收益归作者所有