【愚公系列】软考高级-架构设计师 015-进程的组成和状态
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
进程是计算机科学中的一个基本概念,特别是在操作系统领域。它是操作系统进行资源分配和调度的基本单位,代表了程序的一次执行过程。简而言之,进程是一个正在执行中的程序的实例。这个概念涵盖了程序代码的执行、所使用的数据、以及程序计数器的当前位置等方面。
进程的主要特点
-
动态性:进程是程序执行的过程,它有创建、执行和终止等生命周期。
-
并发性:多个进程可以在单核或多核处理器上并发执行。
-
独立性:进程是一个独立运行的单位,有自己独立的地址空间。
-
结构性:每个进程都有自己的代码段、数据段和堆栈。
进程与程序的区别
- 程序是一组指令的集合,它是静态的、不变的。
- 进程是程序的执行实例,它是动态的,具有一定的生命周期。
🚀一、进程的组成和状态
🔎1.进程的组成
进程的组成可以大致分为进程控制块(PCB)、程序和数据这三个主要部分。每个部分承担着不同的职责,共同定义了一个进程的全部特性和当前状态。下面是对这三部分的详细解释:
🦋1.1 进程控制块(PCB)
进程控制块(Process Control Block,PCB)是操作系统维护进程信息的关键数据结构。它唯一标识一个进程,并包含了操作系统所需的所有信息,以管理和控制进程。PCB通常包括以下信息:
- 进程标识符(Process ID, PID):唯一标识一个进程。
- 进程状态:如就绪、运行、等待等。
- 程序计数器(Program Counter, PC):指示下一条执行指令的位置。
- CPU寄存器和寄存器组的信息:存储了进程被暂停时的状态,以便恢复运行。
- CPU调度信息:包括进程优先级、调度队列指针等。
- 内存管理信息:如进程的地址空间、页表或段表信息等。
- 会计信息:包括CPU使用时间、实际使用的内存量、进程号等。
- I/O状态信息:包括分配给进程的I/O设备列表、打开文件列表等。
🦋1.2 程序
程序部分描述了进程要执行的任务或指令。它是一系列有序指令的集合,这些指令告诉计算机要执行的操作。程序通常存储在磁盘上,当进程创建时加载到内存中。程序的代码定义了进程的行为,如何处理数据,以及如何与外部系统交互。
🦋1.3 数据
数据部分存放了进程执行时所需的所有数据。这包括但不限于:
- 输入数据:进程执行所需的外部输入。
- 执行过程中产生的临时数据。
- 输出数据:进程处理完成后产生的结果。
数据区域通常包括全局变量、堆栈(用于函数调用、局部变量等)和堆(用于动态内存分配)。
进程的这三个组成部分共同定义了一个完整的执行环境,使得操作系统能够有效地管理和调度各个进程,同时保证了系统资源的合理分配和使用。
🔎2.进程的状态
🦋2.1 三态图
进程的三态模型是描述进程在其生命周期中可能经历的三种基本状态及其转换的简化方式。这三种状态是:就绪(Ready)、运行(Running)、和等待(Waiting)或阻塞(Blocked)。下面是这三种状态及其之间转换的简要说明:
就绪状态(Ready)
- 定义:进程已准备好运行,只等待CPU分配时间片。
- 特点:进程在就绪队列中等待,随时可以被调度执行。
运行状态(Running)
- 定义:进程正在CPU上执行其程序代码。
- 特点:任一时刻,单个CPU上只能有一个进程处于运行状态。
等待/阻塞状态(Waiting/Blocked)
- 定义:进程因等待某一事件(如I/O操作完成、信号量等)而暂停执行。
- 特点:进程不能继续执行,直到其等待的事件发生。
状态转换
- 就绪到运行:当CPU可用时,调度程序(Scheduler)会从就绪队列中选择一个进程并将其状态改为运行状态。
- 运行到就绪:当运行中的进程的时间片用完,但进程仍需继续执行时,它会被放回就绪队列。
- 运行到等待:如果进程需要等待某一事件(如I/O操作),它会从运行状态转换到等待状态。
- 等待到就绪:当进程等待的事件发生(如I/O操作完成),它的状态会从等待变回就绪状态,再次等待CPU的调度。
三态模型图示
这个简化的模型说明了进程在执行过程中状态的变化和转换。在多道程序设计中,进程间的这种状态转换能够使CPU和系统资源得到高效利用。
🦋2.2 五态图
进程的五态模型在传统的三态模型(就绪、运行、等待)基础上增加了两个状态:新建(New)和终止(Terminated)。这个模型更加详细地描述了进程从创建到终止的整个生命周期。以下是五个状态及其之间转换的详细说明:
新建状态(New)
- 定义:进程刚被创建,正在初始化,如分配PID(进程标识符)、分配必要的资源等。
- 转换:初始化完成后,进程进入就绪状态,等待被调度运行。
就绪状态(Ready)
- 定义:进程已准备好运行,等待分配CPU时间片。
- 转换:当调度器选择该进程执行时,它进入运行状态。
运行状态(Running)
- 定义:进程正在CPU上执行。
- 转换:
- 如果进程主动请求I/O操作或等待某事件,它将进入等待状态。
- 如果进程的CPU时间片用尽,它将返回就绪状态。
- 如果进程完成执行或被终止,它将进入终止状态。
等待/阻塞状态(Waiting/Blocked)
- 定义:进程因等待I/O操作完成或其他事件而暂停执行。
- 转换:等待的事件完成后,进程返回就绀状态,再次等待CPU调度。
终止状态(Terminated)
- 定义:进程完成执行或由于某些原因被终止。
- 特点:在此状态下,操作系统将回收分配给进程的所有资源,包括内存、打开的文件等。
解释
- 新建到就绪:当进程被创建并初始化后,它被放入就绪队列等待CPU。
- 就绪到运行:调度程序选择进程执行,进程占用CPU。
- 运行到就绪:当时间片用尽但进程未完成时,它返回就绪状态。
- 运行到等待:进程因I/O操作或等待事件而被阻塞。
- 等待到就绪:阻塞的I/O操作完成或等待的事件发生,进程再次就绪。
- 运行到终止:进程完成或被终止。
五态模型提供了一个更全面的视角来理解进程管理,强调了操作系统如何处理进程的整个生命周期,以及如何在多任务环境中高效利用CPU和系统资源。
🦋2.3 七态图
引入“静止就绪”和“静止阻塞”状态是对进程五态模型的扩展,用于进一步提高系统的资源利用率和管理大量进程。这种扩展主要在于包含了进程的换入(Swapping)和换出(Swapping out)机制,以便在系统负载过高时,将部分进程从内存换出到磁盘上,以释放内存空间给当前需要运行的进程。相应地,当这些被换出的进程需要运行时,系统会将它们从磁盘换入到内存中。这样的策略特别适用于内存资源紧张的情况。
进程的七态模型包括:
- 新建(New):进程刚被创建。
- 就绪(Ready):进程准备好运行,等待被调度。
- 运行(Running):进程正在CPU上执行。
- 等待/阻塞(Waiting/Blocked):进程因等待I/O或其他资源而暂停。
- 终止(Terminated):进程执行完毕或被终止。
扩展状态:
- 静止就绪(Ready Suspended):因为内存不足等原因,处于就绪状态的进程被换出到磁盘上,但是一旦被换回内存,即可立即执行。
- 静止阻塞(Blocked Suspended):处于等待状态的进程被换出到磁盘。即使等待的事件已经发生,除非被换回内存,否则无法继续执行。
状态转换图示与扩展解释
- 新建到就绪:进程创建后,资源分配完成,转入就绪状态。
- 就绪到运行:调度程序选择进程执行。
- 运行到等待/阻塞:进程请求I/O等资源,需等待。
- 等待/阻塞到就绪:等待的事件发生或资源得到满足。
- 运行到终止:进程完成任务或被终止。
- 就绪到静止就绪:当系统内存不足,需要释放内存时,将就绪状态的进程换出到磁盘。
- 等待/阻塞到静止阻塞:同样由于内存紧张,处于等待状态的进程被换出。
- 静止就绀到就绪,静止阻塞到等待/阻塞:当系统内存充足或进程需要运行时,被换出的进程被换回内存,恢复到它们原来的状态。
通过引入静止就绪和静止阻塞状态,操作系统能够更有效地管理有限的内存资源,并提高系统处理大量进程的能力。这种策略特别在多任务和大规模并发环境下表现出其重要性。
多了两种状态:静止就绪和静止阻塞,需要人为的操作才会进入对应状态,活跃就绪即就绪,活跃阻塞即等待。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)