操作系统:进程描述与进程状态变化

目录

3.1 进程描述

3.2 进程状态

3.2.1 进程的创建与结束等系统调用

3.2.2 进程状态及变化

3.2.3 进程挂起


3.1 进程描述

进程是系统中占用处理机及争夺其它系统资源的实体。用户程序必须在进程中运行。

进程的引入: 

  • 为了能实现同一作业的作业步并发。(例如:一边听音乐一边写文档)
  • 在作业某作业步等I/O时,另一逻辑上可并发作业步能使用CPU运行。
  • 引入进程后,逻辑上可并发的作业步在不同进程中运行。处理机能在进程间切换。

程序与进程的区别

  • 相同的程序可以在两个以上的进程中运行(可以创建多个进程运行相同网页浏览器程序)
  • 程序文件存放在磁盘中,运行时读入内存;而进程是在系统运行期间动态创建的,生命周期不会跨越系统运行周期。
  • 程序只有程序语句及有初值数据变量和无初值变量;而进程有要处理的输入数据。

进程并发运行时共享资源的问题

并发运行的程序访问共享数据问题举例:

(count为共享变量初值=300)

存款进程:输入i=100                        取款进程:输入i=300

                   N=count                                            M=count

                   N=N+1                                              M=M-1

                   count=N                                           count=M

如果按以下次序占处理机运行:

存款进程:N=count,N=N+100;

取款进程:M=count,M=M-200,count=M;

存款进程:count=N

结果:count=400(应为200,空分占用,独占式占用count)

一、进程定义

进程:是有独立功能的程序关于某个数据集合的一次运行活动。

特点

  • 动态性:可动态创建,结束,也可是精灵进程(从服务创建到结束一直都在)
  • 并发性:可以被调度轮流占用处理机运行(多道批处理,不用一直占用)
  • 独立性:有独立空间(一个进程不可调用另一个进程)
  • 制约性:因访问共享数据或进程间同步而产生制约。(如上述例题,无制约而产生错误)

组成:用于管理进程的PCB表以及进程映像

  • 执行程序及处理数据,及存放程序和数据的内存空间;
  • 执行程序用的栈(用户栈和核心栈)(每一个进程都有)
  • 进程描述管理信息及运行要用的其他系统资源(比如说打开的文件)

二、进程控制块PCB

进程映像:进程执行程序,数据,用户栈。进程映像是进程存放于内存的对象,如何存放在内存取决于存储管理机制。

进程控制块PCB:系统管理控制进程运行用的信息集合。(进程当前的状态、本身的特性、对资源的占用与调度信息)

PCB含有以下三大类信息

  • 进程标识信息。如本进程的标识;本进程的产生者标识(父进程标识);进程所属用户标识。
  • 处理机状态信息保存区(栈式结构)。是指就是核心栈。保存进程进入操作系统内核的运行现场信息保护:①通用寄存器:数据、地址寄存器。②控制和状态寄存器:程序计数器(PC);处理机状态字(PS)
  • 进程控制信息:①调度和状态信息,用于操作系统进程占用处理机的信息。(执行、运行、就绪、阻塞状态等等) ②进程间的通讯信息,为支持进程间的通讯相关消息队列,信息等,这些信息存在接收方的进程控制块中。③存储管理信息,包含有描述进程映像存储空间的数据结构。④进程所用资源,说明由进程打开,使用的系统资源,如打开的文件等。⑤链接信息,如就绪进程链等。

3.2 进程状态

3.2.1 进程的创建与结束等系统调用

进程创建的处理过程

  1. 接收进程运行所需参数:如进程初始优先级,执行程序及输入参数等参数。
  2. 请求分配进程描述块PCB空间,得到一个内部数字进程标识。
  3. 用接收的参数初始化PCB表。
  4. 产生用于描述进程空间的数据结构,用执行程序文件初始化进程空间,建立程序段、数据段、用户栈段等。
  5. 用进程进行输入参数设置处理机现场保护区,造一个进程运行栈帧。
  6. 置好父进程等关系域。
  7. 将进程置成就绪状态。
  8. 被PCB表挂入就绪队列,等待时机被调度运行。

进程结束的处理过程

  1. 将进程状态改为结束状态。
  2. 关闭所有打开文件、设备。
  3. 释放进程程序文件关联和其他资源。(子孙进程)
  4. 进行相关信息统计(进程占用CPU多长时间等等)
  5. 清理其相关进程的链接关系,如在Linux中,将该结束进程的所有子进程链到1号进程,作为1号进程的子进程,并通知父进程自己已结束。
  6. 释放进程映像空间。
  7. 释放进程控制块(PCB)
  8. 调进程调度与切换程序。

进程等待的处理过程

如waitpid(pid,&staloc,opts)系统调用。进程发出此系统调用阻塞于内核等待pid所指进程运行结束。


3.2.2 进程状态及变化

运行状态(Running):进程正在处理机上运行。

就绪状态(Ready):进程获得了除处理机(CPU)之外的一切所需资源,一旦得到处理机即可运行。

阻塞或等待状态(Blocked):进程正在等待某一事件而暂停运行时,如等待某资源成为可用,等待输入/输出完成。

创建状态(New):进程正在被创建,还没到就绪状态之前的状态。

结束状态(Exit):进程正在从系统中消失时的状态,这是因为进程结束或其它原因流产所导致的。

状态变化图:

状态变化解释

空 —> 创建:新进程被产生来执行程序

创建—>就绪:当进程被创建完成,初始化后,一切就绪准备运行时变到就绪态。

就绪—>运行:处于就绪状态的进程被进程调度程序选中后,在处理机上运行。

运行—>结束:当进程调用“进程结束”系统调用或者因错流产,当前运行进程会由操作系统做结束处理。

运行—>阻塞:当进程请求某资源且必须等待时,如,当进程请求操作系统服务,而操作系统得不到所需的资源,或进程请求输入/输出,操作系统已启动外设,但输入/输出尚未完成,或进程要与其他进程通讯,进程准备接收对方还未发出的信息时都会被阻塞。

阻塞—>就绪:当进程等待的事件发生时,进程从阻塞变成就绪。

运行—>就绪:进程在其运行过程中,分给它的处理机时间片用完而被剥夺CPU;在可剥夺的操作系统中,当有更高优先级的进程就绪,在进程准备从内核返回用户态运行时,进程调度程序可以将正运行进程从运行状态改变为就绪状态,让更高优先级的进程占用CPU。

 每个就绪队列中放相同优先级的事件


3.2.3 进程挂起

进程在挂起(Suspend)状态意味着进程没有占用内存空间,处在挂起状态的进程映像在磁盘上(外存)

先把阻塞变为阻塞挂起,事件发生后再变为就绪挂起状态,最后变为就绪状态。

当cpu已准备但内存不够用时,就绪状态变为就绪挂起状态,内存够用时解挂。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值