linux操作系统实验五_第1页
linux操作系统实验五_第2页
linux操作系统实验五_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux 操作系统试验五试验五 进程管理子系统进程把握实验类别:设计型试验时数:6 学时开课单位:计算机学院试验地点:健翔校区计算中心一、试验目的u 把握进程的概念,深化理解进程的含义。生疏并理解并发环境中进程执 行的实质问题,了解构成并发机制的进程创建过程。能够使用系统调用 完成进程创建,形成多个进程并发的环境。u 了解在进程创建后通过对进程把握的系统调用,可实现对进程的有效控制。把握在进程执行中对进程进行睡眠、同步、撤销等把握方法。u 进一步生疏并发执行的实质,分析进程竞争资源的现象,学习解决进程 互斥的方法。二、试验环境操作系统:任何 unix/linux 及 sun solaris

2、或 windows 系列应用系统:gcc 编译器。若os 为 windows 系列,则还需相应的模拟环境三、预备学问1、linux 系统中进程的含义0在 linux 中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。进程是并发环境中的实体,每个进程用一个 task_struct 的数据结构来表示,用来管理系统中的进程,因而 task_struct 就是 linux 系统中的 pcb。另外,系统内核中还有一个 task 向量表,是指向系统中每一个task_struct 数据结构的指针的数组,因而 task 向量表就是 linux 系统中的pcb 表。2、linux 中的进程创建

3、除了 init 进程外,linux 中的全部进程都是由其他进程创建的。linux 中供应了系统调用 fork 和 clone,可被进程用来创建子进程。但系统调用 fork 和 clone 其实都是调用内核函数 do_fork(),通过克隆当前进程来创建子进程的。四、试验内容本试验要求在linux/unix 环境下用c 语言编写三个多进程并发执行的程序,基本涉及了 linux/unix 进程管理子系统中较为常用的有关进程把握的系统调用。试验内容如下:(1) 使用 fork()系统调用创建进程,使父、子进程分别运行不同的代码(要求子进程在父进程之前运行):子进程:以长格式显示当前名目的状况;分屏显

4、示 file1 的内容。父进程:对 1100 之间的自然数求和;分屏显示 file2 的内容。程序可能涉及到的系统调用:fork(),exec(),wait()1#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> int main()int p1,p2; int i,n=0;2p1 = fork(); if(p1 = 0)/system(“more -dc file1“); exe

5、cl(“/bin/ls“,“ls“,“-l“,0); exit(1);else if(p1 > 0)wait(null);/system(“more -dc file2“); p2 = fork();if(p2 = 0)execl(“/bin/cat“,“cat“,“file1“,0);else if(p2 > 0)wait(null);3for(i = 1 ; i <= 100 ; i+)n = n + i ;printf(“the add of 1-100 is:%dn“,n); execl(“/bin/cat“,“cat“,“file2“,0); exit(1);els

6、eprintf(“fork failed.n“);return 0;(2) 编程实现三个进程的并发执行(即父进程同其分别创建的两个子进程同 时运行),此程序运行使系统中有三个活动进程存在。把握让每个进程在屏幕上显示一个字符串(为了便于理解,可以是有意义的一句话)。 比如子进程显示”daughter”及”son”,父进程显示”parent”。试观看屏幕上的显示结果,并对输出结果进行分析。程序可能涉及到的系统调用及函数:fork(), printf()4#include<unistd.h> #include<stdio.h> int main()int p1,p2; p1

7、= fork(); if(p1 = 0)printf(“子进程:sonn“);else if(p1 > 0)5p2 = fork(); if(p2 = 0)printf(“子进程:daughtern“);else if(p2 > 0)printf(“父进程:parentn“);elseprintf(“fork failed.n“);return 0;(3) 编程实现并发执行的父子进程通过管道实现通信。要求父进程通过读标准输入,将读入的内容写入管道;子进程通过读管道,将读取的内容写 到标准输出。程序可能涉及到的系统调用及函数:fork(),pipe(),read(),write(),

8、close()6#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <stdio.h> #include <string.h>/charparent=“amessageto pipe”communication.n“;int main()int pid,fd2; char buf100; char parent100; pipe(fd); pid=fork();read(stdin_fileno,parent,100);7if(pid > 0)close(fd0);printf(“parent process sends a message to child.n“);write(fd1,parent,sizeof(parent); close(fd1);printf(“parentprocesswaitsthechildto terminate.n“);wait(0);printf(“parent process terminate.n“);else if(pid = 0)close(fd1);read(fd0,buf,100);printf(“the me

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论