Linux实验三父子进程每隔3秒,实验三进程的创建和简单控制(学生分析.doc
实验三进程的创建和简单控制(学生分析
实验 进程的创建和简单控制
实验目的:
掌握进程的概念和进程的状态,对进程有感性的认识;
掌握进程创建方法;
认识进程的并发执行,了解进程族之间各种标识及其存在的关系;
熟悉进程的创建、阻塞、唤醒、撤销等控制方法。
实验内容:
了解有关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相关推荐
- 笔记:Linux下C编程实现每隔一秒向文件中写入当前时间
2019独角兽企业重金招聘Python工程师标准>>> #include <stdio.h> #include <stdlib.h> #include < ...
- Linux进程ID号--Linux进程的管理与调度(三)
进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum ...
- linux ctime 时间戳,关于LINUX三种时间戳的详细说明(带实验)
关于LINUX三种时间戳的详细说明(带实验) 发布时间:2018-03-11 19:54, 浏览次数:518 , 标签: LINUX Linux系统将时间标记分三类: atime( A ccess t ...
- linux shell 脚本 父子进程 等待子进程,SHELL父子进程分析
导言 本节将就shell交互(脚本执行)过程中涉及子进程(subprocess)以及子SHELL(subshell)的部分,配以实例,进行说明.将详细讨论如下问题:subprocess和subshel ...
- 【Linux进程、线程、任务调度】三 CPU/IO消耗型进程 吞吐率/响应 SCHED_FIFO算法与SCHED_RR算法 SCHED_NORMAL算法和CFS算法 nice与renic chrt
学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2(已满): 780902027 学习 ...
- linux每隔几秒杀死进程,如何每隔5秒在linux中找到特定进程的内存消耗
我只是想知道如何在特定时间(比如5秒)找到特定进程的内存消耗 我是linux的新手. 因此,这样做的详细步骤将不胜感激 你能定义一下"特定时间的内存消耗"对你意味着什么? 请记住, ...
- Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来,Linux ...
- Linux内核进程管理基本概念-进程、运行队列、等待队列、进程切换、进程调度
下面简述一些基本概念,以及对内核代码做最初步的了解: 一 Linux内核进程管理基础 Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到 ...
- 计算机操作系统课后题答案第三章,计算机操作系统教程习题与实验指导(第3版)...
操作系统习题解答篇 第一章 操作系统概述 1.1 学习指导 1.2 习题解答 第二章 进程.线程与作业 2.1 学习指导 2.2 习题解答 第三章 中断与处理器调度 3.1 学习指导 3.2 习题解答 ...
最新文章
- 近亿台物联网设备或遭劫持,这家IoT云平台遭遇“灾难性”入侵事件
- 青龙面板安装教程+手机京豆组件让你的手机美起来
- BZOJ4939[Ynoi2016]掉进兔子洞(莫队+bitset)
- 关于对2020年数据中心的发展的8个预测
- C++11:内联命名空间,无缝升级库代码
- laravel框架中文手册_laravel请求参数校验方法
- 道格拉斯算法 java_道格拉斯-普克算法的java的实现代码如下
- 学历影响程序员的工资吗?
- jenkins 忘记密码或认证配置出错后解决办法
- php 随机坐标点,php实现 计算坐标点在某区域
- 【TSP】基于matlab遗传和模拟退火算法求解中国省会城市旅行商问题【含Matlab源码 1254期】
- 《Spring揭秘》读后感
- PBRT-V3体渲染笔记
- VS2015 还是VS2017 好用_如何卸载清理vs2017前vs2015,vs2013等版本
- 从word中无损批量导出图片
- JavaScript 实例:点击漫天小星星 (获取整个浏览器窗口的宽高)
- linux双卡同时使用教程,苹果教你玩转双卡双待:官方推出双卡使用教程,真香!...
- 使用模拟退火算法解决TSP问题
- 记 游戏测试Month2
- 高数 | 积分中值定理的开闭区间、积分第一中值定理及其推广
热门文章
- Eclipse Memory Analyzer 安装(Update Site: http://download.eclipse.org/mat/1.3.1/update-site/ )
- Qt使用OpenCV读取图片练习
- apache rewrite 规则转换 nginx rewrite 的网站
- 中国大数据企业排行榜V6.0- 5 年后再去看看中几个大数据公司的发展状况
- c# 三种异步编程模型EAP(*)、 APM(*)和 TPL
- Mac安装Open CC进行繁简转化
- 11g crsctl start/stop crs 和 crsctl start/stop cluster 的关系
- 导出Android手机应用apk
- D-hdu 1465 不容易系列之一(递推)
- Linux 磁盘管理 二(Raid、LVM、Quota)