实现工具:PC机

实现环境:Linux

实习内容(功能、目标):

实验目的: 
创建进程,体会进程间的并发特征。

实验内容: 
编写一段程序,使用系统调用 fork() 创建两个子进程 p1 和 p2。而且父进程输出字符串“ father ”,第一个子进程输出字符串“ borther1 ”,第二个子进程输出字符串“ borther2 ”。

实验要求: 
(1)掌握系统调用 fork() 的使用方法及其功能; 
(2)利用系统调用 sleep() 调整父进程及各子进程的并发执行过程; 
(3)认真查看和比较每次执行结果,分析原因。

实现的思想、方法和技术(含数据结构、算法):

使用系统调用 fork() 创建两个子进程 p1 和 p2,并且通 过 getpid() 输出其进程号 ,在子进程中输出各自的标识。 完成了进程的创建, 利用系 统调用 sleep()调整父进程及各子进程的并发执行过程体会了进程间的 并发特征。 本次实验比较简单,主要是运用 fork() 、getpid()、sleep() 这几个系统调用函数,没有涉及算法问题。

函数功能:
1. Fork()
 (1) 功能:创建一子进程;
 (2) 返回值
0   : 从进程返回;
>0 : 从父进程返回,返回值为子进程的进程标识号;
-1  : 创建失败返回。

主要代码:

#include<stdio.h>
#include<stdlib.h> int main() { int p1,p2; while((p1=fork())==-1); if(p1==0) { printf("brother1\n"); exit(0); sleep(5); } else{ while((p2=fork())==-1); if(p2==0) { printf("brother2\n"); exit(0); sleep(0); } wait(0); printf("father\n"); }
}

注释:

1.创建子进程 1 
2.如果 p1 是 0,执行子进程 1 中的内容 
3.否则将创建子进程 2

结果分析:

实验截图:

创建子进程 1;
如果 p1 是 0,执行子进程 1 中的内容;
否则将创建子进程 2

错误一: 
忘加头文件 : #include<stdlib.h>
                     #include<wait.h> ;
 

错误二: 
没见 wait(0),父进程没有等待子进程的创建,先上 CPU;

思考题:
(1)为什么各字符串的输出顺序会是任意的?
           答:进程并发执行,子进程与父进程抢占处理机,所以输出字符顺序不同。
(2)改写程序,将字符串用循环语句一个一个字符输出,再查看执行结果如何?
           答:当sleep ()语句不存在的时候,随机输出,在 brotherl输出的过程中,可能中途将brother2先输出再输出 brother1后边的字符,反之存在时顺序输出,当然顺序输出是建立在一个良好的控制的前提下的,否则也可能会乱序

实验心得:

(1)加深对进程概念的理解,明确进程和程序的区别。

(2)进一步认识并发执行的实质。

(3)分析进程争用资源的现象,学习解决进程互斥的方法。

(4)复习课本关于进程控制和进程同步的内容,加深对进程管理概念的理解。

(5)认真阅读实验材料中进程管理部分,分析多个进程的运行情况。

操作系统实验二进程的创建控制实验(含代码及实验心得)相关推荐

  1. 操作系统实验一 Linux基本操作|实验二 进程管理

    由于当时没存代码,只有实验文档代码截图,文末也可直接获取实验文档. 操作系统实验 目录 实验一 Linux基本操作 实验二进程管理 实验一 Linux基本操作 1实验目的 1.熟悉在Linux操作系统 ...

  2. Linux实验三父子进程每隔3秒,实验三进程的创建和简单控制(学生分析.doc

    实验三进程的创建和简单控制(学生分析 实验 进程的创建和简单控制 实验目的: 掌握进程的概念和进程的状态,对进程有感性的认识: 掌握进程创建方法: 认识进程的并发执行,了解进程族之间各种标识及其存在的 ...

  3. 计算机图形学 实验二 三维模型读取与控制【OpenGL】

    文章目录 实验2.1 OpenGL的控制与交互方式 一. 实验目的 二. 理论背景 三. 实验内容 1. 创建基本工程项目 2. 在子窗口中绘制图形 3. 在子窗口中通过键盘事件更换椭圆形状颜色 4. ...

  4. plc变频器c语言,如何通过PLC控制变频器进行电机转速控制,含代码!

    原标题:如何通过PLC控制变频器进行电机转速控制,含代码! 一.项目描述 按下电动机启动按钮,电动机启动运行在5Hz所对应的转速:延时10s后,电动机升速运行在10Hz对应的转速,再延时10s后,电动 ...

  5. 2020 操作系统 实验二 进程通信

    实验二.进程通信 一.实验名称 进程通信 二.实验目的 掌握用邮箱方式进行进程通信的方法,并通过设计实现简单邮箱理解进程通信中的同步问题以及解决该问题的方法. 三.实验原理 邮箱机制类似于日常使用的信 ...

  6. 操作系统实验二 进程管理

    进程管理 一.实验目的 1. 理解进程的概念,明确进程和程序的区别. 2. 理解并发执行的实质. 3. 掌握进程的创建.睡眠.撤销等进程控制方法. 二.实验内容与基本要求 用C语言编写程序,模拟实现创 ...

  7. 操作系统——实验二 进程管理

    1.实验目的 (1)加深对进程概念的理解,明确进程和程序的区别. (2)进一步认识并发执行的实质. (3)分析进程竞争资源现象,学习解决进程互斥的方法. 2.实验预备内容 (1)阅读Linux的sch ...

  8. 【操作系统实验】实验二 进程管理

    进程管理 实验2-1 使用fork创建进程 代码 实验2-2 使用exec替换子进程程序 代码 实验2-3 分析进程的父进程 代码 实验2-4 共享存储区机制进程通信 代码 实验2-5 消息队列实现进 ...

  9. 关于dw站点更改html,实验二 使用DW创建站点、设置页面头部信息及页面属性

    第二部分实验一使用DW创建及管理站点.设置页面头部信息 及页面属性 一.实验目的 掌握使用Dreamweaver创建站点以及设置页面头部信息和页面属性 二.实验环境 装有Dreamweaver的PC机 ...

最新文章

  1. 直接对梯度下手,阿里达摩院提出新型优化方法,一行代码即可替换现有优化器...
  2. 人工智能可落地项目总结
  3. 【MATLAB】界面介绍 ( 标题栏 | 选项卡 | 命令窗口 | 编辑器 | 变量命名规则 )
  4. 【译】最大限度地降低多线程 C# 代码的复杂性
  5. php取月份函数,分享3个php获取日历的函数
  6. Django上传文件及分页
  7. Selenium WebDriver- 使用Frame中的HTML源码内容操作Frame
  8. eclipse(或者myeclipse)常用配置方法
  9. [排序][二分][dp]JZOJ 2747 捡金子
  10. C++中重写与覆写(虚函数virtual)的区别
  11. C#OOP之二 变量和表达式
  12. JBoss AS 7 EJB3池配置
  13. Spring MVC 中 HandlerInterceptorAdapter的使用
  14. 【GoLang】golang中可以直接返回slice吗?YES
  15. 【Daily】IE弹窗SQL分割字符串
  16. 易语言卷帘菜单与json_易语言卷帘式菜单组件使用教程
  17. Aurora AD308e 一体机驱动
  18. VMware12虚拟机安装教程
  19. ios11修改微信步数_网页一键就能修改微信步数?这个网站你值得看下
  20. 金博宝芝灵K6医药管理软件吉度盘点机PDA盘点

热门文章

  1. 如何在html中在线预览pdf文件?
  2. 三种方法求最大公约数(C语言版)
  3. 网游:互联网时代的精神鸦片?
  4. osi七层语言html,OSI分为哪七层 OSI七层功能介绍【详解】
  5. mysql 命令行 h_mysql-命令行
  6. 手把手教你写一个脚手架
  7. android 8 奕骆,为耐而生的手机 Innos奕骆D6000评测
  8. 计算机键盘被锁怎么解,解开电脑键盘锁的小窍门
  9. 长短期记忆网络 Long Short-Term Memory
  10. 分享一款多功能免费SEO工具箱-从0开始打造高流量网站