进程

Linux创建进程链、进程扇、进程树 如何创建进程链、进程扇、进程树 阅读详情

一 进程概述

在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。进程的出现更好的描述和控制程序的并发执行,实现操作系统的并发性和共享性(最基本的两个特性)。

为了使得参与并发执行的程序(含数据)能独立地执行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block, PCB)。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段,相关数据段和PCB三部分构成了进程映像(进程实体)。所谓创建进程,实质上是创建进程映像中的PCB;而撤销进程,实质上是撤销进程的PCB。值得注意的是,进程映像是静态的,进程则是动态的。同时,PCB是进程存在的唯一标志!

二 进程的几种常见定义

  1. 进程是程序的一次执行过程。
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
  3. 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源(处理机,存储器和其他设备服务于某个进程的“时间”)分配和调度的一个独立单位。

三 进程的特征

进程是由多道程序的并发执行而引出的,它和程序是两个截然不同的概念。进程的基本特征是对比单个程序的顺序执行而引入,也是对进程管理提出的基本要求。

  1. 动态性。进程是程序的一次执行,他有着创建,活动,暂停,终止等过程,具有一定的生命周期,是动态地产生,变化和消亡的。动态性是进程最基本的特征。
  2. 并发性。指多个进程实体同时存在于内存中,能在一段时间内同时运行。并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。
  3. 独立性。指进程实体是一个能独立进行,独立获得资源和独立接受调度的基本单位。凡未建立PCB的程序,都不能作为一个独立的单位存于运行。
  4. 异步性。由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的,不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。
  5. 结构性。每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是程序段,数据段和进程控制块三部分组成。

四 进程的状态与转换

进程在其生命周期内,由于系统中各进程之间的相互制约关系及系统的运行环境的变化,使得进程的状态也在不断的变化(一个进程经历不同状态)。通常进程分为五种状态,前三种为进程的基本状态。

  1. 运行态:进程正在处理机上运行。在单处理机环境下,每个时刻最多只有一个进程出于运行态。
  2. 就绪态:进程获得处理机外的一切所需资源,一旦得到处理机,便可立即运行。系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,成为就绪队列。
  3. 阻塞态:又称等待态,进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理机空闲,该进程也不能运行。
  4. 创建态:进程正在被创建,尚未转到就绪态。创建进程通常需要多个步骤:首先申请一个空表的PCB,并向PCB中填写一些控制和管理进程的信息;然后由系统为该进程分配运行所必需的资源;最后把该进程转入就绪态。
  5. 结束态:进程正在系统中消失,可能是进程在正常结束或是其他原因中断退出运行。进程需要结束运行时,系统首先必须置该进程为结束态,然后再进一步处理资源释放和回收等工作。

注意:就绪态和阻塞态的区别,就绪态时指进程仅缺少处理机,只要获得处理机资源就立即运行;而等待态时指进程需要其他资源(除处理机)或等待某一件事。

把处理机和其他资源划分开的原因是在分时系统的时间片轮转机制中,每个进程分到的时间片是若干毫秒,即进程得到处理机的时间很短且非常频繁,进程在运行过程中实际上是频繁的转换到就绪态;而其他资源(如外设)的使用和分配或某一事件的发生(如I/O操作的完成)对应的时间相对来说很长,进程转换到等待态的次数相对较少。这样来看,就绪态和等待态是进程生命周期中两个完全不同的状态。

进程不同状态之间的转换:

就绪态->运行态:处于就绪态的进程被调度后,获得处理机资源(分派处理机时间片),于是进程由就绪态转换为运行态。

运行态->就绪态:处于运行态进程的时间片用完后,不得不让出处理机,从而进程由运行态转换为就绪态。此外,在可剥夺的操作系统中,当有更高优先级的进程就绪时,调度程序会将正在运行时的进程转换为就绪态,让更高的优先级的进程执行。

运行态->阻塞态:进程请求某一资源(如外设)的使用和分配或等待某一时间的发生(如I/O操作的完成)时,它就从运行态转换为阻塞态。进程以系统调用的形式请求操作系统提供服务,这是一种特殊的,由运行用户态程序调用操作系统内核过程的形式。

阻塞态->就绪态:进程等待的事件到来时,如I/O操作结束或中断结束时,中断处理程序必须把相应进程的状态由阻塞态转换为就绪态。                    

值得注意的是,一个进程从运行态变成阻塞态是主动的行为,而阻塞态变成就绪态是被动的行为,需要其他相关进程的协助。

进程模拟--创建新的进程:查看进程的信息,换出某个进程,杀死运行进程以及进程之间的通信 #include #include #include struct jincheng_type {        int pid;        int youxian;   int daxiao;   int msg;   int live; }; struct jincheng_type neicun[20],waicun[20]; int shumu =0,pid=1; 阅读详情

相关推荐

进程控制(上):进程创建,进程等待,进程终止

进程创建进程创建被定义为通过父进程创建子进程的过程。fork函数函数原型:pid_t fork(void);特点: 1.fork函数调用一次,返回两次两次返回值得区别分别是子进程当中的返回值为0,父进程当中的返回值为新建子进程的ID(将ID返回给父进程的原因是没有函数可以使父进程得到子进程的ID,这样会便于管理); 2.子进程被创建出来后,子进程是父进程的副本(子进程获得父进程数据空

leap的博客 2929

进程与线程

进程与线程 线程:线程是一条执行路径,是程序执行时的最小单位。 进程:进程是一个独立的运行环境,它可以看作一个程序或一个应用。 进程和线程的关系: 一个程序就是一个进程,而一个程序中的多个任务则被称为线程。进程是表示资源分配的基本单位。 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是程序执行时的最小单位。 同一进程的所有线程共享该进程的所有资源。即同一个进程中的多个线程共享Java虚拟机的堆和方法区 每个线程拥有自己的私有内存:Java虚拟机中的虚拟机栈,本地方法栈,程序计数

m0_54797663的博客 2177

先进封装技术 Part03---重布线层(RDL)的科普

RDL是一种在芯片封装过程中用于重新分布电气连接的技术。它通过在芯片表面或中介层上形成额外的布线层,重新分配芯片的I/O(输入/输出)位置,以适应不同的封装需求和提高电气连接的灵活性。

阿拉伯梳子的专栏 4709

进程、线程、协程

优点 使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。 程序的运行速度可能加快。 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等 线程不能独立运行,每个线程都有一个入口,执行顺序,出口 线程可以被中断 当线程正在运行时,可以暂时把线程睡眠,先让其他线程运行 线程可以分为以下几种 内核线程

qq_44657964的博客 658

C#操作SQLite数据库帮助类——SQLiteHelper

using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString =

跟健哥出去走走 2万+

告别Modern Standby烦恼:在Windows 11中手动启用S3睡眠模式的完整指南

本文详细介绍了如何在Windows 11中手动启用S3睡眠模式,解决Modern Standby(S0模式)导致的笔记本睡眠后耗电问题。通过注册表修改、电源选项调整、BIOS设置等步骤,帮助用户恢复传统深度睡眠功能,显著提升电池续航表现。

weixin_30271335的博客 559

实时操作系统

RTOS概念 实时响应(多任务系统) 平时的裸机相比: 裸机包括 轮询系统 (main函数一个while循环)和 前后台系统(在前面轮询系统的基础加了中断) 实时操作系统,又名多任务系统,事件放在任务进行执行,根据每一个人任务的优先级进行运行,相比前后台系统,有紧急事件时,如果事件执行的事情比较少,会在中断服务程序执行(前台),否则将在后台循环执行,还会出现一种问题,中断服务程序是可以嵌套的,如果中断服务程序比较复杂,很有可能出现中断栈溢出。所以多任务系统的实时性提高了。 有部分操作系统会出现线程的概念,

不断debug,优化中…… 1006

【物联网】探索NE555:一款经典的集成电路(超详细)

NE555是一种集成电路,其内部结构包括比较器、RS触发器、电压比较器和输出级三个主要功能模块,外部引脚则提供了与其他电路元件进行连接的接口。NE555的设计目的是为了提供一种简单方便的定时器解决方案,它广泛应用于模拟和数字电路中。NE555作为一款经典的集成电路,具备设计简单、易于使用和稳定可靠的特点,在电子领域发展了广泛的应用。从单稳态模式到多稳态模式,再到振荡器模式,NE555可以满足不同的需求,并且可以与其他电路元件灵活组合,扩展其功能。然而,需要注意的是NE555也有一些限制。

Goforyouqp的博客 6万+

【操作系统】进程与线程的区别

进程与线程的区别 进程与线程是两个比较容易混淆的概念,但实际上他们是两个不一样的东西。 一、各自包含什么? 进程是线程的容器,因此简单地来讲,一个进程内部包含一个或多个线程。 线程是进程的一个实体,包含程序计数器(指向当前指令)、寄存器(存储线程内的局部变量)和堆栈。 二、可独立运行吗? ...

阳阳的博客 9965

三个原则判定电源环路稳定性

环路稳定性测试接线图如图2所示,将信号电阻(Inserted Resistor )接入电源的环路控制电路中,注入一特定幅度和频率范围的扫频干扰信号(OUT),当干扰信号达到一定的幅度时,环路系统便对干扰信号有所响应,然后使用频率响应分析仪对电源环路输出端(CH2)和电源环路干扰信号注入端(CH1)同时进行比值跟踪测量,则可以得出频率与增益和相位的关系曲线图——波特曲线图(Bode Plot Graph),如图1所示。相位裕度,增益裕度,穿越频率,如图(波特图)所示。相位容限即相位裕度,增益容限即增益裕度。

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 3740

C/C++ 静态代码检查工具cppCheck

Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。

贝勒里恩的博客 4952

计算机操作系统原理:进程

前言多道程序环境下,程序的执行是动态变化的,在系统中处于“走走停停、停停走走”的运行状态。为了使程序能够并发执行,并能够如实反映程序活动的动态特征,操作系统引入了进程,以对并发执行的程序加以控制和描述。计算机系统中 CPU 是以进程为单位进行分配和管理的。正题在开始编写文章前,有几个问题需要思考一下:什么是进程?进程具有哪些状态?进程由哪几部分组成?什么是进程?进程的概念是 20 世纪 60 年代...

水知道答案 4034

博途PLC模糊PID控制(量化因子和比例因子)

参数"量化因子和比例因子",都是为了对清晰值进行比例变换而设置的,其作用是使变量按一定比例进行放大或缩小,以便和我们的模糊论域相匹配完成一一映射。这种变换对整个系统的工作性能也是有影响的。(其实相当于额外引入了比例作用,所以说模糊PID的调节是个系统工程)。限于本人能力,文中难免出现错误和不足,欢迎大家批评和指正。博途PLC的模糊PID控制完整算法可以参看下面这篇文章博途PLC模糊PID控制详解(SCL完整源代码+参数)_RXXW_Dor的博客-优快云博客。......

RXXW_Dor的博客 5271

【linux】进程控制——进程创建,进程退出,进程等待

一个进程创建了另一个进程,创建者为父进程,被创建者为子进程。父进程可以创建多个子进程。操作系统是一号进程,所有进程构成一颗多叉树结构。每个父进程只对直系的子进程负责。父进程创建子进程的一整套流程为:创建子进程——>子进程完成任务——>父进程回收子进程父进程先退,子进程未退。此时子进程的父亲进程被改为1号进程(操作系统),那么该子进程被称为孤儿进程父进程未退,子进程先退。但父进程没有读取到子进程的退出(进程等待),该子进程的状态被改为 Z 状态,Z 状态的进程被成为僵尸进程。

2301_79796701的博客 2708

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Linux】详解进程状态之僵尸进程——孤儿进程

详解进程状态

日出等日落 3252

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

进程及多进程编程

                                                                              第一部分  进程知识总结  一、进程的定义 进程是执行中的程序,就类比于一出舞台剧的整个表演过程;进程动态性的实质是进程实体的执行过程;进程独立性是指每个进程都有自己的PCB;进程的并发性是内存中可以允许存在多个进程实体,并且可以同时运行一...

小不点的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

进程、子进程、僵尸进程、孤儿进程的关系

进程、子进程、僵尸进程、孤儿进程的关系。

intmian1的博客 1244

【进程】进程组

一、进程组 1. 进程组 (1)进程组,也称之为作业,BSD与1980年前后向UNIX中增加的一个新特性,代表一个或多个进程的集合。每个进程都属于一个进程组,在waitpid函数和kill函数的参数中都曾经使用到,操作系统设计的进程组的概念,是为了简化对多个进程的管理。 当父进程创建子进程的时候,默认子进程与父进程属于同一个进程组,进程组ID等于进程组第一个进程ID(组长进程)。所以,组长...

月雲之霄的博客 2373

进程(父进程、子进程、init进程)

父进程和子进程、init进程之间的关系 通过上节我们知道,子进程是通过fork()函数创建的,相当于父进程的一个复制品,子进程和父进程除了子进程复制了父进程还有什么关系呢? 1.子进程和父进程属于同一进程组,父进程为进程组组长; 2.父进程退出子进程未退出的情况下,子进程会变成孤儿进程有init进程收养并转为后台进程; 3.子进程退出父进程为退出但父进程未及时进行回收,子进程就会成为僵尸进程; 用通俗的方式来讲:子进程和父进程就如同一家公司开了一家子公司一样,虽然在表面上看两家公司是两个独立的公司,但实际内

weixin_48755527的博客 4099

【进程概念】启动进程 | 查看进程 | 创建进程

进程 | 启动进程 | 查看进程 | 终止进程 | 创建进程

m0_74841364的博客 2212

linux 之0号进程、1号进程、2号进程

0号进程,通常也被称为idle进程,或者也称为swapper进程,其 pid 等于0。0号进程是linux启动的第一个进程,它的task_struct的comm字段为"swapper",所以也称为swpper进程。当系统中所有的进程起来后,0号进程也就蜕化为idle进程,当一个core上没有任务可运行时就会去运行idle进程。一旦运行idle进程则此core就可以进入低功耗模式了.

z20230508的博客 3196

进程IO之 进程

程序:静态的,编译好的可执行文件,存放在磁盘中的指令和数据的集合进程:动态的,是程序的一次执行过程,是独立的可调度的任务。

学习过程记录,欢迎大家交流互动,互相学习 1080

主进程、子进程和守护进程

理解 主进程main thread: 程序执行的入口,可以理解为常用的main 函数。 父进程parent thread: 对于子进程而言, 子进程的创造者,可有多个子进程。 任何进程都有父进程,追根溯源是系统启动程序。对于我们一般写的程序,主进程是最初始的父进程。 子进程child thread: 相对父进程而言, 父进程创建的进程, 子进程只能对应一个父进程。如果没有标记为daemon , 则杀死父进程不会对子进程的运行状态有丝毫影响。 守护进程daemon thread: 即daemon thread

weixin_45295666的博客 3732

进程 进程的创建 进程的回收

进程 进程的状态 进程的创建 进程的回收 execl函数

weixin_60208935的博客 2436

Linux进程概念(进程PID、父子进程、僵尸进程与孤儿进程)

进程是计算机系统里的一个基础概念,不论是什么系统(Windows、Linux还是macOS),都有进程这个概念。进程可以认为是在运行中的可执行程序。我们写的代码,经过编译后运行是进程,电脑中每一个运行中的软件也是进程。

laimaxgg 1367
上一篇: 二叉树的遍历
下一篇: 共享栈
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值