操作系统——进程

进程定义

  1. 是计算机中已经运行的程序
  2. 是系统进行资源分配和调度的一个独立单位。

进程的特性

  • 独立性:进程在内存中可以独立寻址,每个进程都有一个独立的堆栈空间。
  • 动态性:进程在执行过程中可以申请资源、使用资源、释放资源。
  • 并发性:多个进程可以同时运行在不同的处理器上,它们之间可以协同工作,也可以竞争资源。

进程控制块

进程控制块(Process Control Block, PCB)是操作系统用来管理进程的数据结构,存储了进程的状态、运行历史、资源分配等信息。

重要性:

  • 状态记录:PCB中记录了进程的当前状态,如新建态、就绪态、运行态、阻塞态和结束态。
  • 资源管理:PCB中包含了进程对系统资源的请求和分配情况,包括CPU时间、内存空间、I/O设备等。
  • 通信机制:PCB可能包含进程间通信的相关信息,如信号量、邮箱等。
  • 调度信息:PCB中还可能有进程的调度信息,如优先级、调度策略等。

上下文切换

五状态模型

进程在执行过程中会经历不同的状态转换,主要包括:

  • 新建态:进程刚被创建,尚未准备好运行。
  • 就绪态:进程已准备好运行,等待CPU分配。
  • 运行态:进程正在CPU上执行。
  • 阻塞态:进程因等待资源而暂停执行。
  • 退出态:进程执行完毕,将被移除。

通过上面PCB可知,进程状态转换是通过改变PCB中的相关信息来实现的。

在这里插入图片描述

  1. 新建态(New)

    进程刚被创建,尚未进入就绪队列。

  2. 就绪态(Ready)

    进入就绪队列,等待系统分配处理器资源。

  3. 运行态(Running)

    已获取CPU的资源,其程序正在执行。

    单处理机系统中,只有一个进程或处于执行态。多处理机系统可多个进程同时执行。

  4. 阻塞态(Blocked)

    因等待资源而等待执行,当执行条件达到时(分配到资源)就转化为就绪态。

  5. 退出态(Exit)

    表示进程已完成执行,释放资源后,退出系统。

在某些操作系统中,进程状态可能还包括:

  • 挂起就绪态(Ready Suspended):进程具备运行条件,但目前在外存中,等待对换到内存中执行。
  • 挂起等待态(Blocked Suspended):进程因等待事件而在外存中暂停执行。

状态转换过程

  • 新建态→就绪态:当操作系统完成进程创建的必要操作,且系统资源允许时,进程将转变为就绪态。

  • 就绪态→运行态:当进程获得CPU时间片,且没有其他更高优先级的进程时,进程将开始执行。

  • 运行态→等待态:当进程需要等待资源,如外设传输或人工干预时,它将转变为等待态。

  • 等待态→就绪态:当进程等待的事件发生,如外设传输完成,进程将转变为就绪态。

  • 运行态→退出态:当进程到达自然结束点或发生无法克服的错误时,它将转变为退出态。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OceanBase开发者大会2023届视频及PPT汇总

数据库技术趋势 我眼中的数据库技术 阳振坤OceanBase 首席科学家 观看视频 下载 PDF 未来,中国需要什么样的数据库? 周傲英华东师范大学副校长,CCF 会士 观看视频 下载 PDF 云原生技术趋势解读 Keith ChanCNCF 云原生计算基金会中国区总监 …

批量规范化(batchnormalization)

ˆB 是小批量B的样本均值,σˆ B 是小批量B的样本标准差。应用标准化后,生成的小批量的平均 值为0和单位方差为1。由于单位方差(与其他一些魔法数)是一个主观的选择,因此我们通常包含 拉伸参数(scale&#…

Linux关闭swap分区操作[适用于CDH报警等]

1.查看swap分区挂载路径(没卵用) swapon -s 2.设置配置文件的swap配置 echo “vm.swappiness 0” > /etc/sysctl.conf 3.设置内存中的swap状态。有时候配置文件为0,但集群或服务仍然使用了swap分区,可能原因就是内存没有同步配置 echo “0” > …

【配电网故障定位】基于二进制蝙蝠算法的配电网故障定位 33节点配电系统故障定位【Matlab代码#80】

文章目录 【获取资源请见文章第6节:资源获取】1. 配电网故障定位2. 二进制蝙蝠算法3. 算例展示4. 部分代码展示5. 仿真结果展示6. 资源获取 【获取资源请见文章第6节:资源获取】 1. 配电网故障定位 配电系统故障定位,即在配电网络发生故障的…

微信有关白名单IP

一、商家支付 二、公众号

深入理解与实践“git add”命令的作用

文章目录 **git add命令的作用****git add命令的基本作用****高级用法与注意事项** git add命令的作用 引言: 在Git分布式版本控制系统中,git add命令扮演着至关重要的角色,它是将本地工作区的文件变动整合进版本控制流程的关键步骤。本文旨…

YOLOv9改进策略 | SPPF篇 | 利用RT-DETR的AIFI模块替换SPPFELAN助力小目标检测涨点

一、本文介绍 本文给大家带来是用最新的RT-DETR模型中的AIFI模块来替换YOLOv9中的SPPFELAN。RT-DETR号称是打败YOLO的检测模型,其作为一种基于Transformer的检测方法,相较于传统的基于卷积的检测方法,提供了更为全面和深入的特征理解&#x…

【C++】STL-vector的使用

目录 1、什么是vector? 2、vector的使用 2.1 vector的定义 ​编辑 2.2 遍历修改数据 2.3 迭代器 2.4 vector空间增长问题 2.5 vector的增删查改 3、迭代器失效 3.1 会引起其底层空间改变的操作,都有可能是迭代器失效 3.2 指定位置元素的删除操…

判断完数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int n 0;int i 1;int j 0;int result 1;//提示用户&#xff1b;printf("请输入一个…

【Dubbo】Dubbo简单自定义链路传递traceId

需求 因为服务器内存不足&#xff0c;没有引入链路追踪的框架&#xff0c;项目使用到了Dubbo&#xff0c;所有通过self4j的MDC和Dubbo的RpcContext实现简单的traceId 的多服务模块的传递 解决思路 在第一个模块生成traceId(比如网关模块)&#xff0c;生成traceId&#xff0c…

python文件 成绩分析

‘’文件score.txt中存储了学生的考试信息,内容如下 小明,98 小刚,90 小红,91 小王,98 小刘,80 请写代码,读取文件数据,并进行如下分析 最高分和最低分分别是多少&#xff1f;得最高分的学生有几个&#xff1f; 得最低分的学生有几个平均分是多少&#xff1f; ‘’’ def rea…

【办公类-21-16】 20240410三级育婴师 344多选题(题目与答案合并word)

作品展示 背景需求&#xff1a; 前文将APP题库里的育婴师题目下载到EXCEL&#xff0c;并进行手动整理【办公类-21-14】 20240406三级育婴师 344道多选题 UIBOT下载整理-CSDN博客文章浏览阅读287次&#xff0c;点赞8次&#xff0c;收藏9次。【办公类-21-14】 20240406三级育婴师…