自学内容网 自学内容网

进程概念三

1,运行状态R

1,理论:

        在cpu中,有一个结构体:runqueue组成的一个双向链表,里面记录着对应的进程的代码和数据,存在内存中随时准备被调度,这种时候就叫做运行状态

2,why?

一个进程只要把自己放到cpu上开始运行了,是不是一直要执行完毕才把自己放下来?

不是!每一个进程都有一个叫做时间片的概念!当一个进程在cpu中跑了一段时间还没跑完,cpu就是让这个进程停止运行把cpu的功能让给下一个进程

在一个时间段内,所有进程代码都会被执行,这个概念叫做并发执行

大量的把进程从cpu上放上去,拿下来的动作叫做进程的切换

2,什么是阻塞状态?

阻塞有很多种可能,这边简单的列举几种

1,当进程需要访问外设时

有c语言基础的应该都知道c语言提供了一个关键字叫做scanf(),这个关键字可以在键盘中输入字符到程序中,这个时候你会发现如果你一直没有给程序输入数据,他的窗口就会一直卡在那里不动,程序也不会继续跑下去,这个时候就是阻塞状态,直到你在键盘中输入数据

2,操作系统内部的内存资源严重不足了

当操作系统内部内存严重不足的时候,会保证操作系统正常的情况下省出来内存空间,方式就有把内存中运行的程序暂时的存在磁盘中,有的直接杀死进程。

3,具体的Linux状态是如何维护的?

在操作系统中,一共有几种常见的状态:

R(running),运行状态

,S(sleeping),睡眠状态

,D(disk sleep),深度睡眠状态

,T(stopped),阻塞状态

,t(tracing stp),阻塞状态

,X(dead),死亡状态

,Z(zombie),僵尸状态

1,S状态

进入睡眠状态指此进程暂时不运行,我们知道cpu是有限的,在程序没进入cpu处理时候的状态叫做S状态,上面还有一个状态叫做D状态也是睡眠状态,他与S状态不同的一点是S状态可以被唤醒,而D状态不可被唤醒,不相信任何的请求。

2,t状态

目前和T的状态差不多不做细讲

3,X状态

死亡状态,一般在子进程退出时或者出问题的时候,子进程会变成死亡状态。

4,Z状态

僵尸状态,进程一般进入死完状态时,不会这么快被操作系统回收,如果父进程没有主动回收僵尸状态的进程,子进程就会一直处于Z状态,进程相关资料尤其是task_strict结构体不能被释放,这就会导致严重的内存泄露。

要是父进程比子进程先退出,子进程的父进程会改成一号进程(操作系统)

而父进程是1的进程叫做孤儿进程

该进程被系统领养

为什么要被领养?因为孤儿进程未来也会退出,也要被释放

4,优先级

优先级是什么?

优先级的对资源的访问,谁先访问,谁后访问

为什么要有优先级?

因为资源是有限的,进程是多个的,进程之间是竞争关系,操作系统必须保证大家良性竞争,确认优先级。

Linux不想过多的参与优先级的调整,在我们对应的范围内进行优先级调整 nice【-20,19】


原文地址:https://blog.csdn.net/pouop/article/details/142820942

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!