好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

山东大学操作系统试验-1.pdf

6页
  • 卖家[上传人]:wt****50
  • 文档编号:43190404
  • 上传时间:2018-06-04
  • 文档格式:PDF
  • 文档大小:201.34KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 计算机科学与技术学院实验报告实验题目:进程控制实验学号:20100030xxxx日期:2012-4-12班级: 五班姓名: ? Email:?实验目的: 加深对于进程并发执行概念的理解 实践并发进程的创建和控制方法 观察和体验进程的动态特性进一步理解进程生命期期间创建、变换、撤销状态 变换的过程掌握进程控制的方法,了解父子进程间的控制和协作关系练习 Linux 系统中进程创建与控制有关的系统调用的编程和调试技术硬件环境:IBM 实验室计算机软件环境:eclipsegcc 编译器 Ubuntu-Linux 操作系统 Gnome 桌面 实验步骤: 1.认真阅读试验指导书所给出的相关知识与示例程序,在此基础上分析独立试验 要求,然后着手开始编写程序 2.用 eclipse 新建一个 c project 3.新建 source folder 4.新建名为 pctl.c 的 C 语言程序 4.再建立以下名为 pctl.h 的 C 语言头文件 5.build 项目,产生可运行的二进制文件 6.对程序进行调试,排除 bug 6.进入终端,运行程序,结果如下图所示:源代码:#include#include#include#include “pctl.h“intintintint mainmainmainmain(intintintint argc, charcharcharchar *argv[]) {intintintint i;//存放⼦进程号intintintint pid1;intintintint pid2;intintintint status1; //存放⼦进程返回状态intintintint status2;signalsignalsignalsignal(SIGINT, (sighandler_t) sigcat); //注册⼀个本进程处理键盘中断的函数charcharcharchar *args1[] = { “/bin/ls“, “-l“, NULL }; //⼦进程要缺省执⾏的命令charcharcharchar *args2[] = { “/bin/ps“, “-l“, NULL };pid1 = forkforkforkfork(); //建⽴⼦进程 1if if if if (pid1 #include#include#include#include #include#include#include#include #include#include#include#include #include#include#include#include #include#include#include#include //进程⾃定义的键盘中断信号处理函数typedeftypedeftypedeftypedef voidvoidvoidvoid (*sighandler_t) (intintintint);voidvoidvoidvoid sigcatsigcatsigcatsigcat(){printfprintfprintfprintf(“%d Process continue\n“,getpidgetpidgetpidgetpid());}结论分析与体会: 第一次在 linux 下编写 c 程序,编写多进程控制实验,让我对操作系统多进 程并发执行与控制有了更加深刻的体验。

      在父进程运行时,在内存中有属于这个进程的一片内存区域,其中有堆栈段, 代码段等在 fork()创建子进程之后,会在内存中另外创建一片新的内存区域, 其中包含堆栈段等此时,父进程和子进程并发执行若要创建两个子进程,则 可在父进程执行段,即 else 段在创建一个子进程要控制进程的执行顺序,则 可将第一个子进程先等待,然后等第二个子进程 ps 执行完毕之后再唤醒第一个 子进程 ls。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.