当前位置: 首页 > news >正文

进程概念三

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】


http://www.mrgr.cn/news/47356.html

相关文章:

  • 编程题-二分查找
  • 潜力巨大但道路曲折的量子计算
  • qt-C++笔记之自定义继承类初始化时涉及到parents的初始化
  • abap安装cl_json类
  • kubeneters-循序渐进Cilium网络(二)
  • Vue笔记-001-声明式渲染
  • 基于MicroPython的Raspberry Pi Pico按键点灯的设计方案
  • Hunuan-DiT代码阅读
  • 下载huggingface模型到本地
  • CDC和RDC分别适用于哪些场景?
  • 第十九章 基于逻辑回归的信用卡欺诈检测
  • Python数据分析-数据预处理、统计与分析
  • vue3数字滚动插件vue3-count-to
  • 基于SpringBoot+Vue+Uniapp警务辅助人员管理小程序系统的设计与实现
  • 嵌入式面试——FreeRTOS篇(四) 信号量
  • 升序 Asc、降序 Desc 极简理解
  • kali在git外网的代理
  • 【图论】(一)图论理论基础与岛屿问题
  • C#开发基础之使用 Mutex 控制应用程序的单实例启动
  • Linux
  • 【常用的安装破解版指令】MAC安装破解版软件显示文件损坏时
  • 一文掌握Prompt大模型提示词技巧:从战略到战术
  • PolarCTF靶场[web]file、ezphp WP
  • 目标检测:yolov9训练自己的数据集,新手小白也能学会训练模型,一看就会
  • JavaScript进阶--作用域-函数进阶
  • 第二十一章 基于随机森林气温预测