Linux进程简介

一,进程简介

Linux是⼀个多⽤户多任务的操作系统。
多⽤户指的是多个⼈可以在同⼀时间使⽤我们的计算机。
多任务是Linux可以同时执⾏⼏个任务,可以在未执⾏完⼀个任务时执⾏另⼀个任

务。

进程简单的讲就是运⾏中的程序,linux系统的⼀个重要的特点就是可以同时启动多
个进程,Linux 通过在短的时间间隔内轮流运⾏这些进程⽽实现“多任务”。这⼀短
的时间间隔称为“时间⽚”,让进程轮流运⾏的⽅法称为“进程调度” ,完成调度的
程序称为调度程序。

1)进程概念

进程是计算机中的程序基于某数据集合上的⼀次运⾏的过程,是系统进⾏资源分配
和调度的基本单位是操作系统结构的基础,同时也是线程的容器。
进程与线程的区别:
1.程序是静态的,是⼀些保存在磁盘上的指令的有序集合,没有任何执⾏的概
念。
2.进程是⼀个动态的概念,它是程序执⾏的过程,包括动态的创建,调度和消亡
的整个过程。
3.⼀个程序可以对应多个进程,但1个进程只能对应1个程序
进程与程序的关系:
程序是进程的⼀个组成部分,是进程的执⾏⽂本;进程是程序的执⾏过程。

Linux中查看进程信息的基本命令有ps、top等命令,⼲掉进程可以使⽤kill +进程
id。其中:ps -ef是显示所有进程

也可以使用(ps -ef | grep 进程名)查看特定进程

2)什么是进程ID

在Linux系统中,每个进程都是通过唯⼀的进程ID标识的,它是当前 Linux 系统中

唯⼀的⼀个⾮负整数。

Linux 内核使⽤了⼀个数据类型 pid_t 来存放进程的进程标识符,这个数据类型的
实质是⼀个32位的⽆符号整型数据。进程标识符被顺序编号,通常来说是前⼀个进
程的进程标识符的值加1。进程标识符可以重复使⽤,当⼀个进程被回收之后,过
⼀段时间其标识符⼜可以被再次使⽤。Linux 内核上通常允许使⽤的进程标识符是
0~32767。
⽗进程标识号:当前进程的⽗进程的标识(PPID)。
在Linux中,有⼏个特殊的进程标识符所对应的进程。
进程标识符0:对应的是交换进程(swapper),⽤于执⾏多进程的调⽤。
进程标识符1:对应的是初始化进程(init),在⾃举过程结束时由内核调⽤,
对应的⽂件是/sbin/init,负责 Linux 的启动⼯作,这个进程在系统运⾏过程中
是不会终⽌的,可以说当前操作系统中的所有进程都是这个进程衍⽣⽽来的,
除了 init 进程外其他所有的进程 ID 每次都会改变。
进程标识符2:可能对应⻚守护进程(pagedaemon),⽤于虚拟存储系统的分
⻚操作。
获取进程ID及其他标识的相关函数主要有:
   获取当前进程ID: pid_t getpid(void); //man 2 getpid获取帮助
   获取进程的⽗进程ID : pid_t getppid(void);
   所属头⽂件:#include <unistd.h>

3)进程控制块

Linux 内核由如下⼏部分组成:内存管理、进程管理、设备驱动程序、⽂件系统和
⽹络管理等,如下图所示:
进程控制块(PCB)是系统为了管理进程设置的⼀个专⻔的数据结构,⽤它来记录进
程的外部特征,描述进程的运动变化过程。PCB是存在于内核空间的,是内核管理
进程的专⽤结构系统利⽤PCB来控制 和管理进程,所以PCB是系统感知进程存
在的唯⼀标志。进程与PCB是一 一对应的。
进程控制块包含了内容主要有:
进程的描述信息;  
进程控制信息;  
进程的资源信息 ;
在../include/linux/sched.h中定义了task_struct或在 #include <linux/sched.h >
查看,其中包含了⼀个进程所需的全部信息。其结构体实例在内存中的⼤⼩⼀般在
1KB以上。

4)进程的内存映像

进程的内存映象就是内核在内存中如何存放可以执⾏程序⽂件,主要通过以下两个
步骤:
程序转化为进程⼀般有两个步骤:
1、内核会将程序从磁盘读⼊内存,为程序分配内存空间
2、内核会为进程保存PID以及相应的状态信息(保存在task_struct中),将进程
放在运⾏队列中等待执⾏。程序转变为进程以后就可以被操作系统调度程序执⾏
了。
进程在内存中的结构(虚拟地址空间):
1G的内核地址空间+3G的⽤户地址空间:⽤户空间是每个进程私有的,内核空间是
所有进程共享的。
进程在内存中的结构由代码段,数据段,堆段和栈段四部分组成。
代码段:即⼆进制机器代码,代码段是只读的,可被多个进程共享。
⽐如⼀个进程创建了⼀个⼦进程,⽗⼦进程共享代码段,此外⼦进程还获得⽗进程
数据段、堆、栈的复制。
数据段:存储已经被初始化的变量,包括全局变量和已被初始化的静态变量;
未初化数据段:存储未被初始化的静态变量,也被称为BSS段;
堆:⽤于存放程序运⾏中动态分配的变量;
栈:⽤于函数调⽤,保存函数返回地址、函数参数、函数内部定义的局部变量。
另外⾼地址还存储了命令⾏参数与环境变量。

5)进程的状态

进程状态主要有: 就绪 、运⾏、阻塞
就绪:
进程已经获取到除处理器外的所有资源,等待分配处理器资源,只要分配到处理
器资源就可以运⾏。⼀般就绪进程是会有⼀个就绪进程队列,有系统来调度。
运⾏:
进程正在执⾏。
进程阻塞:
进程因等待某个事件发⽣⽽暂停运⾏。
停⽌ (stop) :
进程已经完成任务。
进程的状态转化:
运⾏----> 就绪 正在运⾏的进程因时间⽚到,转⼊就绪队列等待重新调度。
就绪--->运⾏ 系统进⾏进程调度,拿出就绪队列中的某个进程运⾏。
运⾏----> 等待 正在运⾏的进程因等待某事件发⽣,转⼊等待状态。
等待--->就绪 处于等待状态的进程,因所等待的事件发⽣了,进⼊就绪对队列
让系统调度运⾏。

6)进程的特点

(1)动态性:进程的实质是程序的⼀次执⾏过程,进程是动态产⽣,动态消亡
的。
(2)并发性:任何进程都可以同其他进程⼀起并发执⾏。
(3)独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源的独⽴
单位;
(4)异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃
独⽴的、不可预知的速度向前推进。

7)进程的分类

交互进程也称为终端进程,由⼀个Shell启动的进程,交互进程既可以在前台运
⾏,也可以在后台运⾏。
批处理进程:这种进程和终端没有联系,即执⾏的是批处理⽂件、shell脚本。
监控进程:也称守护进程(daemon)是⼀类在后台运⾏的特殊进程,⽤于执⾏特定
的系统任务。守护进程⼀般在系统启动时开始运⾏,除⾮强⾏终⽌,否则直到系统
关机都保持运⾏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值