[操作系统系列]进程

操作系统的进程

进程:
是计算机中的程序关于某数据集合上的一次运行活动,它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。进程是系统进行资源分配的基本
单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体,是程序的执行过程。
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间。第二,进程是一个“执行中的程序”。

进程的特征:
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序,一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程 中,程序不能发生改变。

进程和程序的关系:
进程:动态的 并发的 暂时的
程序:静态的 顺序的 永久的
一个进程可以涉及到一个或几个程序的执行;反之一程序可以对应多个进程,即同一程序段可在不同数据集合上运行,可 构成不同的进程 。
进程=程序+数据+PCB
程序与进程并不具有一一对应的关系

进程映像:
进程映像也称进程图像,是进程执行的上下文环境,包括处理机中各通用寄存器的值,进程的内存映像,打开文件的状态 和进程占用资源的信息等。
进程映像是一个内存级的实体并由: 在这里插入图片描述
进程控制块(PCB),进程执行的程序(程序),进程执行时所用的数据(数据集合)
进程执行时所用的工作区(栈)组成。
【程序段】:描述了进程本身所要完成的功能。
【数据段】:是程序操作的一组存储单元,是程序操作的对象,由程序相关的数据和数据结构构成。
【栈】:用于保存进程调用的参数过程调用地址和系统调用地址 是进程执行时所用的工作区。
【PCB】:是一种数据结构,主要表示进程本身的特性,进程状态,进程的调度信息,以及对资源的占有情况。PCB是操 作系统中最重要的数据结构,记录了操作系统所需用于描述进程情况以及控制进程运行的全部信息。为了统一管理、控制 和调度进程,操作系统往往将进程控制根据进程状态块集中组织。

PCB的内容包括:
进程描述信息:进程名,进程标识符,用户名
进程调度信息:进程状态,进程优先级,运行统计信息,进程阻塞原因
处理机状态信息:通用寄存器,指令计数器,程序状态字寄存器,栈指针
进程控制和资源占有量信息:程序入口地址,程序的外存地址,进程同步及通信机制,资源占有信息,链接指针。

进程的创建:
进程创建由操作系统执行创建原语完成,子进程由父进程创建。
引起进程创建的事件:用户登录,新作业进入系统,应用请求,提供服务(当运行着的用
户程序提出请求,要求操作系统提供某种服 务,系统将专门创建一个进程来提供用户程序
所需要的服务,如打印进程,创建进程后该打印进程讲和用户进程并发执行)。进程的建
立并不影响调用者的状态,调用者只是在执行自己的程序时,完成了一个调用命令,接着
继续进行后续的工作。
【创建原语工作】:
原语:由若干条指令构成、用于完成一定功能的过程。原语是“原子操作”。操作中的所有动作,要么全做,要么全不做
1)申请空白PCB(首先查找已有PCB表若已存在则说明同名进程已经存在,非正常终止(例如有些软件程序不允许多开)否则申请空白PCB),将创建者提供的有关信息填入该PCB
2)初始化进程描述信息,建立父进程的父子关系,初始化处理机状态信息,初始化进程控制信息,分配优先级等。
3)为进程分配资源,存储空间。子进程的资源可以从父进程继承。(父进程创建子进程,之前必须准备好如下参数:进程标识符、进程优先级以及进程程序的起始地址)
4)将程插入就绪队列。进程建立以后并不是立即投入运行,而是进入就绪队列。这是因为被建立进程的父进程并没有安排进程运行的资格。被建立进程的运行靠进程调度来实现。
在这里插入图片描述
进程的撤销:
进程的撤销由操作系统撤销原语完成,父进程撤销时其所有子进程都被撤销。
引起进程撤销的事件:进程正常结束,进程异常结束,外界干预。
[进程异常结束]出现错误故障而终止
[外界干预]操作员或操作系统干预,父进程要求撤销某个子进程,撤销父进程的连带效应
【撤销原语工作】:
1)查找该进程PCB
2)若进程处于运行状态,则终止,并调度其他进程运行
3)撤销子进程(防止子进程与家族分离开导致无法控制)
4)归还资源
5)从所在队列移出,删除PCB
在这里插入图片描述
进程的阻塞和唤醒:
进程阻塞由系统阻塞原语完成,父进程被阻塞子进程不一定会被阻塞
进程的阻塞一般是进程的主动行为,是进程通过调用阻塞原语把自己阻塞
引起进程阻塞的事件:
1.请求某些系统服务,但操作系统出于其他原因无法为其服务(如新的打印进程出现,但旧的
打印进程还未结束,此时该新的打印进程将被阻塞)。
2.启动某种同步操作(该进程必须等该操作完成才能继续执行)。
3.新数据未到达。
4.没有新工作可做。
【阻塞原语工作】:
1)停止进程执行。
2)将进程插入阻塞队列,更改PCB中的状态为“阻塞状态”
3)调度新进程
进程唤醒由唤醒原语唤醒被阻塞的进程:
引起进程唤醒的事件:请求的系统服务被准备完成,等待的操作已完成,
需要的数据已到达,有新工作可做
【唤醒原语工作】:
1)将进程从阻塞队列解下。
2)把进程插入就绪队列。
3)改变PCB状态为“就绪状态”
阻塞原语和唤醒原语必须成对使用,即如果在某进程中调用了阻塞原语,则必须在与之合作
的或相关的进程中安排一条相应的唤醒原语,否则被阻塞的进程可能永远不会被唤醒。
在这里插入图片描述 在这里插入图片描述
进程的挂起和激活:
进程的挂起主要是将进程从内存移出。进程可以将自己挂起或者由父进程将某个子进程挂起。
当内存空间紧张时可将某些进程从内存移出到外存,即挂起进程;当内存空间宽裕时将挂起的进程移回内存,即激活进程。
【挂起原语工作】:
1)检查被挂起进程的状态
2)如进程处于就绪状态,将进程变为就绪挂起状态
3)如进程处于阻塞状态,将进程变为阻塞挂起状态
4)如进程正在运行,将进程变为就绪挂起状态,并重新调度进程
【激活原语工作】:
1)检查被激活进程的状态
2)如进程处于就绪挂起状态,将进程变为就绪状态
3)如进程处于阻塞挂起状态,将进程变为阻塞状态
4)若系统为抢占式系统,则进行进程调度
同样,挂起和激活应该成对使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值