进程的定义、组成、组织方式、特征
进程的定义
程序:就是一个指令序列 早期的计算机(只支持单道程序)
内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢p>
为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念
系统为每个运行的程序配置了一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)
进程标识符PID
当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,用于区分不同的进程
用户标识符UID
标识这个进程所属那个用户
各种寄存器值
当进程切换时需要把进程当前的运行情况记录下来保存在PCB中,如程序计数器的值表示当前程序执行到那一句
进程的特征
动态性:进程是程序的一次执行过程,是动态的产生、变化和消亡的(进程最基本的特征)
并发性:内存中有多个进程实体,各进程可并发执行
独立性:进程是能独立运行、独立获取资源、独立接受调度的基本单位
异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供‘进程同步机制’来解决异步问题
结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成。
进程的状态和转换
进程的三种基本状态
运行态
占有CPU,并在CPU上运行
注意:单核处理机环境下,每一个时刻最多只有一个进程处于运行态(双核可以两个)
就绪态
已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
进程已经拥有了除处理机之外所有需要的资源,一旦获得处理机,即可立即进行运行态开始运行。
阻塞态/等待态
因等待某一时间而暂时不能运行
如:等待操作系统分配打印机、等待读磁盘操作的结果。CPU是计算机中最昂贵的部件,为了提高CPU的利用率,需要先将其他进程需要的资源分配到位,才能得到CPU的服务
创建态
操作系统需要完成创建进程。操作系统为该进程分配所需的内存空间等系统资源,并为其创建、初始化PCB
**终止态 **
进程运行结束,需要撤销进程。操作系统需要完成撤销进程相关的工作。完成将分配给进程的资源回收,撤销进程PCB等工作
进程状态的转换
用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成,这种不可被中断的操作即原子操作。
原语采用关中断指令和开中断指令实现
显然,关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令
进程控制相关的原语
进程控制会导致进程状态的转换。无论那个原语,要做的无非三类事:
1、更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
a、所有的进程信息控制原语一定会修改进程状态标志
b、剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c、某进程开始前必然要1恢复其运行环境
2、将PCB插入合适的队列
3、分配/回收资源
进程通信
什么是进程通信
进程通信指进程之间的信息交换
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
为了保证安全,一个进程不能直接访问另一个进程的地址空间。
但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法
共享存储
消息传递
线程的属性
多线程模型
挂起和阻塞的区别,两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存中去了,而阻塞状态下进程映像还在内存中
有的操作系统会把就绪挂起、阻塞挂起分为两个挂起队列,甚至会根据阻塞原因不同再把阻塞挂起进程进一步细分为多个队列。
低级调度
低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。
进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度
进程的调度频率很高
进程调度的时机
进程在操作系统内核程序临界区中不能进行调度与切换
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源
临界区:访问临界资源的那段代码
内核程序临界区:一般是用来访问某种内核数据结构的,比如进程的就绪队列
进程调度方式
非剥夺调度方式,又称非抢占方式。即只允许进程主动放弃处理机。在允许过程中即使有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。
实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统。
剥夺调度方式,又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。
可以优先处理更紧急的系统,也可以实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合分时操作系统、实时操作系统
进程切换与过程
狭义的进程调度指的是从就绪队列中选取一个要运行的进程(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)
进程切换:一个进程让出处理机,由另一个进程占用处理机的过程
广义的进程调度:包含选择一个进程和进程切换两个步骤
进程切换的过程主要完成了:
1、对原来运行进程各种数据的保存
2、对新的进程各种数据的恢复
注意:进程切换是有代价的,因此过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在进程切换上,而真正用于执行进程的时间减少
调度算法的评价指标
等待时间
等待时间,指的是进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低
短作业优先(SJF)
短作业/进程优先调度算法(非抢占式): 每次调度时选择当前已到达且运行时间最短的作业/进程
最短剩余时间优先算法(抢占式 ): 每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外当一个进程完成时也需要调度优先级调度算法
非抢占式的优先级调度算法: 每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。
抢占式的优先级调度算法: 每次调度时选择当前已到达且优先级最高的进程。进程同步、进程互斥
进程同步
进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。
单标志法
两个进程在访问临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。
双标志后检查法
中断屏蔽方式
利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)
优点
简单、高效
缺点
不适用于多处理机,只适用于操作系统内核进程,不适用于用户进程TestAndSet指令
简称TS指令,也有地方称为TestAndSetLock指令,或TSL指令
TSL指令是用硬件实现的,执行过程不允许被打断,只能一气呵成。记录型信 量
记录型数据结构
信 量机制实现进程同步
![]()
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!