姓名:王央京 学号:18050100052 学院:电子工程学院
转自:https://linux.cn/article-8451-1.html
【嵌牛导读】本文介绍了Linux进程的相关信息
【嵌牛鼻子】Linux进程
【嵌牛提问】在了解Linux系统后,能否具体介绍进程的概念?
【嵌牛正文】
进程实际是某特定应用程序的一个运行实体。在Linux系统中,能够同时运行多个进程,Linux 通过在短的时间间隔内轮流运行这些进程而实现“多任务”。这一短的时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度”,完成调度的程序称为调度程序。在 Linux 中主要有两种类型的进程:前台进程(也称为交互式进程)和后台进程(也称为非交互式/自动进程)。前台进程由终端会话初始化和控制,需要有一个连接到系统中的用户来启动这样的进程,它们不是作为系统功能/服务的一部分自动启动。而后台进程没有连接到终端,它们不需要任何用户输入。
由于 Linux 是一个多用户系统,意味着不同的用户可以在系统上运行各种各样的程序,内核必须唯一标识程序运行的每个实例。程序由它的进程 ID(PID)和它父进程的进程 ID(PPID)识别,因此进程分为父进程和子进程两大类。
当现有的进程在内存中完全拷贝一份自身的时候就会创建出一个新的进程。子进程会有和父进程一样的环境,只有进程 ID 不同。在 Linux 中有两种常规方式创建进程:
1. 使用system()函数,这个方法相对简单,但是比较低效而且具有明显的安全隐患。
2. 使用fork()和exec()函数,这个技巧比较高级但提供更好的灵活性、速度以及安全性。
在执行过程中,取决于它的环境一个进程会从一个状态转变到另一个状态。在 Linux 中,一个进程有下面的可能状态:
1. R运行状态:此时它正在运行(它是系统中的当前进程)或准备运行(它正在等待分配 CPU 单元)。
2. S睡眠状态:在这个状态,进程正在等待某个事件的发生或者系统资源。另外,内核也会区分两种不同类型的等待进程,可中断睡眠进程(可以被信号中断)以及不可中断睡眠进程(正在等待硬件条件,不能被任何事件/信号中断)。
3. T停止状态:可以通过发送SIGSTOP信号给进程来停止(T)进程,这个被暂停的进程可以通过发送SIGCONT信号让进程继续运行。
4. Z僵尸进程:该进程已经死亡,它已经停止了但是进程表中仍然有它的条目。