[认识进程]

狭义定义:进程是正在运行的程序的实例

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动

此时你的计算机上运行着很多进程,那么计算机是怎么组织和管理那么多的进程的呢?

概念介绍:

进程控制块(PCB)

进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的特征,描述进程的变化过程。同时,系统可以利用PCB来控制和管理进程

Linux 中的PCB叫做 task_struct,是一个结构体
所有运行在系统里的进程都以 task_struct 的形式存在内核里,并且都通过链表的方式连在一起
使用  ps -aux 显示进程信息:
PID 进程 id,用来唯一标识进程

%CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。

%MEM 该进程占用的物理内存占总内存的百分比

RSS 该进程占用的物理内存的总数量,单位是KB

STAT 该进程的状态

TIME 该进程自启动以来所占用的总 CPU时间
COMMAND 该进程的命令名称
进程的几个状态:
R 运行状态 :    并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里
S 睡眠状态 :   意味着进程在等待事件完成
D 磁盘休眠状态:  有时候也叫不可中断睡眠状态 ,这个状态的进程通常会等待IO 的结束,是一个深度休眠的进程,不可以被杀掉,等待其自动醒来
T 停止状态 : 可以通过发送 SIGSTOP 信号给进程来停止该进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
X 死亡状态 : 这个状态只是一个返回状态,你不会在任务列表里看到这个状态
Z僵尸进程:  子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入 Z 状态
下面我们通过系统调用自己创建进程
fork:
fork系统调用用于创建一个新进程,称为 子进程
fork不需要参数并返回一个整数值:

负值:创建子进程失败

:返回到新创建的子进程

正值:返回父进程或调用者

所以 fork 之后通常要用 if 进行分流

getpid()  getppid()也是系统调用,可以获取进程的进程idPID) 父进程idPPID

一个简单的创建子进程的程序:(注意头文件)

 

孤儿进程:
父进程先退出,子进程就称之为 孤儿进程
孤儿进程被 1 init 进程领养
进程优先级:
cpu 资源分配的先后顺序,就是指进程的优先权( priority
优先权高的进程有优先执行权利
配置进程优先权对多任务环境的 linux 很有用,可以改善系统性能
进程优先级相关概念:
竞争性 : 系统进程数目众多,而 CPU 资源只有少量,甚至 1 个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级
独立性 : 多进程运行,需要独享各种资源,多进程运行期间互不干扰
并行 : 多个进程在多个 CPU 下分别,同时进行运行,这称之为并行
并发 : 多个进程在一个 CPU 下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发
ps -l  查看进程:

 

各列代表的含义:
UID : 代表执行者的身份
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的 nice 值, 表示进程可被执行的优先级的修正数值
PRI 值越小越快被执行,那么加入 nice 值后,将会使得 PRI 变为: PRI(new)=PRI(old)+nice
这样, nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行 。 所以,调整进程优先级,在Linux 下,就是调整进程 nice 值。
nice 其取值范围是 -2019 ,一共 40 个级别
top 命令更改已存在进程的 nice
top
进入 top 后按 “r”–> 输入进程 PID–> 输入 nice
举例:修改31191的nice值为0:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南无故人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值