过程的形态与转换

过程在其生命周期内,因为零碎中各过程之间的互相制约关系及零碎的运转情况的变更,使得过程的形态也在不时地发作变更(一个过程会阅历若干种分歧形态)。平日过程有以下五种形态,前三种是过程的根本形态。
1) 运转形态:过程正在处置机上运转。在单处置机情况下,每一时辰最多只要一个过程处于运转形态。
2) 停当形态:过程已处于预备运转的形态,即过程取得了除处置机以外的一切所需资本,一旦失掉处置机即可运转。
3) 壅塞形态,又称等候形态:过程正在等候某一事情而暂停运转,如等候某资本为可用(不包含处置机)或等候输出/输入完成。即便处置机闲暇,该过程也不克不及运转。
4) 创立形态:过程正在被创立,尚未转到停当形态。创立过程平日需求多个步调:起首请求一个空白的PCB,并向PCB中填写一些掌握和治理过程的信息;然后由零碎为该过程分派运转时所必须的资本;最初把该过程转入到停当形态。
5) 完毕形态:过程正从零碎中消逝,这能够是过程正常完毕或其他缘由中缀加入运转。当过程需求完毕运转时,零碎起首必需置该过程为完毕形态,然后再进一步处置资本释放和收受接管等任务。
留意差别停当形态和等候形态:停当形态是指过程仅短少处置机,只需取得处置机资本就立刻履行;而等候形态是指过程需求其他资本(除了处置机)或等候某一事情。之所以把处置机和其他资本划离开,是由于在分时零碎的工夫片轮起色制中,每一个过程分到的工夫片是若干毫秒。也就是说,过程失掉处置机的工夫很短且十分频仍,过程在运转进程中实践上是频仍地转换到停当形态的;而其他资本(如外设)的运用和分派或许某一事情的发作(如I/O操作的完成)对应的工夫绝对来说很长,过程转换到等候形态的次数也绝对较少。如许来看,停当形态和等候形态是过程生命周期中两个完整分歧的形态,很显然需求加以辨别。
图2-1阐明了五种过程形态的转换,而三种根本形态之间的转换如下:


图2-1  五种过程形态的转换

停当形态 -> 运转形态:处于停当形态的过程被调剂后,取得处置机资本(分配处置机工夫片),于是过程由停当形态转换为运转形态。
运转形态 -> 停当形态:处于运转形态的过程在工夫片用完后,不得不让出处置机,从而过程由运转形态转换为停当形态。此外,在可褫夺的操作零碎中,当有更高优先级的过程就 、 绪时,调剂水平将正履行的过程转换为停当形态,让更高优先级的过程履行。
运转形态 -> 壅塞形态:当过程恳求某一资本(如外设)的运用和分派或等候某一事情的发作(如I/O操作的完成)时,它就从运转形态转换为壅塞形态。过程以零碎挪用的方式恳求操作零碎供给效劳,这是一种特别的、由运转用户态程序挪用操作零碎内核进程的方式。
壅塞形态 -> 停当形态:当过程等候的事情到来时,如I/O操作完毕或中缀完毕时,中缀处置程序必需把响应过程的形态由壅塞形态转换为停当形态。

时间: 2024-10-23 00:25:07

过程的形态与转换的相关文章

过程掌握:过程的创立、终止、壅塞、叫醒和切换

过程掌握的次要功用是对零碎中的一切过程施行无效的治理,它具有创立新过程.撤销已有过程.完成过程形态转换等功用.在操作零碎中,普通把过程掌握用的程序段称为原语,原语的特色是履行时期不许可中缀,它是一个弗成联系的根本单元. 过程的创立 许可一个过程创立另一个过程.此时创立者称为父过程,被创立的过程称为子过程.子过程可以承继父过程所具有的资本.当子过程被撤销时,应将其从父过程那边取得的资本出借给父过程.此外,在撤销父过程时,也必需同时撤销其一切的子过程.在操作零碎中,终端用户登录零碎.功课调剂.零碎供

非专为 Flash所设计的文件系统,需要FTL层转换

Flash Memory 目前分为两种:NOR Flash Memory 及 NAND Flash Memory,尤于 NAND FlashMemory 有较快的 Erase Time.Small Size 及成本较低的特性下,使得 NAND 更适用于Embedded System.Flash Memory 是一储存装置,若要使用此储存装置,亦须要在 FlashMemory 上使用 File System.在一般的 Block Device(e.g. Disk)上使用的 File System,

C++ 移位运算与进制转换 浅析

移位运算包括"逻辑移位"(logical shift)和"算术移位"(arithmetic shift). 逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充. 算术移位:移出去的位丢弃,空缺位(vacant bit)用"符号位"来填充,所以一般用在右移运算中. c++中,整数分有符号数和无符号数两种.对于这两种数做左移.右移运算.稍有差别: 1.假设是无符号数,无论是左移还是右移都是"逻辑移位" .例,对无

(转)搞定DC/DC电源转换方案设计,必看金律十一条

[导读] 搞嵌入式的工程师们往往把单片机.ARM.DSP.FPGA搞的得心应手,而一旦进行系统设计,到了给电源系统供电,虽然也能让其精心设计的程序运行起来,但对于新手来说,有时可能效率低下,往往还有供电电流不足或过大引起这样那样的问题,本文十大金律轻松搞定DCDC电源转换电路设计. 关键词:DC/DC 搞嵌入式的工程师们往往把单片机.ARM.DSP.FPGA搞的得心应手,而一旦进行系统设计,到了给电源系统供电,虽然也能让其精心设计的程序运行起来,但对于新手来说,有时可能效率低下,往往还有供电电流

Dubbo中暴露服务的过程解析

dubbo暴露服务有两种情况,一种是设置了延迟暴露(比如delay="5000"),另外一种是没有设置延迟暴露或者延迟设置为-1(delay="-1"): 设置了延迟暴露,dubbo在Spring实例化bean(initializeBean)的时候会对实现了InitializingBean的类进行回调,回调方法是afterPropertySet(),如果设置了延迟暴露,dubbo在这个方法中进行服务的发布. 没有设置延迟或者延迟为-1,dubbo会在Spring实例

【龙书笔记】编译器简介及程序构建过程综述

备注:本文是近期重新阅读编译器经典教材<Compilers Principles, Techniques, & Tools>一书(又称DragonBook,龙书)的其中一篇读书笔记. 1. 什么是编译器 从本质来看,平时提到的"编程语言"其实都是一些助记符,用于向其他人或机器描述我们想要完成的逻辑运算.这些易于人类理解的语言想要被计算机理解并正确执行,就必须被转换成机器码,而完成这一转换过程的软件系统就是编译器. 简言之,编译器其实也是一个计算机程序,它可以读取用一

过程的组织:掌握块、程序段和数据段

过程是操作零碎的资本分派和自力运转的根本单元.它普通由以下三个局部构成. 过程掌握块 过程创立时,操作零碎就新建一个PCB构造,它之后就常驻内存,任一时辰可以存取, 在过程完毕时删除.PCB是过程实体的一局部,是过程存在的独一标记.当创立一个过程时,零碎为该过程树立一个PCB:当过程履行时,零碎经过其PCB 了 解过程的现行形态信息,以便对其停止掌握和治理:当过程完毕时,零碎发出其PCB,该进 程随之灭亡.操作零碎经过PCB表来治理和掌握过程.表2-1 PCB平日包括的内容 过程描绘信息 过程掌

泛函编程(35)-泛函Stream IO:IO处理过程-IO Process

IO处理可以说是计算机技术的核心.不是吗?使用计算机的目的就是希望它对输入数据进行运算后向我们输出计算结果.所谓Stream IO简单来说就是对一串按序相同类型的输入数据进行处理后输出计算结果.输入数据源可能是一串键盘字符.鼠标位置坐标.文件字符行.数据库纪录等.如何实现泛函模式的Stream IO处理则是泛函编程不可或缺的技术. 首先,我们先看一段较熟悉的IO程序: 1 import java.io._ 2 def linesGt4k(fileName: String): IO[Boolean

C语言入门(十六)预处理过程

预处理过程  前言: 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器对源代码进行处理. 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件.定义宏.根据条件决定编译时是否包含某些代码.要完成这些工作,就需要使用预处理程序.尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的.预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换.预处理过程还会删除程序中的注释和多余的空白字符.