2.1 进程(Process)

2.1.1 定义

  • chatGPT版:一个具有独立功能的程序关于某个数据集合的一次运行活动
  • 人话版:程序在并发环境中的执行过程& 进程是程序的一次执行

2.1.2 特征

  • 动态:创建产生,调度执行,撤销消亡
  • 并发:多个进程存在同一内存中运行
  • 独立:独立运行、获得资源、接受调度的基本单位
  • 异步:不可知速度推进,程序执行失去再现性

:配置同步机制,能保证结果可再现


2.1.3 进程与程序

  • 动态和静态
  • 暂存与长存
  • 一个程序可能有多个进程

2.1.4 进程状态

  • 基本状态

    • 运行(Running)[1]当前进程分配到CPU,其程序正在CPU上执行的状态

    • 就绪(Ready)[2]进程已具备运行条件,但因其它进程正占用CPU,暂时不能运行,等待分配CPU的状态

    • 阻塞(Blocked):因等待某种事件的发生(如系统调用、I/O操作、合作进程信号)而暂时不能运行的状态。即使CPU空闲,也无法使用。

  • 基本状态的转换

:阻塞->运行 漏! 就绪->阻塞 漏!

  • 五种状态的转换

  • 挂起状态(Suspend)

    • 定义

    所谓挂起,是使处于基本状态的进程(就绪、运行、阻塞/睡眠)处于静止(非终止)状态,此时系统回收被这些进程占用的内存资源,将其实体复制到外存的进程交换区。挂起不等于撤销,可通过解挂(换入,或称激活,Active)重新分配内存。

    • 挂起原因

    终端用户的请求,父进程请求,负荷调节的需要,操作系统的需要

    • Block Vs Suspend
    1. 对系统资源占用不同:虽然都释放了CPU,但阻塞的进程仍处于内存中,而挂起的进程通过“对换”技术被换出到外存(磁盘)中。
    2. 发生时机不同:阻塞一般在进程等待资源(IO资源、信号量等)时发生;而挂起是由于用户和系统的需要,例如,终端用户需要暂停程序研究其执行情况或对其进行修改、OS为了提高内存利用率需要将暂时不能运行的进程(处于就绪或阻塞队列的进程)调出到磁盘 。
    3. 恢复时机不同:阻塞要在等待的资源得到满足(例如获得了锁)后,才会进入就绪状态,等待被调度而执行;被挂起的进程由将其挂起的对象(如用户、系统)在时机符合时(调试结束、被调度进程选中需要重新执行)将其主动激活。
  • 拓展:进程状态举例

    • UNIX进程状态转换

    • Linux进程状态转换


2.1.5 进程描述

  • 进程映像·

    • 程序
    • 数据集
    • PCB(Process Control Block):描述进程的动态性的数据结构,描述进程当前的状态、本身的特性、对资源的占用及调度信息等,称为进程控制块
    • :用来保存过程调用和相互传送参数的踪迹

  • PCB(进程控制块)介绍

PCB是一个数据结构,一般应包括:

进程名。它是唯一的标志,对应进程的一个标志符(name)或数字(ID)。

特征信息。包括是系统进程还是用户进程,进程实体是否常驻内存等信息。

进程状态信息。表明该进程的执行状态status,是运行状态、就绪状态还是阻塞状态。

调度优先权。表示进程获取CPU 的优先级别priority。

通信信息。comm_info,反映该进程与哪些进程有什么样的通信关系,如等待哪个进程的信号等。

现场保护区。当对应进程由于某种原因放弃使用CPU 时,需要把它的一部分与运行环境有关的信息保存起来,以便在重新获得CPU 后恢复正常运行。通常被保护的信息有程序计数器PC、程序状态字PSW、各工作寄存器的内容等。

资源需求、分配和控制方面的信息,own_resource,如进程所需要或占有的I/O 设备、磁盘空间、数据区等。

进程实体信息。Start_addr,指出该进程的程序和数据的存储情况,在内存或外存的地址、大小等。

族系关系。Process_family,反映父子进程的隶属关系。

其他信息。如文件信息、工作单元等。

  • PCB(进程控制块)作用

    1. 每个进程有唯一的进程控制块
    2. 操作系统根据PCB管理进程
    3. 进程的动态、并发等特征通过PCB表达
    4. PCB是进程存在的唯一标志。创建即建立PCB,终止即消亡PCB
  • 举例:Linux系统PCB设计



  1. 单CPU的系统,处于运行态的进程只能有1

  2. 单CPU的系统,处于就绪态的进程个数由系统决定

[操作系统] - 进程状态&进程描述的更多相关文章

  1. Linux下进程描述(1)—进程控制块

    进程概念介绍 进程是操作系统对运行程序的一种抽象. • 一个正在执行的程序: • 一个正在计算机上执行的程序实例: • 能分配给处理器并由处理器执行的实体: • 一个具有普以下特征的活动单元:一组指令 ...

  2. 进程描述和控制(os 笔记二)

    进程描述和控制 ​ 计算机最初的主要任务之一就是高效的自动化我们的工作,完成用户交付的任务.而这种任务在计算机中的表示就是一个个的进程.从上一篇文章中描述的计算机的发展历史我们能发现,无论是单道批处理 ...

  3. Linux下进程描述(1)—进程控制块【转】

    转自:http://www.cnblogs.com/33debug/p/6705391.html 进程概念介绍 进程是操作系统对运行程序的一种抽象. • 一个正在执行的程序: • 一个正在计算机上执行 ...

  4. python 操作系统和进程

    一. 操作系统介绍 多道程序系统 多道程序设计技术       所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...

  5. 进程描述符(PCB)

    进程描述符(PCB) 概述 CPU作为计算机的核心部件,我们当然希望它能一直工作,充分提高它的使用效率.对于上层软件来说,我们不可能直接去操控CPU(我们没这能力也没必要),因为操作系统是夹在计算机硬 ...

  6. 【windows 操作系统】进程控制块(PCB)

    转载地址:https://blog.csdn.net/qq_38499859/article/details/80057427一.目录文章目录    操作系统3 ----进程控制块(PCB)详解    ...

  7. 【windows 操作系统】进程

    前言 Windows的内部实现也近似于"一切皆文件"的思想,当然,这一切都只在内核里才有,下载一个WinObj这软件就可以看到,Windows上各种设备.分区.虚拟对象都是挂载到根 ...

  8. 进程描述符task_struct

    1.进程状态 volatile long state; int exit_state; state成员的可能取值如下: #define TASK_RUNNING        0 #define TA ...

  9. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】

    Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在include/linux/sched.h文件中. 谈到task_str ...

  10. 进程管理—进程描述符(task_struct)

    http://blog.csdn.net/qq_26768741/article/details/54348586 当把一个程序加载到内存当中,此时,这个时候就有了进程,关于进程,有一个相关的叫做进程 ...

随机推荐

  1. idea安装阿里规范审查插件

    Install from repositories Settings >> Plugins >> Browse repositories... Search plugin by ...

  2. 【帆吖】Java学习零基础21

    数组 1 package array; 2 3 public class Demo1 { 4 public static void main(String[] args) { 5 int[ ] num ...

  3. Asp.Net Core 网站使用TinyMCE实现上传图片

    1.下载TinyMCE https://www.tiny.cloud/get-tiny/self-hosted/ 解压缩后放在网站wwwroot目录 2.下载中文语言包 https://www.tin ...

  4. win10下Word点击链接跳转,提示“由于本机的限制,该操作已取消”

    Word按住Ctrl点击链接进行跳转,提示"由于本机的限制,该操作已取消,请联系管理员" 网上很多,修改注册表 这边要说的是,修改重启word ,还不行的解决方法:点开任务管理器- ...

  5. MQ(创建MQ注意事项)

    创建MQ队列管理器时,需要注意的事项包括以下几点: 1) 队列管理器的日志类型以及日志文件的大小和个数,要根据用户数据量的大小.各个队列上的消息总容量,来计算日志的总容量,以免在系统运行过程中出现日志 ...

  6. Python第四章实验报告

    一.实验项目名称:<零基础学Python>第四章的14道实例和4道实战 二.实验环境:IDLE(Python 3.9 64-bit) 三.实验目的和要求:熟练掌握Python序列的应用 四 ...

  7. arpspoof、driftnet工具使用

    一.arpspoof.driftnet工具安装: 在kali liux中: 安装命令:apt install dsniff      apt install driftnet 二.使用arpspoof ...

  8. Typora编辑区域空白过大问题

    参考博客:https://blog.csdn.net/m0_55485287/article/details/115207178 在哪个文件编辑? 1.找到使用的主题,打开主题文件夹 2.找到对应的c ...

  9. Activiti7开发(一)

    0.前言 开发背景 项目开发设计审批工作流,企业微信的审批不错,但是下拉列表不支持后期添加,所以只能自己实现,通过gitee查找相关工作流的开源项目,参考有 闲鹿(RuoYi+Activiti6) h ...

  10. 声网深度学习时序编码器的资源预测实践丨Dev for Dev 专栏

    本文为「Dev for Dev 专栏」系列内容,作者为声网大后端智能运营算法团队 算法工程师@黄南薰. 随着深度学习技术的发展,编码器的结构在构建神经网络中成为了热门之选,在计算机视觉领域有众多成功案 ...