Linux进程初识

1.进程是什么

程序的一个执行实例,正在执行的程序等。担当分配系统资源(cpu时间,内存)的实体。
在这里插入图片描述

2.描述进程-PCB

2.1为什么要描述进程

便于对进程的管理
OS是一款搞管理的软件,它的管理方式是先描述再组织,进程也需要被管理,因此进程也需要被描述起来
在这里插入图片描述

2.2PCB和task_struct

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合,这个数据结构就叫做PCB;

task_struct是linux内核的一种数据结构,它会被装载到内存里并且包含着进程的信息;
在这里插入图片描述

2.3task_struct内容分类

task_struct是用来描述进程的,那么它的里面包括哪些描述内容呢?
在这里插入图片描述

3.查看进程和组织进程

进程的组织方式可以在内核源代码里找到它,所有运行在系统里面的进程都以task_struck链表形式存在Linux内核里

大多数进程信息可以通过ps工具查看,也可以通过/proc系统文件夹查看
1.ps aux
显示所有进程
-a 显示所有终端机下执行的进程,除了阶段作业领导者之外。  
a 显示现行终端机下的所有进程,包括其他用户的进程。  
x  显示所有进程,不以终端机来区分。  
u  以用户为主的格式来显示进程状况。
-j或j  采用工作控制的格式显示进程状况。
2.ps axj
会显示父进程,子进程,还有命令,用来查看进程之间的父子关系.

3.proc系统文件夹查看

4.top命令查看CPU所有命令
在这里插入图片描述

4.通过系统调用获取进程标识符

进程id(PID)
父进程id(PPID)
在这里插入图片描述

5.通过系统调用创建进程——fork

5.1fork初识

1.fork的作用是创建一个新进程
2.fork没有参数
3.fork有两个返回值
4.fork通常用if分流
在这里插入图片描述

5.2进一步了解fork

1.如何理解进程创建
2.fork为什么有两个返回值
3.fork执行顺序和数据复制问题
在这里插入图片描述

6.进程状态

系统中的进程的状态不是唯一的,一个进程可以有几个状态(在Linux内核里面,进程有时候也叫做任务)

6.1查看Linux源代码的工具

source insight4.0
破解版工具和使用方法链接

6.2进程的几种状态解析

我们常见的操作系统书籍讲的理论是具有总结性的,即使用所有的计算机系统,因此在表述上面会与Linux系统有细微差别
在这里插入图片描述
在这里插入图片描述

6.2.1R状态

当进程有IO操作时,处于R状态的时间是很少的,R状态进程不一定在CPU上面跑
在这里插入图片描述
在这里插入图片描述

6.2.2D状态

D状态的进程除非自身拿到数据或者重启服务器,否则是不能被杀掉的
在这里插入图片描述

6.2.3T状态

T状态是可以随时恢复的
在这里插入图片描述

7.僵尸进程(Z状态)

7.1什么是僵尸进程

僵死状态状态是一个比较特殊的状态。当进程退出并且父进程没有读取到子进程退出返回代码时就会产生僵尸进程;
僵尸进程会以终止状态保持在进程列表之中,并且会一直等待父进程读取退出状态代码;
所以,只要子进程退出,父进程还在运行,但父进程没有读取到子进程状态,子进程便进入僵死状态,即子进程变成僵尸进程
在这里插入图片描述

7.2为什么要有僵尸进程

保持进程基本信息,方便父进程读取,获得子进程退出原因;
举个例子:假如有一个人在你面前突发疾病去世了,这时你应该选择立即报警,警察需要调查那个人死亡的原因。
假设我们的父进程是警察,子进程是那个去世的人,于是有:
进程死亡:父进程要进行系统调用,检测进程运行完的时候的情况(1.是否正常运行,2.是否发生了异常,3.发生了什么异常)

7.2僵尸状态的特征

在这里插入图片描述

7.3父进程是如何读取子进程信息的

父进程是通过调用wait/waitpid来获取子进程信息的
在这里插入图片描述

8.孤儿进程

8.1什么是孤儿进程

如果父进程先退出,子进程就被称为孤儿进程
在这里插入图片描述

8.2孤儿进程有什么危害以及解决办法

孤儿进程变成僵尸进程后没有回收,会造成内存泄漏,解决的办法是1号系统进程领养孤儿进程
在这里插入图片描述

9.进程优先级

9.1优先级的基本概念

1.优先级是什么:
CPU分配资源的先后顺序就是指进程的优先级

这里需要注意的是,优先级和权限的问题:
权限:
优先级和权限不能混为一谈,比如我们去火车站买票,有军人专用窗口,不同人不能去排队,这就是权限
即:能不能使用某种“事物”叫做权限

优先级:
在普通窗口,我们的排队顺序决定了我们拿到票的顺序,排在前面的拿票优先级比排在后面的优先级高
即:这种使用“事物”先后的顺序就叫做优先级

2.为什么要有优先级
优先级高的进程有优先执行的权利。配置进程的优先级对多任务环境的linux很有用,可以改善系统性能
还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能

举个例子:你一个人去买票的时候是不需要优先级的,也不用担心效率问题,可以做到十个工作人员盯着你看,“呕吼,又来了个买票的,好幸福”。可是有一万个人,十万个人呢,这时候就需要有秩序的排队买票,即需要优先级。如果还是不加以管理,买票过程就会变得十分混乱。
即:管理对象多的时候,优先级可以提高运行效率

3.怎么呈现优先级
进程优先级,决定了进程优先使用某种资源——CPU,外设,IO等等
在这里插入图片描述

9.2查看系统进程

在这里插入图片描述

9.3理解PRI和NI

9.3.1PRI和NI是什么

PRI:进程优先级,PRI越小进程优先级越高,越快被CPU执行

NI:代表进程的nice值(linux特有的),表示进程可被执行的优先级的修正数值
nice的取值范围是[-20,19]一共40个级别

在Linux下,PRI(new)=PRI(old)+nice,即修改后的进程的优先级=原来的进程优先级数值+nice值
系统默认进程的PRI值是80,因此得到PRI[60,99],假如设置PRI时,超过了极限值,也只能取到极限值

**特别注意:**进程的nice值不是进程的优先级,不能混为一谈,进程的nice值会影响到进程的优先级变化。可以理解为nice值是进程优先级的修正数据

9.3.2如何修改进程优先级

1.通过命令top修改,top->r->PID->nice
2.通过命令renice修改,renice -n (需要修改的nice值) -u -p (进程PID)
在这里插入图片描述

10.进程的一些其他概念介绍

1.竞争性:系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是最具有竞争属性的,为了提高效率完成任务,更合理的竞争相关资源,便具有了优先级

2.独立性:多进程运行,需要独享各种资源,多进程运行期间互不干扰

独享:
这个独享是在某个时间内的独享
我们的进程不是一直占有CPU到进程结束的,而是有时间片的(文章前面有提到过)
比如我又100个进程,每个进程的时间片为10ms,宏观来看1秒钟中内这100个
进程共享CPU;微观来看10ms的时间内每个进程独享资源

互不干扰:
比如我们的各种软件就是互不干扰的,你的VS挂掉了不会影响你的Xshell
这是因为这些程序相对而言都是子进程,只要父进程不挂,就可以再启子进程

3.并行:多个进程在多个CPU下分别,同时进行,这称之为并行

4.并发:多个进程在一个CPU下采用进程切换的方式,在一段时间内,让多个进程都得以推进,称之为并发
沿用上述提到的例子,10ms是很短的,肉眼很难分辨从出来,基于时间片的轮转,多个进程看起来同时在跑,称之为并发

时间片的长短是由调度器动态计算的,因为调度器需要合理的分配资源给进程。
在优先级决定后,时间片是浮动的,进程在时间片内分为,不可被抢占(不可被抢占调度)和可被抢占(可抢占调度)。目前很多都是可抢占调度的,因为有些进程是更加紧迫,需要提前运行的。
时间片的抢占与否由调度器决定,调度器属于OS

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值