### 前言
在计算机里面,一个进程通常指的是一个运行程序的实例,它包含程序代码和其活动。依赖于具体的操作系统,一个进程启动后通常由若干个线程组成,多个线程可以同时并发的执行程序的指令,进程里面第一个启动的线程,通常称为主线程。
### 进程的类型
#### 前台进程
通常也指交互进程,这些进程一般都是通过linux终端会话创建的,换句话说必须有用户连接到系统上,然后开启一个进程,这种进程不会被系统函数或者创建。
#### 后台进程
通常也指非交互进程,不需要连接到终端执行,也不需要用户的输入
### 关于守护进程
守护进程是一种特殊的后台进程,通常由操作系统启动,然后一直保持运行,作为一个永久服务,除非系统关机,否则永远不会死亡。守护进程在linux里面,可以通过init进程控制。
### linux进程的创建
在linux里面,一个新的进程通常由已经存在的进程创建,新的线程一般称为子进程,创建的线程称为父进程,子进程完全拷贝父进程的运行环境,仅仅进程id不一样。
在linux里面有两种创建新的进程的方法:
(1)使用system函数
相对简单,但是不高效其有一定的风险
(2)使用fork和exec函数
相对复杂,相比system函数,提供了更灵活,更快,更安全的创建方式。
### 如何识别进程
因为linux是多用户的操作系统,意味着不同的用户可以运行不同的程序在系统上,每个运行的程序在内核里面必须是唯一的。
这就是process id和parent process id,也称pid和ppid:
父进程指的是在运行期间创建其他进程的进程。
子进程指的是被创建的进程
### 关于init进程
init进程是linux系统里面所有进程的父进程,它是linux系统引导加载的时候执行的第一个程序,它管理所有其他的进程,init进程由内核启动,原则上它没有父进程。此外init进程的pid总是1。
### 进程的状态
NEW:等待被创建的进程
READY:该进程正在等待分配给处理器
RUNNING:正在执行程序指令的进程
WAITTING:进程等待一些事件完成(例如io完成,或者受到signal信号)
TERMINATED:运行结束的进程
特殊的状态Zombie:进程已经死亡,但其仍然在进程表里面,也称僵尸进程。
### 如何查看当前正在运行的进程的状态
(1)ps命令
(2)top命令
(3)htop命令
(4)glances命令
### 终止进程的方式
```
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
```
一般比较熟悉的暴力停止:kill -9 pid。
这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。
危害导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
立即把进程无条件的杀掉
还有比较温和的kill -15:
友好告诉进程退出,进程先保存好数据,再正常退出。
给父进程发送一个 TERM 信号,试图杀死它和它的子进程。
请求彻底终止某项执行操作.它期望接收进程清除自给的状态并退出
其他的如果是在一个前台进程的中:
中断命令:Ctrl-c(SIGINT 2) 发送SIGINT信号给前台进程组中的所有进程,强制终止程序的执行;
挂起命令:Ctrl—z(SIGTSTP 20) 前台进程的挂起
退出命令:Ctrl-d (SIGQUIT 3)一个特殊的二进制值,表示EOF,作用相当于在终端中输入exit后回车;
除了kill指定pid,还可以指定应用程序的名字进行kill:
如:
```
killall firefox
```
### 进程的PCB信息
每个进程都有一个进程控制块,包含有关进程的所有信息。它是一种数据结构,包含以下内容:
(1)进程的状态
(2)进程的id或者父id
(3)cpu寄存器和程序计数器
(4)cpu调度信息,例如一个优先级信息
(5)内存管理信息,例如page表和segment表
(6)账户信息,例如内核cpu时间,账户计数等
(7)io状态信息,设备分配或者打开的文件表等
### 总结
本文主要介绍了Liunx里面关于进程相关的信息,进程是正在运行程序的实例,也是操作系统资源分配的基本单位,线程是cpu调度的基本单位。此外,进程的PCB记录了每个进程详细的描述信息,通过这个数据块,我们可以详细的了解当前进程的执行状态。
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs) 关注公众号的朋友,可以加入我们的:攻城师互助交流群,一起学习!
分享到:
相关推荐
Linux2.6.x 内核进程调度算法为解决实际问题,设计了全新的数据结构和调度算法,但其基本策路仍是以优先级为基础的抢占式调度。2.6 版本的内核调度也是几度变迁,其基本思想是提高实时进程调度相应比和普通进程调度...
- **进程基础**:理解进程的概念、进程的状态(运行、睡眠、停止等)、进程间通信机制等。 - **任务管理工具**:掌握使用top、ps等命令来监控系统资源占用情况,以及如何使用kill命令终止进程。 - **计划任务**:...
本文将详细探讨Linux进程编程的基础知识,包括进程的概念、创建与管理进程、进程间通信以及线程的使用。 首先,我们需要了解什么是进程。在操作系统中,进程是程序的执行实例,它包含了一段内存空间,包括代码、...
### LINUX进程管理实验知识点解析 #### 一、进程与程序的区别 在进行LINUX进程管理实验之前,首先需要...此外,实验还让学生熟悉了LINUX下的进程管理命令和工具,为后续深入学习操作系统和网络编程奠定了坚实的基础。
原创Linux基础知识培训,面向零基础受众,讲解文件系统、用户权限、进程等基础知识,讲解如何使用VMware Workstation安装Linux,以及相应的Linux基础命令与操作,最后总结了Linux的学习方法与推荐书籍。
介绍linux基础知识,主要包括进程管理,文件系统,numa等知识点
总的来说,Linux进程是系统运行的基础,涉及的知识点广泛且深入,包括进程的生命周期管理、内存管理和资源分配、进程间通信、调度策略等。通过阅读提供的PDF文档和相关文本资料,开发者可以进一步深化对Linux内核的...
【进程控制实验】是Linux操作系统课程中的一个重要环节,旨在帮助学生深入理解进程的概念以及进程间的交互。通过实验,学生能够掌握以下关键知识点: 1. **进程的概念与程序的区别**: 进程是操作系统资源分配的...
Linux命令是操作系统的基础组件,用于执行各种操作。常用的Linux命令包括: * cd命令:用于切换工作目录。 * ls命令:用于显示当前工作目录下的文件和子目录。 * rmdir命令:用于删除空目录。 * mkdir命令:用于...
通过学习和实践Linux下的进程管理,我们可以深入理解操作系统如何管理和调度进程,以及父子进程之间的关系。本实验重点在于使用`fork()`系统调用来创建新的进程,并通过`getpid()`获取不同进程的ID来区分它们。 1. ...
##### 2.1 Linux下进程的结构 在Linux环境中,每个进程在内存中主要包含三个部分:“代码段”、“堆栈段”和“数据段”。这三个部分共同构成了进程的核心结构: - **代码段**:存储程序代码数据。若多个进程运行...
本文将围绕 Linux 进程编程基础中的进程同步和进程通信两个重要知识点展开,通过实验练习和代码分析,深入探讨进程的同步和通信机制。 进程同步 进程同步是指在多进程环境中,为了避免进程之间的干扰和数据不一致...
#### 进程基础知识 在Linux系统中,进程是程序运行时的实体,是系统进行资源分配和调度的基本单位。一个程序在被执行时,会由操作系统加载到内存中,并创建一个进程来运行它。进程具有生命周期,从创建到终止,期间...
在i386平台上,Linux采用task_struct结构来表示进程控制块(PCB),这个结构是进程管理的基础。 进程控制块(PCB)是操作系统中用来描述进程状态和环境信息的数据结构,它是进程存在的唯一标志。PCB中包含进程标识...
在“ka.rar”这个压缩包中,包含了关于Linux进程调度、进程管理以及进程同步的相关实验和资料,这些都是理解和操作Linux系统至关重要的知识点。 首先,我们来看“进程调度”。在Linux中,进程调度器负责决定哪个...