Linux从入门到精通(十)——进程管理 上

简介: Linux从入门到精通(十)——进程管理 上

image.png

进程管理

进程就是运行中的程序,一个运行着的程序,可能有多个进程。 比如 LinuxSir.Org 所用的 WWW 服务器是 apache 服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求 httpd 服务,apache 服务器将会创建有多个 httpd 进程来对其进行服务。

一个程序可以对应多个进程

多个程序可以对应一个进程

一个程序可以对应一个进程

1、 进程分类

进程一般分为交互进程、批处理进程和守护进程三类。

1.交互进程:例如vi

2.批处理进程:编译,编译过程无交互

3.守护进程:启动时运行,计划任务

值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户 root 来启动。比如在 Fedora 或 Redhat 中,我们可以定义 httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d 目录下,文件名是 httpd,/etc/init.d/httpd 就是 httpd 服务器的守护程序,当把它的运行级别设置为 3 和 5 时,当系统启动时,它会跟着启动。

[root@localhost ~]# chkconfig --level 35 httpd on 

由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问

LinuxSir.Org ,LinuxSir.Org 的 httpd 服务器都在运行,等待着用户来访问,也就是等待着任务处理。

2、进程的状态与属性

1.进程 ID(PID):是唯一的数值,用来区分进程;

2.父进程和父进程的 ID(PPID);

3.启动进程的用户 ID(UID)和所归属的组(GID);

4,进程状态:状态分为运行 R、休眠 S、僵尸 Z;

进程的状态:

1.就绪状态和运行状态:

**就绪状态的状态标志state的值为TASK_RUNNING。**此时,程序已被挂入运行队列,处于准备运行状态。一旦获得处理器使用权,即可进入运行状态。

当进程获得处理器而运行时 ,state的值仍然为TASK_RUNNING,并不发生改变;但Linux会把一个专门用来指向当前运行任务的指针current指向它,以表示它是一个正在运行的进程。

2.可中断等待状态:

状态标志state的值为TASK_INTERRUPTIBL。此时,由于进程未获得它所申请的资源而处在等待状态。一旦资源有效或者有唤醒信号,进程会立即结束等待而进入就绪状态。

3.不可中断等待状态:

状态标志state的值为TASK_UNINTERRUPTIBL。此时,进程也处于等待资源状态。一旦资源有效,进程会立即进入就绪状态。

这个等待状态与可中断等待状态的区别在于:处于TASK_UNINTERRUPTIBL状态的进程不能被信号量或者中断所唤醒,只有当它申请的资源有效时才能被唤醒。

这个状态被应用在内核中某些场景中,比如当进程需要对磁盘进行读写,而此刻正在DMA中进行着数据到内存的拷贝,如果这时进程休眠被打断(比如强制退出信号)那么很可能会出现问题,所以这时进程就会处于不可被打断的状态下。

4.停止状态:

**状态标志state的值为TASK_STOPPED。**当进程收到一个SIGSTOP信号后,就由运行状态进入停止状态,当受到一个SIGCONT信号时,又会恢复运行状态。这种状态主要用于程序的调试,又被叫做“暂停状态”、“挂起状态”。

5.中止状态:

状态标志state的值为TASK_DEAD。进程因某种原因而中止运行,进程占有的所有资源将被回收,除了task_struct结构(以及少数资源)以外,并且系统对它不再予以理睬,所以这种状态也叫做“僵死状态”,进程成为僵尸进程。

在进程的整个生命周期中,它可在5种状态之间转换。

Linux进程5种状态之间的转换关系如下图所示:

5.进程执行的优先级;

6.进程所连接的终端名;

7.进程资源占用:比如占用资源大小(内存、CPU 占用量);

3、父进程和子进程

他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如 httpd 服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。

在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行

相关文章
|
2月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
145 2
|
2月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
47 2
|
1月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
191 73
|
8天前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
2月前
|
消息中间件 Linux 开发者
Linux进程间通信秘籍:管道、消息队列、信号量,一文让你彻底解锁!
【8月更文挑战第25天】本文概述了Linux系统中常用的五种进程间通信(IPC)模式:管道、消息队列、信号量、共享内存与套接字。通过示例代码展示了每种模式的应用场景。了解这些IPC机制及其特点有助于开发者根据具体需求选择合适的通信方式,促进多进程间的高效协作。
78 3
|
2月前
|
消息中间件 Linux
Linux进程间通信
Linux进程间通信
36 1
|
2月前
|
C语言
Linux0.11 系统调用进程创建与执行(九)(下)
Linux0.11 系统调用进程创建与执行(九)
26 1
|
2月前
|
存储 Linux 索引
Linux0.11 系统调用进程创建与执行(九)(上)
Linux0.11 系统调用进程创建与执行(九)
48 1
|
2月前
|
域名解析 监控 安全
在Linux中,什么是守护进程,它们是如何工作的?
在Linux中,什么是守护进程,它们是如何工作的?
|
2月前
|
消息中间件 Linux
在Linux中,进程间通信方式有哪些?
在Linux中,进程间通信方式有哪些?
下一篇
无影云桌面