计算机操作系统实验之_进程观测_实验报告
2012-11-10 14:32
507 查看
南阳理工学院计算机操作系统实验之
实验目的和要求
(1)了解在Linux操作系统中进程的特点和表现形式
(2)掌握Linux查看进程的方式与方法
(3)在一个进程中创建另一个进程的方法
(4)掌握父进程和子进程的关系和fork的用法
实验内容与分析设计
实验内容:
(1)编写一个简单的程序,使用ps或top工具观察该进程的的ID号,并使用kill工具终止进程运行。
(2)编写一个程序,使用fork函数生成一个子进程,并使用相关工具观察进程状态。
实验步骤:
(1)
文件名命名为process1.c,使用gcc process1.c -o process编译该程序。运行该程序,打开其它一个终端
窗口,输入命令top,观察名称为process1的进程,记录各项数据(包括进程号)。使用"kill 进程号" 直接杀死该进程。观察进程是否消失?
需要记录的数据:进程状态中的id,内存使用和CPU占有率。由于该进程一直处于循环中,思考id、内存
使用和cpu占有率哪一个因素和循环
关系密切?如何避免,请给出合理的建议。这是否说明CPU也是操作系统中的一个重要资源?
(2)
请保存为process2.c,编译运行,写出你观察到的输出结果,能否对输出的现象做一个合理的解释?
若将上述实例(2),改写为:
请保存为process4.c,编译运行,写出你观察到的输出结果,能否对输出的现象做一个合理的解释?
若将将实例(2)改为:
请保存为process3.c,编译运行,写出你观察到的输出结果,能否对输出的现象做一个合理的解释?
实验步骤和调试过程:
统一执行一下命令
vim process*.c(编辑源文件)
gcc process*.c -o process*(编译)
./process(运行程序)
top(查看进程)
kill -9 进程号(结束进程)
实验结果:
(1)process.c: 程序无限次输出 I am the first process!直到输入“kill 进程号”才结束
(2)process2.c: 父进程、子进程各输出1000,且输出次序不一
(3)process4.c(process2.c更改后的版本):父进程执行1000次,子进程不确定,且顺序不确定
(4)父进程子进程打印顺序不确定,可见父进程和子进程各独立执行。父进程子进程均无限次输出,知道输入“kill -9 进程号”才终止
疑难小结
(1)、最后一个程序peocess3.c,运行后,kill 进程号无法结束进程,只有kill 进程号-9后才能终止进程
(2)、父子进程打印次序无规律,说明父子进程的进行是无序的随机的。
主要算法和程序清单
参考书目
西安电子科技大学出版社 《计算机操作系统(第 三 版)》汤小丹 、梁红兵、哲凤屏、 汤子瀛 著
实验源码以及编译好的程序下载地址点击打开链接
课程名称: | 计算机操作系统 |
实验学期: | 2011-2012第二学期 |
实验目的和要求
(1)了解在Linux操作系统中进程的特点和表现形式
(2)掌握Linux查看进程的方式与方法
(3)在一个进程中创建另一个进程的方法
(4)掌握父进程和子进程的关系和fork的用法
实验内容与分析设计
实验内容:
(1)编写一个简单的程序,使用ps或top工具观察该进程的的ID号,并使用kill工具终止进程运行。
(2)编写一个程序,使用fork函数生成一个子进程,并使用相关工具观察进程状态。
实验步骤:
(1)
#include <stdio.h> int main() { //设计一个循环,使其反复运行,方便观察 while(1) { printf("I am the first process!\n"); } return 0; }
文件名命名为process1.c,使用gcc process1.c -o process编译该程序。运行该程序,打开其它一个终端
窗口,输入命令top,观察名称为process1的进程,记录各项数据(包括进程号)。使用"kill 进程号" 直接杀死该进程。观察进程是否消失?
需要记录的数据:进程状态中的id,内存使用和CPU占有率。由于该进程一直处于循环中,思考id、内存
使用和cpu占有率哪一个因素和循环
关系密切?如何避免,请给出合理的建议。这是否说明CPU也是操作系统中的一个重要资源?
(2)
//process2.c #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { int i; if ( fork() == 0 ) { /* 子进程程序 */ for ( i = 1; i <1000; i ++ ) printf("This is child process\n"); } else { /* 父进程程序*/ for ( i = 1; i <1000; i ++ ) printf("This is process process\n"); } }
请保存为process2.c,编译运行,写出你观察到的输出结果,能否对输出的现象做一个合理的解释?
若将上述实例(2),改写为:
//process4.c #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { int i; if ( fork() == 0 ) { /* 子进程程序 */ for ( ;; ) printf("This is child process\n"); } else { /* 父进程程序*/ for ( i=1;i<1000;i++ ) printf("This is process process\n"); } }
请保存为process4.c,编译运行,写出你观察到的输出结果,能否对输出的现象做一个合理的解释?
若将将实例(2)改为:
//process3cc #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { int i; if ( fork() == 0 ) { /* 子进程程序 */ for ( ;; ) printf("This is child process\n"); } else { /* 父进程程序*/ for ( ;; ) printf("This is process process\n"); } }
请保存为process3.c,编译运行,写出你观察到的输出结果,能否对输出的现象做一个合理的解释?
实验步骤和调试过程:
统一执行一下命令
vim process*.c(编辑源文件)
gcc process*.c -o process*(编译)
./process(运行程序)
top(查看进程)
kill -9 进程号(结束进程)
实验结果:
(1)process.c: 程序无限次输出 I am the first process!直到输入“kill 进程号”才结束
(2)process2.c: 父进程、子进程各输出1000,且输出次序不一
(3)process4.c(process2.c更改后的版本):父进程执行1000次,子进程不确定,且顺序不确定
(4)父进程子进程打印顺序不确定,可见父进程和子进程各独立执行。父进程子进程均无限次输出,知道输入“kill -9 进程号”才终止
疑难小结
(1)、最后一个程序peocess3.c,运行后,kill 进程号无法结束进程,只有kill 进程号-9后才能终止进程
(2)、父子进程打印次序无规律,说明父子进程的进行是无序的随机的。
主要算法和程序清单
//process1.c
#include <stdio.h>
int main()
{
//设计一个循环,使其反复运行,方便观察
while(1)
{
printf("I am the first process!\n");
}
return 0;
}
//process2.c #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { int i; if ( fork() == 0 ) { /* 子进程程序 */ for ( i = 1; i <1000; i ++ ) printf("This is child process\n"); } else { /* 父进程程序*/ for ( i = 1; i <1000; i ++ ) printf("This is process process\n"); } }
//process4.c #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { int i; if ( fork() == 0 ) { /* 子进程程序 */ for ( ;; ) printf("This is child process\n"); } else { /* 父进程程序*/ for ( i=1;i<1000;i++ ) printf("This is process process\n"); } }//process3.c
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
int i;
if ( fork() == 0 )
{
/* 子进程程序 */
for ( ;; )
printf("This is child process\n");
}
else
{
/* 父进程程序*/
for ( ;; )
printf("This is process process\n");
}
}
参考书目
西安电子科技大学出版社 《计算机操作系统(第 三 版)》汤小丹 、梁红兵、哲凤屏、 汤子瀛 著
实验源码以及编译好的程序下载地址点击打开链接
相关文章推荐
- 计算机操作系统实验之_进程观测_实验报告
- 计算机操作系统之进程管理
- 操作系统——实验一.进程管理
- 操作系统ucore lab1实验报告
- 操作系统ucore lab2实验报告
- 计算机操作系统进程间的切换
- 知识储备_计算机操作系统:进程管理
- 操作系统ucore lab3实验报告
- 【计算机动画】实验 路径曲线与运动物体控制 报告
- 计算机操作系统-进程篇
- Linux进程管理 进程状态和时钟滴答[哈工大操作系统实验]
- 操作系统实验报告-系统调用
- 操作系统进程优先级调度实验
- 操作系统进程管理实验(FC5下)
- “Linux内核分析”实验报告(八)理解进程调度时机跟踪分析进程调度与进程切换的过程
- “Linux内核分析”实验报告(一)分析汇编代码理解计算机是如何工作的
- 操作系统 实验三 进程调度模拟程序
- 2008秋季-计算机软件基础-未交实验报告名单
- 操作系统实验报告-地址映射
- 操作系统--进程控制实验