进程管理中的数据结构

2023-10-31

一方面,为了便于对计算机的各类资源(包括硬件和信息)的使用和管理,OS将它们抽象为相应的各种数据结构,以及提供一组对资源进行操作的命令,用户利用这些数据结构和操作命令来执行相关的操作,无需关系具体实现细节

另一方面,操作系统作为计算机资源的管理者,尤其是为了协调诸多用户对系统中共享资源的使用,它还必须记录和查询各类资源的使用及各类进程运行情况的信息,OS对于这些信息的组织和维护也是通过建立和维护各种数据结构的方式来实现的。

1. 操作系统中用于管理控制的数据结构
每个资源和每个进程都设置了一个数据结构,用于表征其实体 —— 资源信息表或进程信息表 —— 包含了资源或进程的标识、描述、状态等信息以及一批指针

通过这些指针,可将同类资源或进程的信息表,或者同一进程所占用的资源信息表分类链接成不同的队列,便于操作系统查找。

OS管理的这些数据结构一般分为以下四类:
内存表、设备表、文件表、进程表(进程控制块PCB)

2.进程控制块PCB的作用
PCB作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。
PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。

具体作用进一步阐述:
1)作为独立运行基本单位的标志
系统是通过PCB感知进程的存在的,PCB已成为进程存在于系统的唯一标识

2)能实现间断性运行方式
进程因阻塞而暂停运行时 —— 必须保留运行时的CPU现场信息

系统将CPU现场信息保存在被中断进程的PCB中,供其再次被调用时恢复

3)提供进程管理所需要的信息

当调度程序调度到某进程运行时,只能根据该进程PCB中记录的程序和数据在内存或外村中的始址指针,找到相应的程序和数据

在进程运行过程中,当需要访问文件系统中的文件或I/O设备时,也需要借助于PCB中的信息

还可根据PCB中的资源清单了解到该进程所需的全部资源等。

4)提供进程调度所需要的信息

PCB中提供了进程处于何种状态的信息

在进行调度时往往还需要了解进程的其他信息 —— 优先级、等待时间、已执行时间

5)实现与其他进程的同步通信

进程同步机制是用于实现诸进程的协调运行的,在采用信号量机制时,它要求在每个进程中都设置有相应的用于同步的信号量。在PCB中还具有用于实现进程通信的区域或通信队列指针。

3. 进程控制块PCB中的信息
1)进程标识符
用于唯一地标识一个进程。一个进程通常有两种标识符:

外部标识符 内部标识符
方便用户(进程)访问 方便系统对进程的使用
由字母、数字组成 唯一的数字标识符,通常是一个进程的序号
创建者提供 操作系统设置

2)处理机状态
主要是由处理机的各种寄存器中的内容组成的。

寄存器类型 作用
通用寄存器 用户程序可访问,用于暂存信息
指令计数器 存放要访问的下一条指令的地址
程序状态字PSW 含有状态信息,如条件码、执行方式、中断屏蔽标志等
用户栈指针 用户进程与之相关的系统栈,存放过程、系统调用参数及调用地址

处理机处于执行状态时,正在处理的许多信息都是放在寄存器中。当进程被切换时,处理机状态信息都必须保存在相应的PCB中,以便在该进程重新执行时能再从断点继续执行。

3)进程调度信息
OS进行调度时 —— 须了解进程状态和有关调度的信息 ——

  1. 进程状态
  2. 进程优先级
  3. 进程调度所需的其他信息 与采用的调度算法有关
  4. 事件 阻塞原因

4)进程控制信息

  1. 程序和数据的地址
  2. 进程同步和通信机制
    实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等(全部或部分存放在PCB)
  3. 资源清单
    除了运行期间所需的全部资源(除CPU)外,还有一张已经分配到该进程的资源的清单
  4. 链接指针
    给出本进程(PCB)所在队列中的下一个进程的PCB的首地址

4. 进程控制块的组织方式

  1. 线性方式
    组织在一张线性表中 —— 实现简单、开销小,每次查找需要扫描整个表 —— 适合进程数目不多的系统

  2. 链接方式
    把同状态进程的PCB分别通过PCB的链接字链接成一个队列
    形成就绪队列、若干个阻塞队列、空白队列
    就绪队列 —— 按优先级排列,高的在前面
    阻塞队列 —— 按阻塞原因的不同,排成多个阻塞队列

  3. 索引方式
    系统根据所有进程状态的不同,建立几张索引表,例如就绪索引表、阻塞索引表等,把各索引表在内存的首地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表的地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程管理中的数据结构 的相关文章

  • window系统消失的c盘,实际占用与显示占用相差好多G

    问题 C盘一直显示的红色提醒 我c盘实际占用的空间只有33 1GB 而我的c盘总共大小是59 9GB 显示的剩余大小是1 35GB 也就是说我占用了58 11 和c盘的总文件大小相差了25GB 那么消失的25GB去了哪里 我百度过这个问题
  • MySQL基础(非常全)

    MySQL基础 一 MySQL概述 1 什么是数据库 答 数据的仓库 如 在ATM的示例中我们创建了一个 db 目录 称其为数据库 2 什么是 MySQL Oracle SQLite Access MS SQL Server等 答 他们均是
  • 文件管理系统(操作系统)——9张思维导图

    文件管理系统 1 文件管理 1 1 一个文件的逻辑结构 比如一个文本txt文件 又或者Excel文件 在我们用户看来 它是长什么样的 这个就是逻辑结构 几个概念 逻辑结构 就是指在用户看来 单个文件内部的数据应该是如何组织起来的 物理结构
  • linux 如何创建卷组

    1 创建一个物理卷 Pvcreate dev sd1 dev sd2 dev sd3 dev sd4 2 用刚才创建的物理卷创建一个卷组 Vgcreate 卷组名 dev sd1 dev sd2 dev sd3 dev sd4 3 创建逻辑
  • unix环境高级编程——文件IO

    本期主题 unix环境高级编程 文件IO 文件IO 0 引言 1 文件描述符 2 IO编程中常用的API接口 1 open函数 2 close函数 3 read函数 4 write函数 5 lseek函数 3 函数sync fsync和fd
  • Linux网络安全-Zabbix入门(一)

    一 基本概念 1 监控目的 运行情况 提前发现问题 2 监控资源类别 公开 tcp udp 端口 私有 cpu 磁盘 监控一切需要监控的东西 只要能够想到 能够用命令实现的都能用来监控 如果想远程管理服务器就有远程管理卡 比如Dell id
  • 操作系统学习(九)进程通信

    一 知识总览 二 定义 进程通信是指进程之间的信息交换 每个进程都拥有自己的内存空间 是相互独立的 这样在每个进程执行时 才不会被其他进程所干扰 三 进程通信的方式 1 共享存储 1 两个进程对共享区的访问必须是互斥的 即在同一时间内 只允
  • pycharm内存不足时如何修改设置?

    Help gt Find Action gt type VM Options gt Click Edit Custom VM Options Pycharm 2016 2 will open the appropriate vmoption
  • Client-Server问题

    1 实验内容与要求 需要创建客户Client和服务器Server两个进程 它们通过管道进行通信 Client进程派生3个生产者线程 一个管道线程 共享一个20个slots的缓冲区 每个生产者线程随机产生一个数据 打印出来自己的id 进程 线
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • InfoQ视频直播分享报名:前贝尔实验室、Oracle架构师为你在线揭秘分布式平台内核...

    报名方式 关注InfoQ微信公众号 ID infoqchina 回复 InfoQ 即可观看在线直播技术分享 分享地点 u0026amp 时间 InfoQ直播微课堂将在熊猫 TV 网站播出 看腻了卖肉的女主播 来看看QCon 的明星讲师如何
  • 操作系统 段页式存储管理

    一 引入 分页系统是以页面作为内存分配的基本单位 能有效地提高内存利用率 但信息共享等不方便 分段系统是以段作为内存分配的基本单位 它能够更好地满足用户多方面的需要 信息共享 动态链接等 但采用分区方式管理物理内存 仍然存在碎片问题 段页式
  • Linux alien命令

    一 简介 alien是一个用于在各种不同的Linux包格式相互转换的工具 其最常见的用法是将 rpm转换成 deb 或者反过来 二 安装 http toutiao com a6188997768449360129 三 实例 http www
  • Windows驱动开发(一)第一个驱动程序

    首先我们需要了解 在操作系统中 是分两种权限的 一种是内核态 我们也称为0环 一种是用户态 称之为3环 而在我们的电脑中 驱动程序是运行在内核态的 这意味着和操作系统内核是在同一权限的 而普通的应用程序的权限是最低的 高权限谁不想拥有呢 因
  • Anaconda 安装 Python 库(MySQLdb)的方法-(转)

    安装python库的过程中 最重要的地方就是版本需要兼容 其中操作系统为64位 Python为2 X 64位 下载安装文件的时候也要注意版本匹配 其中文件名中包含的cp27表示CPython 2 7版本 cp34表示CPython 3 4
  • 《深入理解计算机系统》实验四Architecture Lab

    前言 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻请看 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻 我觉得这个文档对整个实验很有帮助 如果你的Y86 64环境还没安装好可以看
  • OS——文件管理系统磁盘的结构之搞清盘面和柱面

    如上图 每个柱面有三个盘面 即就是3个磁道 柱面可以抽象的理解成是一个套一个的立体的同心圆柱体 例 2019年408真题 磁盘有300个柱面 每个柱面有10个磁道 每个磁道有200个扇区 扇区大小为512B 则磁盘容量 分析 每个柱面有10
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • 使用ShellJS提升你的开发效率(一)

    Shelljs Unix shell commands for Node js Shelljs是Node js下的脚本语言解析器 具有丰富且强大的底层操作 Windows Linux OS X 权限 Shelljs本质就是基于node的一层

随机推荐

  • Spring Boot项目中的静态资源位置详解

    一 默认提供的静态资源位置 在使用IntelliJ IDEA中的Spring Boot初始化工具创建的Spring Boot项目中 默认存在resources static目录用于存放静态资源 而在Spring Boot项目中 默认一共有5
  • 如何使用Java进行集成测试?

    在Java中进行集成测试有很多种方法 以下介绍一种比较常见的基于JUnit框架的集成测试方法 确定需要测试的代码 首先需要确定需要进行集成测试的代码 可以是整个应用程序 也可以是特定的模块或者方法 配置测试环境 在测试环境中创建测试数据库
  • CSS实现全局的自适应

    放置全屏地图时遇到的问题 解决方案如下 方法一 css view plain copy map height 100 width 100 position absolute top 0px bottom 0px background 00F
  • war包发布tomcat出错

    tomcat 错误 严重 Error listenerStart 网上说有很多种可能的原因 我的是因为缺少了spring core jar 但我的pom xml里确实是有的 而且在eclipse里是可以跑的程序 打成war后这个包就没了 原
  • Ethereum学习之路 —— 状态树

    状态树 要设计一种什么数据结构呢 要完成账户地址到账户状态的映射 以太坊的账户地址是160位的 也就是20个字节 一般表示成40个16进制的数 状态时指外部账户和合约账户的balance nonce等 MPT 了解MPT之前 先了解下tri
  • 如何从About:Config中列出,过滤,添加,删除更改Firefox设置

    Firefox provides settings and configuration windows in a user friendly way But as a browser it provides a lot of configu
  • Github怎么上传到代码到仓库

    Github是一个非常受欢迎的代码托管平台 使用Git作为版本控制系统 它允许开发者将自己的代码存储在远程仓库中 以便于团队协作 项目管理和版本控制 本教程将详细介绍如何将代码上传到Github仓库 准备工作 注册并登录Github账户 访
  • 双目立体视觉-特征检测与特征匹配总结

    特征检测 opencv可以检测图像的主要特征 然后提取这些特征 使其成为图像描述符 特征 特征就是有意义的图像区域 该区域具有独特性或易于识别性 角点与高密度区域是一个很好的特征 边缘可以将图像分为两个区域 因此可以看作很好的特征 斑点 与
  • STM32F103C8T6+ESP-01S+MQTT服务器实现数据上传和接收(二)

    MQTT自定义库函数的实际应用 前言 串口配置 初始化 printf输出重定向 串口中断函数 对串口接收到的数据进行处理 baseAck 获取MQTT主题内容get mqttval msg handle 总结 文章目录 STM32F103C
  • 一个正整数表示为n(n>=2)个连续正整数之和!

    今天下午无意中看到这个题目 题目描述 一个正整数有可能可以被表示为n n gt 2 个连续正整数之和 如 15 1 2 3 4 5 15 4 5 6 15 7 8 请编写程序 根据输入的任何一个正整数 找出符合这种要求的所有连续正整数序列
  • Python入门详细攻略(初学者一定要看的),一文讲清,赶紧收藏

    目前python可以说是一门非常火爆的编程语言 应用范围也非常的广泛 工资也挺高 未来发展也极好 Python究竟应该怎么学呢 我自己最初也是从零基础开始学习Python的 给大家分享Python的学习思路和方法 一味的买书看书 看视频 是
  • 前端炫酷特效合集

    我们经常在抖音上看到一些前端很酷的特效 诸如 快叫你学编程的朋友给你写一个圣诞树 看着是不是很酷炫呢 其实只要有源码 你也可以拥有哦 跟大家分享多款前端特效源码 需要的朋友可以去在这里资源站 源码 专栏进行预览下载 还可以在线演示哦 以后还
  • 运动控制的轴到底是什么

    先介绍几个名词 硬件资源 数字量输出资源 do 包括伺服使能数字量输出 伺服报警清除数字量输出 通用数字量输出 数字量输入资源 di 正限位数字量输入 负限位数字量输入 驱动报警数字量输入 原点 信号数字量输入 通用数字量输入 编码器计数资
  • 暑假超越计划练习题(2)

    笔者开头感想 现如今 暑假已经过大半部分 但是随着时间流逝 笔者的C语言仍没有多大的起色 日新月急 但是没有办法 思前想后 笔者决定对于之前所学的内容进行一下回顾复习 因此刷题是必须的 所以笔者将最近做过的习题 将会在此整理一遍 重新整理成
  • Json文件编辑功能

    1 Json格式 JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它基于 ECMAScript European Computer Manufacturers Association 欧洲计算机协
  • Yarn 的安装与使用

    Yarn 是一款 JavaScript 的包管理工具 npm 的代替方案 在 Yarn 的官网有着一句话 Safe stable reproducible projects 正如 Yarn 官网的介绍 Yarn 的具有速度快 安全 可靠 的
  • React package.json配置参数详解

    React package json配置参数详解 一 必须属性 二 描述属性 三 依赖配置 四 脚本配置 五 文件 目录 package json文件想必大家都不陌生 一般的项目根目录下都会有这个文件 文件中定义了项目所需要的各个模块 以及
  • windows电脑生成ios证书的方法

    在uniapp开发进行云打包的时候 打包Ios应用需要p12格式的私钥证书和证书profile文件 无论使用windows电脑 还是mac电脑 生成ios证书 需要苹果开发者账号 假如你还没有苹果开发者账号 你可以参考下文先到苹果开发者中心
  • 业界首个高性能交互式自动标注工具——EISeg正式开源!

    点击左上方蓝字关注我们 在人工智能行业有这么一句话 深度学习有多智能 背后就有多少人工 这句话直接说出了深度学习从业者心中的痛处 毕竟模型的好坏数据占着很大的因素 但是数据的标注成本却让很多从业者感到头疼 在标注中 矩形框标注还相对简单 但
  • 进程管理中的数据结构

    一方面 为了便于对计算机的各类资源 包括硬件和信息 的使用和管理 OS将它们抽象为相应的各种数据结构 以及提供一组对资源进行操作的命令 用户利用这些数据结构和操作命令来执行相关的操作 无需关系具体实现细节 另一方面 操作系统作为计算机资源的