什么是进程? ( 进程的详细概念 )
进程管理是操作系统重点、难点问题,也是贯穿Linux学习的知识点。那么什么是进程?
为什么引入进程的概念?
从理论角度看,是对正在运行的程序过程的抽象;
从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。什么是进程?
狭义定义:进程就是一段程序的执行过程。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程有怎么样的特征?
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推 进
结构特征:进程由程序、数据和进程控制块三部分组成;
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果; 但是执行过程中,程序不能发生改变。Linux进程结构?
Linux进程结构:可由三部分组成:代码段、数据段、堆栈段。也就是程序、数据、进程控制块PCB(Process Control Block)组成。进程控制块是进程存在的惟一标识,系统通过PCB的存在而感知进程的存在。
系统通过PCB对进程进行管理和调度。PCB包括创建进程、执行程序、退出进程以及改变进程的优先级等。而进程中的PCB用一个名为task_struct的结构体来表示,定义在include/linux/sched.h中,每当创建一新进程时,便在内存中申请一个空的task_struct结构,填入所需信息,同时,指向该结构的指针也被加入到task数组中,所有进程控制块都存储在task[]数组中。进程的三种基本状态?
a> 就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
b> 运行状态:进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以 执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
c> 阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生 前即使把处理机分配给该进程,也无法运行。进程和程序的区别?
a> 程序是指令和数据的有序集合,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个 动态的概念。
b> 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
c> 进程是由进程控制块、程序段、数据段三部分组成;
d> 进程具有创建其他进程的功能,而程序没有。
e> 同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进 程。
f> 在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。进程控制?
创建进程
引起创建进程的事件:
1) 用户登录
2) 作业调度
3) 提供服务
4) 应用请求
进程的创建过程
一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Creat()按下述步骤创建一个新 进程。
1) 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
2) 为新进程分配资源。
3) 初始化进程控制块。PCB的初始化包括:
①初始化标识信息,将系统分配的标识符和父进程标识符,填入新的PCB中。
②初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶。
③初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常 是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求。
4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中
进程终止
引起进程终止的事件
1)正常结束
2)异常结束
3)外界干预
进程的终止过程
如果系统发生了上述要求终止进程的某事件后,OS便调用进程终止原语,按下述过程去终止指定的进 程。
1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。
2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真。用于指示该进程 被终止后应重新进行调度。
3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。
4)将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。
阻塞唤醒
1.引起进程阻塞和唤醒的事件
1)请求系统服务
2)启动某种操作
3)新数据尚未到达
4)无新工作可做
2.进程阻塞过程
正在执行的进程,当发现上述某事件后,由于无法继续执行,于是进程便通过调用阻塞原语block把自 己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执 行状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队 列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞 (等待)队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即, 保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU环境。
3.进程唤醒过程
当被阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,则由有关进程(比如, 用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语执行 的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就 绪,然后再将该PCB插入到就绪队列中。
什么是进程? ( 进程的详细概念 )相关推荐
- 有关进程的一些基本概念
对进程的初步描述 一.和进程有关的一些概念 ①一个进程就是一个正在执行程序的实例,包括程序计数器,寄存器和变量的当前值. 从概念上说,每个进程拥有它自己的虚拟CPU,当然真实的CPU在各个进程之间来回 ...
- TCP与UDP协议初步学习——网络环境中分布式进程通信的基本概念
TCP与UDP协议初步学习--网络环境中分布式进程通信的基本概念 一.单机系统中进程通信方法 进程和进程通信是操作系统中最基本的概念,首先通过回忆操作系统课程中,关于单击系统中进程和进程通信的问题描述 ...
- Linux——孤儿进程|进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量
目录 孤儿进程 进程的优先级 用top命令去修改优先级 其他概念 环境变量 PATH 获取环境变量 习题 孤儿进程 父进程如果提前退出,那么子进程后退出,进入Z之后,那该如何处理呢? 父进程先退出,子 ...
- 【进程线程】1. 概念和区别
进程和线程--1. 概念与区别 一.概念 1. 进程 进程本质上是正在执行的一个程序,是对运行时程序的封装,每个进程会具备一个地址空间,在该空间内可以进行读写.该地址空间中存放可执行程序.程序的数据. ...
- C++11多线程第一篇:并发基本概念及实现,进程、线程基本概念
文章目录 1.并发基本概念及实现,进程.线程基本概念 1.1 并发.进程.线程的基本概念和综述 1.1.1 并发.并行 1.1.2 可执行程序 1.1.3 进程 1.1.4 线程 1.1.5 程序.进 ...
- python中进程的几个概念
本文为了说明例子,用中文作为变量写在了程序里面,一般编程最好不要那么写 本文目录 僵尸进程 孤儿进程 守护进程 互斥锁 僵尸进程 僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程 ...
- 进程和线程的概念、区别及进程线程间通信
进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的? 1. 基本概念: 进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发: 线程是进程 ...
- linux 查端口 查进程 (全网最详细)
查进程号 端口号 -n 禁用域名解析(即显示ip地址不显示域名),-t tcp,-u udp,-l listen,-p pid查看进程 查看进程监听的端口是多少 netstat -ntlp | gre ...
- Linux系统编程14:进程入门之Linux进程中非常重要的概念之进程地址空间-原来我们看到的地址全部是虚拟的
文章目录 (1)旧知回顾 (2)程序地址空间? A:同一个地址有两个数据? B:物理地址和虚拟地址 C:进程地址空间及作用 D:进程地址空间如何工作 (1)旧知回顾 学习C/C++总免不了这张图 这张 ...
- 并发 --- 31 进程锁 守护进程 进程队列
一.进程的其他方法 1. .name 进程名 (可指定) 2. .pid 进程号 3. os.getpid 在什么位置就是什么的进程号 4. .is ...
最新文章
- Web SCADA 电力接线图工控组态编辑器
- nodeJs-autoMerge
- MySQL数据单个数据太大,导入不进去
- 高清变脸更快更逼真!比GAN更具潜力的可逆生成模型来了 | OpenAI论文+代码
- codeforces 808 E. Selling Souvenirs (dp+二分+思维)
- 15分钟构建超低成本数据大屏:DataV + DLA
- iOS新版微信底部返回横条问题
- 【面试准备·2】webpack
- 用js和jq分别实现二级联动效果
- Eclipse-project 重命名问题(如何彻底修改Eclipse工程名),4种解法
- 电影数据集TMDB数据分析练习
- 发布量子加密手机,浓眉大眼的三星也开始技术碰瓷了?
- Gif表情包在线制作小程序
- EI会议论文的格式要求
- 旧版macOS官方下载地址
- bootstrap-table实现表格编辑
- 加装机械硬盘后如何给磁盘分区
- OpenCV快速入门一:图片读取保存
- MySql安装与使用
- 雷达覆盖_ssl1232_计算几何
热门文章
- 浮点数计算,保留两位小数
- computed 的数据没有相应
- 2019年最新编程语言排行榜出炉TIOBE
- 从新出发——慕书读书正式更名为“慕书+”
- 2000+停车场高精度地图数据,这家图商拿下首个合资品牌量产
- java IO笔记(StringReader/StringWriter)
- 本易计算机不开机了,求问本易平板电脑电池可以卸下吗?
- 2020年是时候迁移AndroidX了
- 查看进程Android大全,Android 查看手机中所有进程
- 惠普CP1025后盖传感器松导致不停自检或打印中掉电, 跳闪三角灯