1.实验目的

(1)理解进程与程序的区别。

(2)了解fork( )系统调用的返回值,掌握调用fork( )创建进程的方法。

(3)掌握进程并发执行的原理,理解进程并发执行的特点,区分进程并发执行与串行执行。 (4)能够熟练使用进程管理命令对进程进行管理

2.实验环境

(1)一台已经安装好的Window系统的计算机。

(2)安装好的CentOS虚拟机。

3.实验内容

(1)使用vi编辑器编写C语言程序,调用fork函数创建进程。

编写一段程序,利用系统调用fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

#include <stdio.h>void main(){int p1,p2;while  ((p1=fork())= =-1);  if (p1= =0)putchar(‘b’);else{while  ((p2=fork()= =-1);if (p2= =0)putchar(‘c’);elseputchar(‘a’);}}

(2)调用fork创建进程,查看进程fork函数一次调用,两个返回值,并查看两个返回值。

#include <unistd.h>

#include <stdio.h>

int main ()

{

pid_t fpid; //fpid表示fork函数返回的值

int count=0;

fpid=fork();

if (fpid < 0)

printf("error in fork!");

else if (fpid == 0) {

printf("I am the child process, my process id is %d\n",getpid());

printf("I am son.\n");

count++;

}

else {

printf("i am the parent process, my process id is %d\n",getpid());

printf("I am father!\n");

count++;

}

printf("统计结果是: %d\n",count);

return 0;

}

(2)进程管理命令

练习ps pstree top kill  jobs nice renice at corntabd等进程管理命令,参考(进程管理命令文档进行练习)

4.实验步骤

  1. 借助百度引擎学习进程与程序的区别。

进程是一个动态的概念,而程序是一个静态的概念,程序是指令的有序集合,无执行含义,进程则强调执行的过程;进程具有并行特征(独立性,异步性),程序没有;不同的进程可以包含同一程序,同一程序在执行中也可以产生多个进程。它们的本质区别就是进程是动态的,而程序则是静态的。

  1. 认识fork函数。

fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。

它不需要参数并返回一个整数值。下面是fork()返回的不同值。

负值:创建子进程失败。

零:返回到新创建的子进程。

正值:返回父进程或调用者。该值包含新创建的子进程的进程ID

  1. 调用fork函数创建进程

编写一段程序,利用系统调用fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

(4)查看结果

调用fork创建进程,查看进程fork函数一次调用,两个返回值,并查看两个返回值。

#include <unistd.h>

#include <stdio.h>

int main ()

{

pid_t fpid; //fpid表示fork函数返回的值

int count=0;

fpid=fork();

if (fpid < 0)

printf("error in fork!");

else if (fpid == 0) {

printf("I am the child process, my process id is %d\n",getpid());

printf("I am son.\n");

count++;

}

else {

printf("i am the parent process, my process id is %d\n",getpid());

printf("I am father!\n");

count++;

}

printf("统计结果是: %d\n",count);

return 0;

}

查看结果

(5)练习进程管理命令

练习ps pstree top kill  jobs nice renice at corntabd等进程管理命令,参考(进程管理命令文档进行练习)

ps相关指令练习

pstree相关命令练习

top相关命令练习

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

高亮显示当前运行进程,敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:

敲击键盘“x”(打开/关闭排序列的加亮效果),top的视图变化如下:

可以看到,top默认的排序列是“%CPU”。通过”shift + >”或”shift + <”可以向右或左改变排序列,现在是由shr排序

top-c练习

jobs相关命令练习

#打开vim 编辑a.txt, 并且按[Ctrl+z]隐藏

$ vim a.txt

[1]+  Stopped                 vim a.txt

#在后台运行两个ping任务

$ ping localhost -a > /dev/null &

[2] 7868

$ ping localhost -a > /dev/null &

[3] 7869

#显示任务

$ jobs

#显示任务,并带上PID

$ jobs -l

#显示暂停的任务

$ jobs -s

#显示运行中的任务

$ jobs -r

#仅显示任务的PID

$ jobs -p

#将编号为2的任务拿到前台来运行,并按下[Ctrl+z],暂停该任务

$ fg 2

#让编号为2的任务在后台运行

$ bg 2

$ jobs

nice命令练习

不用任何参数执行命令"nice"(见第1行),所以显示出当前的程序运行优先级为0(见第2行)。由此可知系统缺省的程序运行优先级为0。

第1个nice命令以缺省值来调整第2个nice命令运行的优先级,既在系统缺省的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令;第2个nice命令显示当前程序运行的优先级为10。

第1个nice命令以缺省值来调整第2个nice命令运行的优先级,既在系统缺省的程序运行优先级0的基础之上增加10,得到新的程序运行优先级10,然后以优先级10来运行第2个nice命令;第2个nice命令又以缺省值来调整第3个nice命令运行的优先级,既在第2个nice命令运行优先级基础之上再增加10,得到新的程序运行优先级20,但20大于最高程序运行优先级19,所以以优先级19来运行第3个nice命令;第3个nice命令显示当前程序运行的优先级为19。

以参数“-n”的形式指定程序运行优先级的调整值,系统缺省优先级0加上调整值-21得到新的优先级-21(小于-20),因此程序最终的运行优先级为-20。

参数“--1”、“-+1”和 “-1”中的第一个字符“-”都是语法定义的指定程序运行优先级调整值的标志符,第一个字符“-”之后的值为指定的程序运行优先级的调整值。

kill 相关命令练习

列出所有信号名称

得到指定信号的数值

先用ps查找进程,然后用kill杀掉

彻底杀死进程

(6)设置定时任务和周期性任务

at相关命令练习

三天后的下午 5 点钟执行 /bin/ls

明天17点钟,输出时间到指定文件内

计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务

删除已经设置的任务

显示已经设置的任务内容

设置开机启动

crontab相关命令练习

安装crontab:

yum install crontabs

启动服务

关闭服务

重启服务

查看crontab服务状态:

加入开机自动启动:

chkconfig –level 35 crond on

crontab -e修改crontab文件

列出crontab文件,可以用 crontab -l

5.实验思考题

  1. 进程和程序有何区别?

进程是一个动态的概念,而程序是一个静态的概念,程序是指令的有序集合,无执行含义,进程则强调执行的过程;进程具有并行特征(独立性,异步性),程序没有;不同的进程可以包含同一程序,同一程序在执行中也可以产生多个进程。它们的本质区别就是进程是动态的,而程序则是静态的。

  1. 谈谈你对fork()函数的认识。

fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。

它不需要参数并返回一个整数值。下面是fork()返回的不同值。

负值:创建子进程失败。

零:返回到新创建的子进程。

正值:返回父进程或调用者。该值包含新创建的子进程的进程ID

6.实验心得体会

实验5:进程管理【nyist】相关推荐

  1. linux进程管理命令实验,实验2Linux进程管理.doc

    实验2Linux进程管理 实验2 Linux进程管理 实验目的 1.加深对进程概念的理解,明确进程和程序的区别 2.进一步认识并发执行的实质 3.分析进程争用资源的现象,学习解决进程互斥的方法 实验性 ...

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

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

  3. 《操作系统》实验报告——进程管理

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

  4. OS实验:进程管理与死锁

    进程管理与死锁 一. 实验目的 二. 实验内容 三. 实验过程 3.1 在Linux 下创建一对父子进程 让父进程提前结束 让父进程后结束 3.2 在Linux下创建两个线程A和B,循环输出数据或字符 ...

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

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

  6. Linux实验心得——进程管理

    设计一  进程管理 一.实验目的 1. 理解Linux 系统中进程通信的基本原理. 2. 加深对进程概念的理解,明确进程与程序的区别. 3. 掌握fork().fockf().pipe(fd)等函数的 ...

  7. 实验五 进程管理命令

    1.实验目的 (1)了解如何监视系统运行状态 (2)掌握查看.删除进程的正确方法 (3)掌握命令在后台运行的用法 (4)掌握进程手工.调度启动的方法 2.常用命令 who 查看当前在线用户 top 监 ...

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

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

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

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

  10. 实验1 进程管理实验-计算机操作系统

    在分析给定进程创建源代码基础上,结合可能使用的进程调度算法,完善PCB结构 编写程序实现进程撤销功能,并与进程创建程序构成一个进程管理程序,模拟实现进程的管理功能 进行动态的进程创建.撤销等测试. 按 ...

最新文章

  1. C ++基本输入/输出
  2. 洛谷—— P1118 [USACO06FEB]数字三角形Backward Digit Su…
  3. usermod命令,用户密码管理和mkpasswd命令
  4. 1080 线段树练习
  5. sql server2005 常用语句
  6. 用mysql做文本挖掘_手把手教你做文本挖掘
  7. Shell脚本的学习笔记一:变量
  8. fastd java下载_FastReport VCL报表控件
  9. java 同步块的锁是什么,java – 同步块 – 锁定多个对象
  10. 参考文献中杂志名字问题
  11. Jquery - jquery 插件,jQuery.Switchable
  12. 【英语学习】【Level 08】U02 Movie Time L4 From the page to the big screen
  13. Python-网站页面代码获取
  14. Ubuntu ibus 输入法之Skype不能输入中文
  15. python2.x和python3.x共存在windows
  16. java程序片的三种元素符号是什么_JAVA试题及答案(精致)
  17. LINUX下载编译libsrtp-1.5.0
  18. 控制~李雅普诺夫稳定性
  19. http接口开发与调用案例
  20. 三菱伺服驱动器MR-J2S 70A伺服驱动器电源驱动板图纸

热门文章

  1. 云演-Web文件上传-writeup
  2. kkksc03考前临时抱佛脚(DFS)
  3. STM32CubeMX——环境配置以及实例编译烧写
  4. uniapp小程序loading效果自带
  5. 黑科技买菜时代到来?花样菜场结合人脸识别、智能结算技术开生鲜店
  6. 9月份GitHub上最热门的机器学习项目
  7. 【转】扁平化时代,被OTT抑或是一种幸福
  8. 超融合2.0时代到来了,你更看好哪一家?
  9. 电厂运维的cis数据_基于IEC标准的变电站监控运维数据建模的研究
  10. 证券从业考试内容是什么?