进程状态和优先级(进程第2篇)【Linux复习篇】

目录

一、进程状态

1、进程有什么状态?

2、 Linux下的进程状态有什么?

 二、进程优先级

1、进程优先级是什么?

2、为什么要有优先级 

3、怎么改进程优先级?要改吗?

4、操作系统如何根据优先级开展调度的?什么是LinuxO(1)调度算法?

5、什么是并行,什么是并发?

6、为什么函数返回值能被外部拿到?系统怎么知道执行到哪行代码?寄存器扮演什么角色?


一、进程状态

1、进程有什么状态?

1)什么是运行状态 - R

每个CPU都会维护一个运行队列,该队列维护的是一些进程的task_struct,调度器会在该队列上挑选一个进程来运行,处于该运行队列上的进程的状态就叫运行态

每个进程都有一个调度时间片,该进程在CPU上跑完自己的时间片就切换下一个进程,也就意味着,在一个时间段内,所有进程都会被执行,这种情况叫并发执行。

2)什么是阻塞状态

一个进程需要读取某些资源时,由于资源没有就绪,而需要将该进程放到该资源的等待队列里,此时处于等待队列里的进程的状态就是阻塞状态。

3)什么是阻塞挂起状态

操作系统内部内存资源严重不足时,会将那些处于阻塞状态的进程的代码和数据先放到磁盘中,只保留PCB,当资源就绪时,再重新加载进来,此时就叫阻塞挂起状态。

2、 Linux下的进程状态有什么?

R(running):运行态(带+号表示前台运行)

S(sleeping):阻塞态(浅度睡眠,可被唤醒,即可随时响应外部,如kill等)

D(disk sleep):深度睡眠,让进程在等待磁盘写入完毕期间,这个进程不能被杀掉。

T(stopped):也是一种阻塞状态,可能是在等待资源,也可能是收到了信号(应用场景:gdb调试时打断点)

X(dead):终止态

Z(zombie):僵尸态,当一个进程退出时,会先维护它退出状态和资源一段时间,等父进程来回收,回收之后子进程才能释放其相关资源(PCB)。

如果一直维持僵尸状态,就会引发内存泄漏问题。

如果父进程先退出,子进程会怎么样?

子进程变孤儿进程,会被1号进程领养。

 二、进程优先级

1、进程优先级是什么?

进程对资源谁先访问,谁后访问。

2、为什么要有优先级 

资源是有限的,进程是多个的,进程之间是竞争关系,如果进程长时间得不到CPU资源,就会引发进程的饥饿问题。因此操作系统要保证进程之间良性竞争,就需要有优先级。

3、怎么改进程优先级?要改吗?

PRI(priority)就是进程的优先级,值越小,越早被执行。

NI(nice):nice值,进程优先级的修正数据,取值范围(-20~19,共40个等级)。

 

PRI(new) = PRI(old) + nice(nice为负时,优先级变高)实际old的PRI是80

也就是说实际 PRI = 80+nice

具体操作:

输入top进入此界面:

按:r(renice),按照要求输入pid和nice值。

不推荐改进程的优先级。普通用户不能调,root才可以 

4、操作系统如何根据优先级开展调度的?什么是LinuxO(1)调度算法?

正在调度的队列的时间片都跑完后,就跑另一个队列里的进程,两个队列交替。

怎么高效地判断每个子队列是否为空?

利用位图,用比特位的0/1表示子队列是否为空,这样就可以用近O(1)的时间复杂度来进行进程调度,这种调度算法就叫Linux内核2.6的O(1)调度算法。

5、什么是并行,什么是并发?

并行:多个进程在多个CPU下分别同时进行运行(不如说两个单核CPU会有两个运行队列,意味着在同一时刻一定会有两个进程在同时运行,这就是并行)

并发:多个进程在一个CPU上采用进程切换的方式,在一段时间内,让多个进程得以推进,称为并发。 

6、为什么函数返回值能被外部拿到?系统怎么知道执行到哪行代码?寄存器扮演什么角色?

通过寄存器。return a;move eax 10(假设a的值是10) 

程序计数器pc/eip:记录当前进程正在执行的指令的下一行指令的地址。

为了提高效率,将进程的高频数据放入寄存器中,寄存器保存的是进程的相关数据,即进程上下文。进程在从CPU上离开时,要将自己的上下文数据保存好带走,为了未来恢复。

进程切换:保存上下文、恢复上下文。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/570264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用原型学习和特权信息进行可解释的医学图像分类

Interpretable Medical Image Classification Using Prototype Learning and Privileged Information 摘要 .可解释性通常是医学成像的基本要求。需要先进的深度学习方法来满足这种对可解释性和高性能的需求。 本文研究了训练过程中可用的其他信息是否可用于创建易于理解且强…

DS32K查看内置寄存器数值

需要在debug的时候进行查看,先暂停,再打开EmbSys Registers窗口。 需要先将导出的内容选中并双击,不然复制出来会变成问号。右上角有个复制按钮,复制到剪贴板就行。譬如我这里选择了MCR寄存器,复制出来的就是这个寄存器…

Redis入门到通关之Redis数据结构-List篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端…

七分钟“手撕”三大特性<多态>

目录 一、学习多态之前需要的知识储备 二、重写 1.什么是重写 2.重写可以干嘛 3.怎么书写重写 4.重载与重写的区别 三、向上转型 1.什么是向上转型? 2.向上转型的语法 3.向上转型的使用场景 四、多态是什么 六、多态实现 七、多态的好处 八、多态的缺…

程序员过了35岁没人要?“这行越老越香”

程序员35岁失业?参加完OceanBase开发者大会,我又悟了! 周六参加了OceanBase2024 开发者大会的现场,来之前我其实挺忐忑的,我觉得一个数据库产品的发布会,能有什么新鲜的东西? 踏入酒店的那一刻&…

经风靡全球的 PHP 为何逐渐失去优势?

TIOBE 编程语言人气指数发布更新,并提出“PHP 的魔力是否正在消散?”的灵魂拷问。今年 4 月,PHP 在 TIOBE 编程语言指数榜上仅位列第 17,“成为其有史以来的最低排位”。 暴露 PHP 人气急剧下滑的还不只是 TIOBE 榜单。在年度 Sta…

MP4转gif如何操作?一个常见方法分享

MP4是一种视频格式,而gif则是图片格式。当我们需要将MP4格式的时候转成gif格式图片的时候要怎么操作呢?怎样在不下载软件的情况下在线转换格式呢?很简单,通过使用gif图片制作(https://www.gif.cn/)工具-GIF…

Android开发者必备:RootEncoder引领实时流媒体传输革新

Android开发者必备:RootEncoder引领实时流媒体传输革新 I. 引言 A. RootEncoder简介 RootEncoder for Android(rtmp-rtsp-stream-client-java)是一个功能强大的流编码器,旨在通过多种协议(包括RTMP、RTSP、SRT和UDP…

VR全景创业项目应该如何开展?未来有市场吗?

伴随着5G网络的发展,VR全景得到了众多的关注和提升。与此同时,各行各业都开始关注自身产业在互联网的展示效果,因为年轻一代的生活已经离不开互联网,而VR全景在互联网上的3D展示效果能给商家带来流量,提升营业额。 随着…

ERROR: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

今天本来想在A服务器上传文件给B服务器的结果发现明明给root用户设置了密码就是远程登陆不了,后来才发现在容器中很多服务都是没有的,所以刚安装后忘记了修改配置文件,导致远程登陆失败。 报错: 解决方法: 在/etc/ssh…

【电控实物-infantry】

云台电机参数 电机内部参数 相电阻:Rs1.8欧 相电感:Ls5.7810^-3H 转矩常数:Kt 0.741 NM/A 转动惯量:J KG-m^2 电机接收数据:-16384到16384(-3A到3A) 电机反馈:速度RPM rad/s (2πrpm)/60 C板陀螺仪&…

苍穹外卖学习笔记(9.订单状态定时处理,来电提醒,客户催单)

目录 一、订单状态定时处理1、需求分析设计2、代码开发3、测试 二、来单提醒1、需求分析设计2、代码开发3、测试 三、客户催单1、需求分析设计2、代码开发3、测试 四、相关知识1、Spring Task2、WebSocket 一、订单状态定时处理 1、需求分析设计 2、代码开发 创建orderTask类…

初学若依笔记

初学若依 下载ruoyi(以前后端分离板为例) https://ruoyi.vip/ 部署 安装mysql安装redis将数据库和redis配置到若依 配置文件为 ruoyi-admin\src\main\resource\application-druid.yml 运行 略 开发自己的功能 创建模块 为了不影响原有功能,创建一个模块写自…

物联网(iot)深度解析——FMEA软件

物联网即IoT,是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过…

顺序栈算法库构建

学习贺利坚老师,顺序栈,构建顺序栈算法库 数据结构之自建算法库——顺序栈_设计一个主函数实现对顺序栈进行操作测试,测试方法,依次把元素-CSDN博客文章浏览阅读4.9k次,点赞10次,收藏10次。本文针对数据结构基础系列网络课程(2)&…

CRAFT文字检测算法解析和基于C++和TensorRT的推理实现

本文讲解了CVPR 2019的一篇文字检测算法《Character Region Awareness for Text Detection》的原理,并给出我使用C和TensorRT重新实现的推理,速度比原版代码快12倍。 论文:https://arxiv.org/pdf/1904.01941.pdf 官方代码:https:…

自然语言处理 (NLP) 的技术演变史

一、简述 本文的目标是了解自然语言处理 (NLP) 的历史,包括 Transformer 体系结构如何彻底改变该领域并帮助我们创建大型语言模型 (LLM)。 基础模型(如 GPT-4)是最先进的自然语言处理模型,旨在理解、生成人类语言并与之交互。 要理…

IPEmotion轻松解决急停设备的控制与数据存储问题

一 背景 众所周知,急停操作在各种工业领域中都扮演着非常重要的角色。在一个个紧急情况下,及时采取急停操作可节省宝贵时间,避免人身伤害或设备损坏,降低安全风险,尤其是在新能源测试中,出于对高压电性能方…

linux 关闭不了docker服务

[rootiZ2ze7y4akbxb1yjoydztxZ ~]# systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket 在 systemd 系统中,服务和套接字是分开管理的。docker.socket 是一个套接字单元,用于监听 Docker 的 API…

小程序AI智能名片S2B2C商城系统:五大营销技术模块深度剖析

在当今数字化营销的时代,小程序AI智能名片S2B2C商城系统凭借五大核心营销技术模块,为企业提供了强大的私域流量管理与营销能力。下面我们将逐一剖析这五大模块,看它们如何共同助力企业实现精准营销与业务增长。 一、小程序:用户触…