实验三进程的创建和简单控制(学生分析

实验 进程的创建和简单控制

实验目的:

掌握进程的概念和进程的状态,对进程有感性的认识;

掌握进程创建方法;

认识进程的并发执行,了解进程族之间各种标识及其存在的关系;

熟悉进程的创建、阻塞、唤醒、撤销等控制方法。

实验内容:

了解有关Linux进程的属性和进程的层次结构;

学习有关Linux的前台后台进程;

学习有关Linux命令的顺序执行和并发执行;

学习有关挂起和终止进程;

了解并发程序的不可确定性,进行简单并发程序设计。

实验步骤:

Shell下的进程控制

进入Linux系统。

用ps查看进程。linux的ps命令是用来监视系统进程和资源使用情况的命令显示瞬间的动态ps 的参数非常多常用的参数-A 列出所有的-w 显示加宽可以显示较多的-au 显示较详细的-aux 显示所有包含其他使用者的

用kill终止进程kill命令通过向进程发送指定的信号来结束进程。

用pstree命令显示系统中进程层次结构。pstree指令用ASCII字符显示树状结构,清楚地表达间的相互关系。语法格式pstree [-acGhlnpuUV][-H ][/]

Linux简单进程编程

理解系统调用fork()的使用。fork()会产生一个与父程序相同的子程序,唯一不同之处在其图 5所示。

图 5 系统调用fork()

编辑下面的实现父进程产生两个子进程,父进程显示字符“a”、两个子进程,分别显示字符“b”、“c”图 6所示。#include

main( )

{

int p1,p2;

while ((p1=fork())==-1); /*父进程创建第一个进程,直到成功*/

if(p1==0) /*0返回给子进程 1*/

{

putchar('b');/*P1的处理过程*/

}

else ①

{ /*正数返回给父进程(子进程号)*/

while ((p2=fork())==-1); /*父进程创建第二个进程,直到成功*/

if(p2==0) /*0返回给子进程2*/

{

putchar('c');/*P2的处理过程*/

}

else

{

putchar('a');/*P2创建完成后,父进程的处理过程*/

}

}

}图 6系统调用 fork()的使用编译连接通过后,多次运行程序,观察进程并发执行结果,并分析原因。

原因:当程序并发执行时,系统处于一个复杂的动态组合状态,各程序执行的相对速度不确定,这使得这些程序多次并发执行得到的结果不同,调度、执行的顺序由系统决定。

删除语句①,观察输出的内容,体会fork的使用。

提示:编译和运行该程序,分析结果出现两种输出的原因。

删除语句①后:

思考的问题:

运行命令为什么是“./command”?

将源文件保存为以.c为后缀名的文件,开始进行编译$gcc -o XXX XXX.c

编译成功完成后,在当前路径下,生成一个名为XXX的文件

然后执行 $./XXX

程序得以运行

. 和 .. 什么含义?

.表示当前目录,..表示上级目录,即父目录

shell 提示为什么不换行?

因为在输出语句中没有/n换行符。

输出字母为什么和提示交错?

b,a,shell,c四个进程并发执行,执行先后顺序由系统调度决定。所以当shell调度在c进程前时,会出现输出字母和提示交错的现象。

管道什么含义?

管道符,可以认为它是一根水管,连接输入端和输出端。

a | b

其中,| 就是管道符,将输入端 a命令产生的数据传给输出端的b命令来处理

./f1|pstree|grep f1什么含义?

将./f1产生的数据传给pstree来处理,经过pstree处理后的数据再传给grep f1来处理

在运行f1文件的进程的树结构中查找f1(?)

6中组合命令为什么没有输出?

(?)

如果想保留6中的./f1的输出内容,该如何操作?

进行重定向操作

./f1 运行结果为什么不一样?每种结果的产生原因。

有a,b,c三个并发进程,调度顺序由系统决定

①bca

②bac

③abc

./f1|pstree|grep f1运行结果为什么不一样?截图中四种结果的产生原因。

由于并发进程的调度顺序是由系统决定的,并且pstree显示的是一刹那的进程,进程调度又是动态的。

四种结果:

①无结果:可能三个进程调度已经

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

  1. 笔记:Linux下C编程实现每隔一秒向文件中写入当前时间

    2019独角兽企业重金招聘Python工程师标准>>> #include <stdio.h> #include <stdlib.h> #include < ...

  2. Linux进程ID号--Linux进程的管理与调度(三)

    进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum ...

  3. linux ctime 时间戳,关于LINUX三种时间戳的详细说明(带实验)

    关于LINUX三种时间戳的详细说明(带实验) 发布时间:2018-03-11 19:54, 浏览次数:518 , 标签: LINUX Linux系统将时间标记分三类: atime( A ccess t ...

  4. linux shell 脚本 父子进程 等待子进程,SHELL父子进程分析

    导言 本节将就shell交互(脚本执行)过程中涉及子进程(subprocess)以及子SHELL(subshell)的部分,配以实例,进行说明.将详细讨论如下问题:subprocess和subshel ...

  5. 【Linux进程、线程、任务调度】三 CPU/IO消耗型进程 吞吐率/响应 SCHED_FIFO算法与SCHED_RR算法 SCHED_NORMAL算法和CFS算法 nice与renic chrt

    学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2(已满): 780902027 学习 ...

  6. linux每隔几秒杀死进程,如何每隔5秒在linux中找到特定进程的内存消耗

    我只是想知道如何在特定时间(比如5秒)找到特定进程的内存消耗 我是linux的新手. 因此,这样做的详细步骤将不胜感激 你能定义一下"特定时间的内存消耗"对你意味着什么? 请记住, ...

  7. Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来,Linux ...

  8. Linux内核进程管理基本概念-进程、运行队列、等待队列、进程切换、进程调度

    下面简述一些基本概念,以及对内核代码做最初步的了解: 一 Linux内核进程管理基础 Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到 ...

  9. 计算机操作系统课后题答案第三章,计算机操作系统教程习题与实验指导(第3版)...

    操作系统习题解答篇 第一章 操作系统概述 1.1 学习指导 1.2 习题解答 第二章 进程.线程与作业 2.1 学习指导 2.2 习题解答 第三章 中断与处理器调度 3.1 学习指导 3.2 习题解答 ...

最新文章

  1. 近亿台物联网设备或遭劫持,这家IoT云平台遭遇“灾难性”入侵事件
  2. 青龙面板安装教程+手机京豆组件让你的手机美起来
  3. BZOJ4939[Ynoi2016]掉进兔子洞(莫队+bitset)
  4. 关于对2020年数据中心的发展的8个预测
  5. C++11:内联命名空间,无缝升级库代码
  6. laravel框架中文手册_laravel请求参数校验方法
  7. 道格拉斯算法 java_道格拉斯-普克算法的java的实现代码如下
  8. 学历影响程序员的工资吗?
  9. jenkins 忘记密码或认证配置出错后解决办法
  10. php 随机坐标点,php实现 计算坐标点在某区域
  11. 【TSP】基于matlab遗传和模拟退火算法求解中国省会城市旅行商问题【含Matlab源码 1254期】
  12. 《Spring揭秘》读后感
  13. PBRT-V3体渲染笔记
  14. VS2015 还是VS2017 好用_如何卸载清理vs2017前vs2015,vs2013等版本
  15. 从word中无损批量导出图片
  16. JavaScript 实例:点击漫天小星星 (获取整个浏览器窗口的宽高)
  17. linux双卡同时使用教程,苹果教你玩转双卡双待:官方推出双卡使用教程,真香!...
  18. 使用模拟退火算法解决TSP问题
  19. 记 游戏测试Month2
  20. 高数 | 积分中值定理的开闭区间、积分第一中值定理及其推广

热门文章

  1. Eclipse Memory Analyzer 安装(Update Site: http://download.eclipse.org/mat/1.3.1/update-site/ )
  2. Qt使用OpenCV读取图片练习
  3. apache rewrite 规则转换 nginx rewrite 的网站
  4. 中国大数据企业排行榜V6.0- 5 年后再去看看中几个大数据公司的发展状况
  5. c# 三种异步编程模型EAP(*)、 APM(*)和 TPL
  6. Mac安装Open CC进行繁简转化
  7. 11g crsctl start/stop crs 和 crsctl start/stop cluster 的关系
  8. 导出Android手机应用apk
  9. D-hdu 1465 不容易系列之一(递推)
  10. Linux 磁盘管理 二(Raid、LVM、Quota)