文档库 最新最全的文档下载
当前位置:文档库 › Linux实验五 进程管理命令

Linux实验五 进程管理命令

Linux实验五 进程管理命令
Linux实验五 进程管理命令

实验五进程管理命令

一、实验目的

(1)了解如何监视系统运行状态

(2)掌握查看、删除进程的正确方法

(3)掌握命令在后台运行的用法

(4)掌握进程手工、调度启动的方法

二、常用命令

who 查看当前在线用户

top 监视系统状态

ps 查看进程

kill 向进程发信号

bg 把进程变成后台运行

& 把进程变成后台运行

fg 把后台进程变成前台运行

jobs 显示处于后台的进程。

at 在指定的时刻执行指定的命令或命令序列

batch 在系统负载较低、资源较空闲时执行命令或命令序列以上命令的具体用法请参阅教材、课件和man手册

三、实验内容

1、用top命令察看当前系统的状态,并识别各进程的有关栏目。

2、用ps命令察看系统当前的进程,并把系统当前的进程保存到文件

process中。

3、用ps命令察看系统当前有没有init进程。

4、输入“cat <回车>”

-z 键,出现什么情况?输入fg命令出现什么情况?

答:将cat进程挂起,fg将挂起进程调到前台运行

-c 键,出现什么情况?

答;强制中断

5、输入“find / -name ls*>temp &”,该命令的功能是什么?

查看该进程;

答:在根目录下按名字查找以ls开头的文件,并把查询结果保存到temp文件,并且把进程置为后台运行

输入killall find命令后,再查看该进程。

答:输入该命令后回车后,和fand相关的进程全部被杀死

6、输入“find / -name ls*>temp &”

输入jobs命令,出现什么情况?

答;查看后台进程的信息

输入fg命令出现什么情况?

答:将后台进程调到前台运行

7、指定上午XX(小时):XX(分钟)执行某命令

8、查阅资料,了解batch命令与at命令的关系

答:at是在指定时间执行某命令,batch是党系统负载低于0.8的时候在某一时间执行某命令

9、每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为:backup.tar.gz,放在/home/backup目录下.(先新建/data目录,并在目录中随意生成几个文件)

四、实验报告

以书写形式记录下每一个(1-8)实验内容,包括遇到的问题和解决方法;并回答以下思考题。

五、思考题

1、输入“cat <回车>”,-z 键。

答:将cat进程挂起

2、用kill命令无法杀死该进程,实验之,并说明为什么。

答:kill进程是通过发送信号给进程让进程自己结束。

3、用fg命令把它变成前台运行,出现什么情况,为什么?

答:占用前台终端窗口,进程在前台运行

《Linux操作系统》实验五-作业任务和进程管理

《Linux操作系统》 实验报告 实验五:作业任务和进程管理

一、实验目的 (1) 掌握UNIX系统作业、任务和进程管理的任务,了解Linux系统进程管理的图形界面; (2) 了解UNIX的系统进程间通信机制,掌握信号操作和终止进程的命令。 (3) 了解任务和作业管理命令at和batch; (4) 掌握UNIX系统的进程定时启动管理命令crontab; (5) 了解进程的挂起,掌握fg,bg等命令。 二、实验环境 一台装有Windows操作系统PC机,上装有虚拟机系统VMWare,实验过程通过VMWare系统启Linux系统工作。 三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果) 1)进程管理与查询 (1)进程状态查询 1.ps –ef | more #显示所有进程及启动参数 2. ps –ajx | more #以作业方式显示进行信息

3. ps –el | more #以长格式显示所有进程信息 4.pstree –p 5.pstree -a

(2)终止进程的执行 1.终止某一已知PID进程:ps –9 PID(1)#PID由用户自己选择 2.在当前终端上执行命令:man ps 3、换一终端在其运行:ps –e | grep man #确定进程PID

4.终止进程执行:kill –9 PID #PID是上命令查询的结果 4.终止所的同名进程 终止上例中的man命令:killall man或 killall –9 man 分别至少在2个不同终端上登录,然后在其中的一个终端上分别执行以下命令,并观察和分析原因。 killall bash killall –9 bash 执行killall -9 bash命令时,终端窗口关闭 (3) 进程的挂起及前后台调度 在一个终端上起动命令man man,在不退出man命令的情况下按下组合键Ctrl+Z,观察反映。 答:先退出当前页面,返回进入终端时的页面 先后执行命令jobs和fg命令,并观察反映。

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

Linux 进程管理实验

Linux 进程管理实验 一、实验内容: 1. 利用bochs观测linux0.11下的PCB进程控制结构。 2. 利用bochs观测linux0.11下的fork.c源代码文件,简单分析其中的重要函数。 3. 在fork.c适当位置添加代码,以验证fork函数的工作原理。 二、Linux进程管理机制分析 Linux有两类进程:一类是普通用户进程,一类是系统进程,它既可以在用户空间运行,又可以通过系统调用进入内核空间,并在内核空间运行;另一类叫做内核进程,这种进程只能在内核空间运行。在以i386为平台的Linux系统中,进程由进程控制块,系统堆栈,用户堆栈,程序代码及数据段组成。Linux系统中的每一个用户进程有两个堆栈:一个叫做用户堆栈,它是进程运行在用户空间时使用的堆栈;另一个叫做系统堆栈,它是用户进程运行在系统空间时使用的堆栈。 1.Linux进程的状态: Linux进程用进程控制块的state域记录了进程的当前状态,一个Linux 进程在它的生存期中,可以有下面6种状态。 1.就绪状态(TASK_RUNNING):在此状态下,进程已挂入就绪队列,进入准备运行状态。 2.运行状态(TASK_RUNNING):当进程正在运行时,它的state域中的值不改变。但是Linux会用一个专门指针(current)指向当前运行的

任务。 3.可中断等待状态(TASK_INTERRUPTIBLE):进程由于未获得它所申请的资源而处在等待状态。不管是资源有效或者中断唤醒信号都能使等待的进程脱离等待而进入就绪状态。即”浅睡眠状态”。 4.不可中断等待状态(TASK_UNINTERRUPTIBLE):这个等待状态与上面等待状态的区别在于只有当它申请的资源有效时才能被唤醒,而其它信号不能。即“深睡眠状态”。 5.停止状态(TASK_STOPPED):当进程收到一个SIGSTOP信号后就由运行状态进入停止状态,当收到一个SINCONT信号时,又会恢复运行状态。挂起状态。 6.终止状态(TASK_ZOMBIE):进程因某种原因终止运行,但进程控制块尚未注销。即“僵死状态”。 状态图如下所示: 2.Linux进程控制块:

实验三-进程管理

实验三进程管理 一、实验目的 1.熟悉和理解进程和进程树的概念,掌握有关进程的管理机制 2.通过进程的创建、撤销和运行加深对进程并发执行的理解 3.明确进程与程序、并行与串行执行的区别 4.掌握用C 程序实现进程控制的方法 二、实验学时 2学时 三、实验背景知识 所涉及的系统调用 1、exec( )系列(exec替换进程映像) 系统调用exec( )系列,也可用于新程序的运行。fork( )只是将父进程的用户级上下文拷贝到新进程中,而exec( )系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。exec( )系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果exec( )调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id 与调用进程相同。 exec( )没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。所以exec( )调用成功后,没有任何数据返回,这与fork( )不同。exec( )系列系统调用在UNIX系统库unistd.h中,共有execl、execlp、execle、execv、execvp五个,其基本功能相同,只是以不同的方式来给出参数。 #include int execl(const cha r *pathname, const char *arg, …); int execlp(const char *, const char *arg, …); int execle(const char *pathname, const char *arg, …, const char *envp[ ]); int execv(const char *pathname, char *const argv[ ]); int execvp(const char *, char *const argv[ ]); 参数: path参数表示你要启动程序的名称包括路径名。 arg参数表示启动程序所带的参数,一般第一个参数为要执行命令名,不是带路径且arg必须以NULL结束。 返回值:成功返回0,失败返回-1 注:上述exec系列函数底层都是通过execve系统调用实现. 1)带l 的exec函数:execl,execlp,execle,表示后边的参数以可变参数的形式给出且都以一个空指针结束。 #include

linux进程管理篇

目录:(内容较多,加个目录) |-进程管理 进程常用命令 |- w查看当前系统信息 |- ps进程查看命令 |- kill终止进程 |- 一个存放内存中的特殊目录/proc |- 进程的优先级 |- 进程的挂起与恢复 |- 通过top命令查看进程 计划任务 |- 计划任务的重要性 |- 一次性计划at和batch |- 周期性计划crontab 进程管理的概念 进程和程序区别 1.程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。 2.程序和进程无一一对应关系。一个程序可以由多个时程公用;另一一方面,一个进程在活动中有可顺序地执行若干个程序 父子进程的关系 1.子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程 2.在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。 3.父进程终止子进程自然终止。 前台进程和后台进程 前台进程 在shell提示处理打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行别一个命令

很简单,我们在执行这个查找命令时,无法进行其它操作,这个查找就属于前台进程 后台进程 在Shell提示处打入命令,若后随一个&,Shell创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行。“后台进程必须是非交互式的” 再来看这个命令就变成了后台进程,我们用同样的条件进行查找,把查找记过放到hzh/test/init.find这个文件中。不影响我们前台其它的操作。 进程的状态

实验五 Linux进程管理

实验五Linux进程管理一.实验目的: 进行系统进程管理。 二.实验内容: 1.进程状态查看; 2.控制系统中运行的进程; 3.安排一次性和周期性自动执行的后台进程; 三.实验练习: 任务一进程管理 实验内容: 查看系统中的进程;控制系统中的进程;安排计划任务。实验步骤: 1.使用ps命令查看和控制进程 ●显示本用户的进程: ●显示所有用户的进程:。 ●在后台运行cat命令: ●查看进程cat : ●杀死进程cat:。 ●再次查看查看进程cat,看看是否被杀死。 2.使用top命令查看和控制进程 ●用top命令动态显示当前的进程。 ●只显示用户user01的进程(利用u键)。 ●利用k键,杀死指定进程号的进程。 3.挂起和恢复进程 ●执行命令cat。

●按Ctrl+z键,挂起进程cat。 ●输入jobs命令,查看作业。 ●输入bg,把cat切换到后台执行。 ●输入fg,把cat切换到前台执行。 ●按Ctrl+c键,结束进程cat。 4. 熟悉并使用at命令 5.安排计划任务 某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案: (1)在下午4 :50删除/abc目录下的全部子目录和全部文件; (2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中的全部数据加入到/backup目录下的bak01.txt文件内; (3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz; (4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc); (5)在早晨8:00前开机后启动启动www服务器。 ●查看crontab命令的帮助信息: ●查看用户的计划任务列表: ●生成一个crontab的脚本文件: ●按照生成的脚本安排计划任务: ●查看计划任务表,看看计划任务是否已被安排: ●删除计划任务列表,并进行确认。

linux进程管理(一)

进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。 一个运行着的程序,可能有多个进程。比如自学it网所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。 进程分类 进程一般分为交互进程、批处理进程和守护进程三类。 值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在 Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。 [root@localhost ~]# chkconfig --level 35 httpd on 进程的属性: 进程ID(PID):是唯一的数值,用来区分进程; 父进程和父进程的ID(PPID); 启动进程的用户ID(UID)和所归属的组(GID); 进程状态:状态分为运行R、休眠S、僵尸Z; 进程执行的优先级; 进程所连接的终端名; 进程资源占用:比如占用资源大小(内存、CPU占用量); 父进程和子进程: 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。 在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行; 进程管理

实验一 进程管理

实验一进程管理 1. 实验目的 ⑴加深对进程概念的理解,明确进程和程序的区别; ⑵进一步认识并发执行的实质; ⑶分析进程争用资源的现象,学习解决进程互斥的方法; ⑷了解Linux系统中进程通信的基本原理。 2. 实验准备 ⑴阅读Linux的sched.h源码文件,加深对进程管理的理解。 ⑵阅读Linux的fork.h源码文件,分析进程的创建过程。 3. 实验内容 ⑴进程的创建 编写一段程序,使用系统调用fork ( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 ⑵进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf ( )来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 ⑶软中断通信 编制一段程序实现进程的软中断通信。要求:使用系统调用fork ( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上发来的中断信号(既按Del键);当捕捉到中断信号后,父进程系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 在上面的程序中增加语句signal (SIGINT, SIG_IGN) 和signal (SIGQUIT, SIG_IGN),观察执行结果,并分析原因。 4. 实验指导

Linux进程管理-实验报告

(1) 加深对进程概念的理解,明确进程和程序的区别。 (2) 进一步认识并发执行的实质。 (3) 学习通过进程执行新的U 标程序的方法。 (4) 了解Linux 系统中进程信号处理的基本原理。 Red Hat Linux (1)进程的创建 编写一段程序,使用系统调用fork ()创建两个子进程,当此进程运 行时,在系统中有一个父进程和两个子进程活动,让每一个进程在 屏幕上显示一个字符,父进程显示字符“a” ;子进程分别显示字符 “b”和字符“c” ,试观察记录屏幕上的显示结果,并分析原因。 程序代码: # include int main() { int pl ,p2 ; while((p 1 =fork())==-1); if(pl==0) putchar(b); else { while((p2=fork())==-1); if(p2==0) putchar( c 1); else putchar( a r ); } return 0; ) 运行结果:bca 分析:第一个while 里调用fork()函数一次,返回两次。子进程P1 得到的返回值是0,父进程得到的返回值是新子进程的进程ID (正 整数);接下来父进程和子进程P1两个分支运行,判断P1二二0,子 进程P1符合条件,输出%";接下来else 里面的while 里再调用 fork()函数一次,子进程P2得到的返回值是0,父进程得到的返回值 是新子进程的进程ID (正整数);接下来判断P2=:0,子进程P2符 合条件,输出,接下来父进程输出“a” ,程序结束。 (2)进程的控制 ① 修改已编写的程序,将每个进程输出一个字符改为每个进程输出 一 《Linux 实验目的: 实验环境: 实验内容: 操作系统设计实践》实验一:进程管理

linux实验五_进程管理命令

实验五进程管理命令 一、实验目的 (1)了解如何监视系统运行状态 (2)掌握查看、删除进程的正确方法 (3)掌握命令在后台运行的用法 (4)掌握进程手工、调度启动的方法 二、常用命令 w h o 查看当前在线用户 t o p 监视系统状态 p s 查看进程 k i ll 向进程发信号 b g 把进程变成后台运行 &把进程变成后台运行 f g 把后台进程变成前台运行 j o bs 显示处于后台的进程。 a t 在指定的时刻执行指定的命令或命令序列 b a t c h 在系统负载较低、资源较空闲时执行命令或命令序列 以上命令的具体用法请参阅教材、课件和m an手册 三、实验内容 1、用t o p命令察看当前系统的状态,并识别各进程的有关栏目。 2、用p s命令察看系统当前的进程,并把系统当前的进程保存到文件p r oc es s中。 用p s au x>p ro c es s命令写入

3、用p s命令察看系统当前有没有in i t进程。 用p s –a ux|gr ep i n i t查看 4、输入“c at<回车>” 按-z 键,出现什么情况?输入f g命令出现什么情况? 按-z 键转入后台运行,fg把后台命令移回前台 按-c 键,出现什么情况?按-c 键终止命令 5、输入“f in d /-na me l s*>te mp&”,该命令的功能是什么? 查看该进程; 查找所有硬盘中ls开头的文件,并把文件名定向到temp中 输入ki l la ll f in d命令后,再查看该进程。 6、输入“f in d /-na me l s*>te mp&” 输入jo b s命令,出现什么情况? 查看这个shell中放在后台运行的程序或命令 输入f g命令出现什么情况? 调出后台运行的程序放到前台 7、指定上午XX(小时):X X(分钟)执行某命令 在上午10:20分执行m kd i r命令

实验一——Linux环境下的进程管理之欧阳光明创编

软件学院 欧阳光明(2021.03.07) 上机实验报告 课程名称:操作系统 实验项目:实验一:Linux环境下进程管理 实验室:耘慧402 姓名:学号: 专业班级:实验时间:

一、实验目的及要求 1.加深对进程概念的理解,明确进程和程序的区别; 2.进一步认识并发执行的实质; 3.分析进程争用资源的现象,学习解决进程互斥的方法; 4.了解Linux系统中进程通信的基本原理; 二、实验性质 1.进程的创建:编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 2.进程的控制:修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。如果在程序中使用系统调用lockf ()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 3.用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 三、实验学时 实验性质:验证性 实验学时: 4学时 实验要求:必做 四、实验环境 1.实验环境: Linux系统开发环境 2.知识准备: (1) Linux系统开发环境搭建; (2) Linux环境下GCC编译器的使用; (3)语言中函数定义与调用、指针和类型的定义与使用、结构的定义、动态

内存的申请等预备知识。 五、实验内容及步骤 ①实验内容: (1)进程的创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用wait( )来控制进程执行顺序。 ②实验步骤: 1.进程的创建 1.1 进程 UNIX中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。 PCB的数据结构如下: (1)进程表项(Process Table Entry)。包括一些最常用的核心数据: 进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。 (2)U区(U Area)。用于存放进程表项的一些扩充信息。 每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符

最新整理Linux操作系统的进程管理详解

L i n u x操作系统的进程管理详解 L i n u x操作系统中进程的管理是很重要的一部分,下面由学习啦小编为大家整理了L i n u x操作系统的进程管理详解的相关知识,希望对大家有帮助! L i n u x操作系统的进程管理详解 对于L i n u x的进程的管理,是通过进程管理工具实现的,比如p s、k i l l、p g r e p等工具; L i n u x操作系统的进程管理/1、 p s监视进程工具; p s为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用t o p工具; 1.p s的参数说明; p s提供了很多的选项参数,常用的有以下几个; l长格式输出; u按用户名和启动时间的顺序来显示进程; j用任务格式来显示进程; f用树形格式来显示进程; a显示所有用户的所有进程(包括其它用户); x显示无控制终端的进程; r显示运行中的进程;

w w避免详细参数被截断; 我们常用的选项是组合是a u x或l a x,还有参数f 的应用; p s a u x或l a x输出的解释; U S E R进程的属主; P I D进程的I D; P P I D父进程; %C P U进程占用的C P U百分比; %M E M占用内存的百分比; N I进程的N I C E值,数值大,表示较少占用C P U时间; V S Z进程虚拟大小; R S S驻留中页的数量; W C H A N T T Y终端I D S T A T进程状态 D U n i n t e r r u p t i b l e s l e e p(u s u a l l y I O) R正在运行可中在队列中可过行的; S处于休眠状态; T停止或被追踪;

实验报告5Linux进程管理

实验五 Linux进程管理 四、实验过程(实验步骤、记录、数据、分析、结果)(一)进程查看、终止、挂起及暂停等操作 1、使用ps命令查看和控制进程 1)显示本用户进程 #ps 2)显示所有用户的进程 #ps–au 3)在后台运行cat命令 #cat& 4)查看进程cat #ps aux |grep cat

5)杀死进程cat #kill -9 cat 6)再次查看进程cat,看看是否被杀死。 2、使用top命令查看和控制进程 1)用top命令动态显示当前的进程。

2)只显示某一用户的进程(u) 3)杀死指定进程号的进程(k) 3、挂起和恢复进程 1)执行命令cat 2)按【ctrl+z】挂起进程 3)输入jobs命令,查看作业 4)输入bg,把cat切换到后台执行5)输入fg,把cat切换到前台执行6)按【ctrl+c】结束进程

(二)通过at命令实现计划任务 1、5分钟后执行/bin/date #at now+5minutes at>/bin/date at>(提示:输入【ctrl+d】 job任务号at 年-月-日小时:分钟 如何查看结果? 使用atq可以查询到已添加的at计划任务 2、查找系统中任何以c为后缀名的文档,将结果保存到$HOME/findc文件中,指定时间为2016年12月01日早上8点 #at 8am 12/01/16 at>find / -name ‘*.c’>$HOME/findc at> job任务号at 年-月-日小时:分钟 如何查看结果? 使用atq可以查询到已添加的at计划任务 3、2题的命令写到$HOME/findjob中,使用at命令执行,并将结果保存到 $HOME/findfc文件中,指定时间为当前时间后5分钟 #vi $HOME/findjob 内容如下: find / -name ‘*.c’>$HOME/findfc 存盘退出

实验五 Linux进程管理

实验五Linux进程管理一.实验目的: 1.进行系统进程管理。 2.周期性任务安排 二.实验内容: 1.进程状态查看; 2.控制系统中运行的进程; 3.安排一次性和周期性自动执行的后台进程; 三.实验练习: 任务一进程管理 实验内容: 1、查看系统中的进程; 2、控制系统中的进程; 3、安排计划任务。 实验步骤: 1.使用ps命令查看和控制进程 显示本用户的进程: 显示所有用户的进程:。 在后台运行cat命令:

查看进程cat : 杀死进程cat:。 再次查看进程cat,看看是否被杀死。 注:ps命令包括较丰富的可选参数,常见的可选参数包括如下几个。 -A:显示所有用户启动的进程。 -a:显示所有其他用户的进程。 -u::显示进程拥有者、进程启动时间等更详细的信息。 -x:显示不是终端提供的进程信息。 -r:只显示正在运行的进程。 -m:显示线程信息。 -w:宽行显示进程信息。 -l:用长格式显示进程信息。 -t::只显示由终端/dev/tty提交的信息。 2.使用top命令查看和控制进程 用top命令动态显示当前的进程。 只显示用户user01的进程(利用u键)。 利用k键,杀死指定进程号的进程。 top参数: -b 以批量模式运行,但不能接受命令行输入;

-c 显示命令行,而不仅仅是命令名; -d N 显示两次刷新时间的间隔,比如-d 5,表示两次刷新间隔为5秒; -i 禁止显示空闲进程或僵尸进程; -n NUM 显示更新次数,然后退出。比如-n 5,表示top更新5次数据就退出;-p PID 仅监视指定进程的ID;PID是一个数值; -q 不经任何延时就刷新; -s 安全模式运行,禁用一些效互指令; -S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程; 交互式命令键位: space 立即更新; c 切换到命令名显示,或显示整个命令(包括参数); f,F 增加显示字段,或删除显示字段; h, 显示有关安全模式及累积模式的帮助信息; k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15) i 禁止空闲进程和僵尸进程; l 切换到显法负载平均值和正常运行的时间等信息; m 切换到内存信息,并以内存占用大小排序; n 提示显示的进程数,比如输入3,就在整屏上显示3个进程;

实验报告三进程管理及进程通信

实验三进程管理及进程通信 实验环境: Linux操作系统 实验目的: (1)利用Linux提供的系统调用设计程序,加深对进程概念的理解。 (2)体会系统进程调度的方法和效果。 (3)了解进程之间的通信方式以及各种通信方式的使用。 实验方法: 用vi 编写c 程序(假定程序文件名为prog1.c)编 译程序 $ gcc -o prog1.o prog1.c 或 $ cc -o prog1.o prog1.c 运行 $./prog1.o 实验内容及步骤: 实验1 编写程序。显示进程的有关标识(进程标识、组标识、用户标识等)。经过5 秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作。 编程截图:

运行结果: 实验2 参考例程1,编写程序。实现父进程创建一个子进程。体会子进程与父进程分 别获得不同返回值,进而执行不同的程序段的方法。 例程1:利用fork()创建子进程 /* 用fork()系统调用创建子进程的例子*/ main() { int i; if (fork()) /*父进程执行的程序段*/ i=wait(); /* 等待子进程结束*/{ printf("It is parent process.\n"); printf("The child process,ID number %d, is finished.\n",i); } else{

Printf(“It is child process.\n”); Sleep(10); Exit(); } } 运行结果: 思考: 子进程是如何产生的?又是如何结束的?子进程被创建后它的运行环境是怎样建立的? 答:是由父进程用fock()函数创建形成的,通过exit()函数自我结束,子进程被创建后核心 将其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件。 实验3 参考例程2,编写程序。父进程通过循环语句创建若干子进程。探讨进程的家族树 以及子进程继承父进程的资源的关系。 例程2:循环调用fork()创建多个子进程。 /*建立进程树*/ #include main() { int i; printf(“My pid is %d, my father’s pid is %d\n”,getpid() ,getppid()); for(i=0; i<3; i++) if(fork()==0) printf(“%d pid=%d ppid=%d\n”, i,getpid(),getppid()); else { j=wait(0); Printf(“%d:The chile %d is finished.\n”,getpid(),j);

实验三《进程管理》

实验三进程间的通信 (一)信号机制实验 一.参考程序 #include #include #include Void waiting(),stop(); Intwait_mark; Main() { Int P1,P2,stdout; While((P1=fork())==-1); /*创建子进程P1*/ If(P1>0) { While((p2=fork())==-1); /*创建子进程P2*/ If(P2>0) { Wait_mark=1; Signal(SIGINT,stop); /*接收到^C信号,转stop*/ Waiting(); Kill(P1,16); /*向P1发软中断信号16*/ Kill(P2,17); /*向P2发软中断信号17*/ Wait(0); /*同步*/ Wait(0); Printf(“Parent process is killed!\n”); Exit(0); } Else { Wait_mark=1; Signal(17,stop); /*接收到软中断信号17,转stop*/ Waiting(); Lockf(stdout,1,0); Printf(“Child process 2 is killed by parent!\n); Lockf(stdout,0,0); Exit(0); }

} Else { Wait_mark=1; Signal(16,stop); /*接收到软中断信号16,转stop*/ Waiting(); Lockf(stdout,1,0); Printf(“Child process 1 is killed by parent!\n”); Lockf(stdout,0,0); Exit(0); } } Void waiting() { While(wait_mark!=0); } Void stop() { Wait_mark=0; } 二.思考: 1.该程序段前面部分用了两个wait(0),他们起什么作用? 解:用了两个wait(0)的作用是同时使两个子进程P1和P2发出软中断信号,而不用等待。 2.该程序段中每个进程退出时都用了语句exit(0),为什么? 解:用exit(0)的作用是使子进程实现自我终止,正常退出此次操作,返回操作系统。 3.为何预期的结果并未显示出来? 解:因为只执行成功两个子进程,但是并没有调用两个子进程P1,P2。当signal()让父进程捕捉从键盘上来的信号(按下^C或者break键时),只有捕捉到信号后,父进程用系统调用kill()向两个子进程发出信号。当子进程捕捉到信号后才能输出信息,之后父进程输出信息。 4.程序该如何修改才能得到正确结果? 5.不修改程序如何得到期望的输出?

实验5-进程管理和文件系统管理

实验5 进程管理和文件系统管理 1. 实验目的 1) 熟悉Linux进程和文件系统的概念 2) 掌握Linux进程管理的操作 3) 掌握Linux文件系统管理的操作 2. 实验环境 装有Linux系统的PC机一台 3. 实验内容 1) 启动登录Linux系统 2) 在X Window交互界面执行Linux进程管理命令: ①进程查看命令:ps(选项aux、lax) ②结束进程命令: Kill(后面跟的是进程ID号) Killall(后面跟的是进程名) ③前后台进程命令: 如何启动后台进程(在命令最后面加“&”) cron(了解两类crontab文件,如何通过crontab命令来管理用户crontab文件,crontab文件的格式)前台切换到后台命令:ctrl-z 查看后台进程命令:jobs 把后台进程调度到前台命令:fg 让进程在后台运行命令:bg

④调整进程优先级命令: 理解进程的优先级 nice(选项n) renice 3) 执行Linux文件系统管理命令: ①分区命令fdisk ②格式化(即创建文件系统)命令:mkfs(选项t) ③挂载文件系统命令mount ④卸载文件系统命令umount ⑤熟悉自动挂载文件/etc/fstab 4) 关闭系统 5) 记录实验步骤 6) 填写《上机登记表》 完成以下内容: 一、进程管理内容 1.用ps命令察看系统当前的进程,并把系统当前的进程保存到文件process中。 2.用ps命令察看系统当前有没有init进程。(注意:只查看init 进程) 3.输入“cat <回车>” 按-z 键,出现什么情况?输入fg命令出现什么情况? 按-c 键,出现什么情ps况? 4. 输入“cat <回车>”,按-z 键,然后用ps命令查看cat 进程是否存在,pid为多少?用kill命令杀死cat进程。

Linux进程管理

八. Linux 的进程管理 (一)Linux 的进程结构 // 在文件 include/linux/task.h 中 #define NR_TASKS 512 //在文件 /kernal/ seched.c中 struct task_struct *task [ NR_TASKS ] = { &init_task }; //在文件 /include/linux / seched.h 中struct task_struct { … } //Linux的PCB内容 Linux的PCB: struct task_struct { …} 结构 [ 见补充材料 p13] (1) 进程状态 (2) 进程调度信息 (3) 进程标识

(4) 内部通信信息 (5) 进程链接指针 (6) 时间和定时器信息 (7) 文件系统信息 (8) 虚拟内存信息 (9) 进程上下文 1.Linux进程状态 long state; 2.进程调度信息: 进程普通进程——优先级调度 实时进程——先来先服务调度FCFS 时间片轮转调度 RR (1) long counter ; 进程剩余时间片 (2) long priority; 优先级(同时还表示进程 时间片)当counter=0时, priority =〉counter

(3) unsigned long policy; SCHED_ OTHER 普通进程 调度策略 SCHED_ FIFO 实时进程 SCHED_ RR 实时进程 (4)unsigned long rt_priority; 实时优先级(调度程序求权重时用到它) 3.标识号 (1) int pid ; //进程标识号 (2) unsigned short uid,euid,suid,fsuid; //用户标识,有效标识,备份标识,文件系统标识 (3) unsigned short gid,egid,sgid,fsgid; //用户组标识,有效组标识,备份组 标识,文件系统用户组标识 4. 内部通信信息 (IPC —— Inter Process Communication)为使在同一任务上协调工作,进程间必须 作通信即:交流数据

Linux进程管理

Linux进程管理Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 操作系统管理多个用户的请求和多个任务。大多数系统都只有一个CPU和一个主存,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户间共享资源,当您提出一个请求时,给您造成一种假象,好象系统只被您独自占用。而实际上操作系统监控着一个等待执行的任务队列,这些任务包括用户作业、操作系统任务、邮件和打印作业等。操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片大约都有零点几秒,虽然看起来很短,但实际上已经足够计算机完成成千上万的指令集。每个任务都会被系统运行一段时间,然后挂起,系统转而处理其他任务;过一段时间以后再回来处理这个任务,直到某个任务完成,从任务队列中去除。 一,进程及作业 Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源。我们所关心的是如何去控制这些进程,让它们能够很好地为用户服务。 进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。 进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。 作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多shell(包括bash和tcsh)的一个特性,使用户能在多个独立作业间进行切换。 例如,当用户编辑一个文本文件,并需要中止编辑做其他事情时,利用作业控制,用户可以让编辑器暂时挂起,返回shell提示符开始做其他的事情。其他事情做完以后,用户可以重新启动挂起的编辑器,返回到刚才中止的地方,就象用户从来没有离开编辑器一样。这只是一个例子,作业控制还有许多其他实际的用途。 二,启动进程 键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号,用于系统识别和调度进程。启动一个进程有两个主要途径∶手工启动和调度启动,后者是事先进行设置,根据用户要求自行启动。 1,手工启动

相关文档
相关文档 最新文档