操作系统-进程概念与进程控制块

2023-11-10

进程

在学习操作系统时,对于进程我们经常能看到如下几个定义:

  • 一个正在执行的程序。
  • 一个正在计算机上执行的程序实例。
  • 能分配给处理器并由处理器执行的实体
  • 由一组执行的指令,一个当前状态和一组相关的系统资源表征的活动单元。

以上定义都是很抽象的,将进程的概念总结如下。

进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。

所以我们可以把进程看作由一组元素组成的实体,其中两个基本元素时程序代码和与代码相关联的数据集
假设处理器开始执行这个程序代码,我们就把这个实体叫做进程

特点

动态性:可动态的创建进程,结束进程。
并发行:进程可以被独立调度并占有处理机运行。
独立性:不同进程的工作互相不影响
制约性:因访问共享数据/资源或进程间同步而产生制约。

进程与程序

联系

  • 进程是操作系统处于执行状态程序的抽象
    -程序=文件(静态的可执行文件)
    -进程=执行中的程序=程序+执行状态
  • 同一个程序的多次执行过程对应为不同进程
    -例如:多次使用命令ls的执行对应多个进程。
  • 进程执行需要的资源
    -内存:保存代码和数据
    -cpu:执行指令

区别:

  • 进程是动态的,程序是静态的。
    -程序是有序代码的集合
    -进行时程序的执行,进程由和心态/用户态
  • 进程是暂时的,程序是永久的。
    -进程时一个状态变化的过程
    -程序可长久保存
  • 进程与程序的组成不同。
    -进程的组成包括程序,数据,和进程控制块。

简单来说:我们写好的一个代码,要想让它运行起来,首先需要将这个程序加载到内存中,程序一旦运行那么就是一个进程,就需要给进程分配资源建立PCB等动作。说白了,程序只是一个躺在我们硬盘上的文本而已掉电不会没有,但是进程是在动态运行的一个实体,进程执行结束相关信息就会被释放了。

进程控制块

我们的系统当前运行了若干进程,那么操作系统是如何管理这些进程呢?
操作系统对这些进程只做两件事情:“描述”+“组织”。
描述:将进程描述出来,就需要描述出来当前进程的各种信息,我们的操作系统将这些各种信息放在一个结构体中,这个结构体就称为进程控制块
组织:用我们所学过的数据结构的各种各样的数据结构知识将这些结构体组织起来,例如:双链表结构,索引表结构。
索引表:同一状态的进程归入一个索引表,多个状态对应多个不同的索引表。
这里写图片描述
链表:
同一状态的进程其PCB成一链表,多个状态对应多个不同的链表。
这里写图片描述
那么 进程控制块中具体有什么呢?

  • 标识符:与进程相关的唯一标识符,用来区分其他进程。
  • 状态:进程有不同的状态,例如运行,就绪,阻塞等。
  • 优先级:为了给处理机调度提供支持,优先级用来区分各种进程的先后执行顺序
  • 程序计数器:程序中即将执行的下一条指令的地址
  • 内存指针:包括程序代码的进程相关数据的指针,以及与其他进程贡献那个内存块的指针。
  • 上下文:进程是需要切换的,切换进程时需要保留进程的上下文信息,以防进程在切换时丢失现场数据。
  • i/o状态信息:包括显示i/o请求,分配给进程的i/o设备和被进程使用的文件列表等。
  • 记账信息:包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

进程控制块是操作系统为支持多进程并提供多重处理技术的关键。
进程有很多,但cpu只有一个,所有有时进程是需要切换的,PCB的作用可以使进程在恢复后,像从未中断过一样。
所以在许多操作系统书中经常会看到:PCB是进程存在的唯一标志

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

操作系统-进程概念与进程控制块 的相关文章

  • Java课程设计之学习成绩管理系统

    package System import java awt import java awt event import java io import javax swing import javax swing table Abstract
  • MySQL基础(非常全)

    MySQL基础 一 MySQL概述 1 什么是数据库 答 数据的仓库 如 在ATM的示例中我们创建了一个 db 目录 称其为数据库 2 什么是 MySQL Oracle SQLite Access MS SQL Server等 答 他们均是
  • Linux系统的安装(在VM虚拟机上安装CentOS 7)

    工具准备 物理计算机一台 配置要求 操作系统 win10 64位 大家基本上都是 硬盘可用容量 20G以上 内存容量 4G以上 虚拟机安装包 VMware workstation full 12 5 下载链接 点我下载 提取码 9gha C
  • unix环境高级编程——文件IO

    本期主题 unix环境高级编程 文件IO 文件IO 0 引言 1 文件描述符 2 IO编程中常用的API接口 1 open函数 2 close函数 3 read函数 4 write函数 5 lseek函数 3 函数sync fsync和fd
  • VMware-Ubuntu安装bochs

    我的运行环境是VMware的Ubuntu 首先大家可以按照CSDN上的教程按照符合自己需求的虚拟机 我在上午还在VMware和virtualBox之间做选择 但是由于已经安装过了VMware 所以我就直接用了VMware 当然了 一千人眼中
  • Linux网络安全-Zabbix入门(一)

    一 基本概念 1 监控目的 运行情况 提前发现问题 2 监控资源类别 公开 tcp udp 端口 私有 cpu 磁盘 监控一切需要监控的东西 只要能够想到 能够用命令实现的都能用来监控 如果想远程管理服务器就有远程管理卡 比如Dell id
  • ps aux 和ps -aux和 ps -ef的选择

    Linux中的ps命令是Process Status的缩写 ps命令用来列出系统中当前运行的那些进程 ps命令列出的是当前那些进程的快照 就是执行ps命令的那个时刻的那些进程 如果想要动态的显示进程信息 就可以使用top命令 要对进程进行监
  • 设备管理过程

    复杂度2 5 机密度2 5 最后更新2021 04 19 AIX中对设备会有如下五个操作 define aix下能看到设备的定义 但驱动程序并没有加载或初始化 该设备不可用 lsdev看到设备时defined 很多逻辑设备 vg lv等 只
  • gpuz怎么看显存颗粒

    gpuz可以帮助一些用户查看电脑的一切显卡参数 对于想要了解显卡的网友来说使用起来是非常方便的 不过有些网友是刚开始使用 还不知道gpuz怎么看显存颗粒 下面小编就教下大家gpuz查看显存颗粒的方法 首先 显存颗粒是显存的物理存储组成单元
  • 操作系统PV操作及读者写者问题

    操作系统PV操作及读者写者问题 目录 1 信号量 2 P V操作原语可描述为以下式子 3 解释 4 互斥模式原理 5 同步模式原理 6 读者写者问题 1 信号量 PV操作与信号量的处理有关 信号量是表示资源的实体 是一个与队列有关的整型变量
  • InfoQ视频直播分享报名:前贝尔实验室、Oracle架构师为你在线揭秘分布式平台内核...

    报名方式 关注InfoQ微信公众号 ID infoqchina 回复 InfoQ 即可观看在线直播技术分享 分享地点 u0026amp 时间 InfoQ直播微课堂将在熊猫 TV 网站播出 看腻了卖肉的女主播 来看看QCon 的明星讲师如何
  • Linux,Network manager 导致节点异常重启

    推断是Network manager 导致的 原因待查今天在VmWare的虚拟机上装了个测试RAC 又遇到了一个摸不到头绪的问题CRS装好后 一旦登陆图形界面 节点就重启 事情就有这么巧不登陆图形界面 观察了1个小时没问题 一旦登陆后 立刻
  • 程序员的自我修养——链接、装载与库

    1 温故而知新 操作系统概念 北桥 连接高速芯片 系统调用接口 以软件中断的方式提供 如Linux使用0x80号中断作为系统调用接口 多任务系统 进程隔离 设备驱动 直接使用物理内存的弊端 地址空间不隔离 内存使用效率低 程序运行的地址不确
  • 深入ftrace kprobe原理解析

    Linux krpobe调试技术是内核开发者专门为了编译跟踪内核函数执行状态所涉及的一种轻量级内核调试技术 利用kprobe技术 内核开发人员可以在内核的绝大多数指定函数中动态插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程
  • Linux alien命令

    一 简介 alien是一个用于在各种不同的Linux包格式相互转换的工具 其最常见的用法是将 rpm转换成 deb 或者反过来 二 安装 http toutiao com a6188997768449360129 三 实例 http www
  • 使用inet_ntop转换IPv6地址时在macOS和linux上的行为不一样

    下面这段python代码在macOS和linux时运行的结果是不同的 import socket ip socket inet pton socket AF INET6 1 2 3 0 5 6 7 8 print socket inet n
  • Windows驱动开发(一)第一个驱动程序

    首先我们需要了解 在操作系统中 是分两种权限的 一种是内核态 我们也称为0环 一种是用户态 称之为3环 而在我们的电脑中 驱动程序是运行在内核态的 这意味着和操作系统内核是在同一权限的 而普通的应用程序的权限是最低的 高权限谁不想拥有呢 因
  • linux 使用systemctl 启动服务报错: Error: No space left on device

    By default Linux only allocates 8192 watches for inotify which is ridiculously low And when it runs out the error is als
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • 【Linux下MySQL的初始化和配置】

    Linux下MYSQL的初始化和配置 一 初始准备 一 服务初始化 二 启动MYSQL 三 MYSQL登录 二 设置远程登录 一 确认网络 二 关闭防火墙 三 Linux下修改配置 一 初始准备 先去官网把需要的MYSQL版本下载并安装好
  • Spring Bean的生命周期(非常详细)

    Spring作为当前Java最流行 最强大的轻量级框架 受到了程序员的热烈欢迎 准确的了解Spring Bean的生命周期是非常必要的 我们通常使用ApplicationContext作为Spring容器 这里 我们讲的也是 Applica
  • (2021年)is not a supported wheel on this platform解决方案

    今天安装环境时碰到了这个问题 一脸懵逼 经过查阅得知是因为某个 whl文件和python的版本不兼容导致了这个问题 我看了很多人的回答 把别人的成果总结起来发现其实解决这个问题也很简单 但是这里不保证可以适用所有人的环境 造成这个问题的原因
  • java 数据库断连_Java + Tomcat,正在断开数据库连接?

    我有一个tomcat实例设置 但是context xml在一段时间不活动之后 我在其中配置的数据库连接不断消失 当我检查日志时 出现以下错误 com mysql jdbc exceptions jdbc4 CommunicationsExc
  • Java编写的美食网站 美食系统 功能齐全、界面漂亮 下载即可以运行

    8月份由于公司的事情太多 基本上没有更新博客信息 今天稍微空了点 继续为为大家介绍Java web项目 今天要介绍的是一个Java web编写的美食网站 美食系统 美食网站分两类用户 普通用户和系统管理员 普通用户具备的主要功能包括 登陆
  • git clone错误记录

    Unable to negotiate with XXXportXXX no matching host key type found Their offer ssh rsa 修改 ssh config Host PubkeyAccepte
  • 2022 华为杯数模研赛E题原创python代码

    每小问都会有对应的代码 并给出部分处理后的数据 可视化图等 已更新好前三问 注 目前市面上的资料都已经看过了 小p的那个Python代码 个人认为过分想要出的速度快 实际质量不太好 直接参考很难获奖 全程无脑机器学习 这种代码我可以写一筐
  • 成员模板函数

    Member Function Templates 11 04 2016 2 minutes to read Contributors all The term member template refers to both member f
  • 在 K8S 中快速部署 Redis Cluster & Redisinsight

    Redis Cluster 部署 使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster helm repo add bitnami https charts bitnami co
  • RS-485详解(一)

    RS 485是美国电子工业协会 EIA 在1983年批准了一个新的平衡传输标准 balanced transmission standard EIA一开始将RS Recommended Standard 做为标准的前缀 不过后来为了便于识别
  • sqli--labs 进阶篇 23_24关

    第二十三关 基于单引号的过滤字符注入 直接爆点 测试是否报错 从下面的提示信息 可以知道是单引号 id 代码审计 进一步确定自己的推论 源码中 存在过滤掉一些注释语句 id 1 推测结构 参数XX limit 0 1 利用回显确定下自己的推
  • 【Linux 速查手册】基于CentOS的Linux 文件结构以及在搭建LAMP环境

    文章目录 LAMP Linux 主要文件结构 Apache 作为 Web 服务器的文件结构 在Centos 中 home目录和 目录的区别 写在最后 LAMP LAMP是指使用 Linux Apache MySql PHP 搭建而成的网站
  • 2018最有前景的编程语言, 你选对了吗?

    对于程序员来说 世间最可怕的事情 莫过于 刚刚学过的编程语言就已经过时 对于求职者来说 了解受欢迎的编程语言及趋势 无论是对找工作 还是规划将来的职业发展 都有很大的好处 基于各种可信来源的数据统计 我对2018年初IT行业编程语言的状态
  • Debian 10驱动Broadcom 无线网卡

    用lspci命令查询无线网卡品牌 运行下面代码后 重启即可 apt get install linux image uname r sed s linux headers uname r sed s broadcom sta dkms
  • QT处理日志文件

    由于实际生产需要 软件系统的运行 会产生大量的日志文件 有时候一天就能产生超过百万条log记录 那么为了能够处理日志文件 查询并且找到我们想要的报错信息 因此不得不考虑怎么实现 打开大日志文件的可行方法 在这里我采用的是内存映射的方式去读取
  • 深入理解神经网络:使用Python实现简单的前馈神经网络

    在本文中 我们将深入理解前馈神经网络的原理 并使用Python编程实现一个简单的前馈神经网络 我们将使用NumPy库来处理矩阵运算 并将逐步解释神经网络的各个组成部分 包括神经元 激活函数 前向传播 反向传播和梯度下降 最后 我们将以一个简
  • k8s-基础入门

    目录 一 k8s的特性 二 kubernetes的基本组件 1 Pod 最小的资源单位 1 1 Pod的两个分类 2 资源清单 3 Pod 控制器 维护Pod状态 期望值 4 服务发现 Service同一个访问入口 5 存储服务分类 6 调
  • linux rpm软件包管理,linux之rpm软件包管理

    1 RPM包的命名规则 例如 httpd 2 2 15 15 el6 centos 1 i686 rpm httpd 软件包名 2 2 15 软件版本 15 发行次数 e16 centos 适合的linux平台 i686 适合的硬件平台 r
  • Angular之ngModel报错:angular-can‘t-bind-to-‘ngModel‘---

    做双向绑定时 如果遇见Angular Can t bind to ngModel since it isn t a known property of input 问题 这是由于没有在当前组件所属的Module中引用FormModule 注
  • 操作系统-进程概念与进程控制块

    进程 在学习操作系统时 对于进程我们经常能看到如下几个定义 一个正在执行的程序 一个正在计算机上执行的程序实例 能分配给处理器并由处理器执行的实体 由一组执行的指令 一个当前状态和一组相关的系统资源表征的活动单元 以上定义都是很抽象的 将进