2.1 进程与线程

一、进程的概念与特征
1.进程的概念:在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性
及不可再现性的特征。为此引入了进程的概念,以便更好地描述和控制程序的并发执行,实现操作
系统的并发性和共享性。

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

3.PCB是进程存在的唯一标志

4.从不同的角度来看,进程可以有不同的定义,比较典型的定义有:
(1)进程是程序的一次执行过程.
(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
(3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一
个独立单位。

引入进程实体的概念后,我们可以把传统操作系统中的进程定义为:"进程是进程实体的运行过程,
是系统进行资源分配和调度的一个独立单位"

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


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


三、进程控制
	进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进
程、实现状态转换等功能。在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行
期间不允许中断,它是一个不可分割的基本单位。
1.进程的创建:允许一个进程创建另一个进程。此时创建者称为父进程,被创建的进程称为子程。
子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将其从父进程那里获得的资源归还给
父进程。此外,在撤销父进程时,必须同时撤销其所有的子进程。操作系统创建一个新进程的过程如
下(创建原语)
(1)为新进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的)。若PCB申请失败,
则创建失败。
(2)为进程分配资源,为新进程的程序和数据及用户栈分配必要的内存空间(在PCB中体现),注意,
若资源不足,则并不是创建失败,而是处于阻塞态,等待内存资源。
(3)初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及
设置进程的优先级等。
(4)若进程就绪队列能够接纳新进程,则将新进程插入就绪队列,等待被调度运行。

2.进程的终止:引起进程终止的事件主要有:A.正常结束,表示进程的任务已完成并准备推出运行B:
表示进程在运行时,发生了某种异常事件,使程序无法继续执行,如存储区越界、保护错等。C.外界
干预,指进程应外界的请求而终止运行。操作系统终止进程的过程如下(撤销原语):
	(1)根据被终止进程的标识符,检索PCB,从中读出该进程的状态
	(2)若被终止进程处于状态,立即终止该进程的执行,将处理机资源分配给其他进程
	(3)若该进程还有子孙进程,则应将其所有子孙进程终止
	(4)将该进程所拥有的全部资源,或归还给父进程,或归还为操作系统
	(5)将该PCB从所在队列中删除

3.进程的阻塞和唤醒
	正在执行的进程,由于期待的某些事件为发生,如请求系统资源失败、等待某种操作的完成、
新数据尚未到达或无新工作可做等,由系统自动执行阻塞原语(Block),使自己由运行态变为阻塞
态。阻塞原语的执行过程如下:
	(1)找到将要被阻塞进程的标识号对应的PCB
	(2)将其从等待队列中移出,并置其状态为就绪态
	(3)把该PCB插入相应事件的等待队列,等待调度程序调度
	
	当被阻塞进程所期待的事件出现时,由有关进程调用唤醒原语,将等待该事件的进程唤醒。唤
醒原语的执行过程如下:
	(1)在该事件的等待队列中找到相应进程的PCB
	(2)将其从等待队列中移出,并置其状态为就绪态
	(3)把该PCB插入就绪队列,等待调度程序调度

	需要注意的是,Block原语和Wakeup原语是一对作用刚好相反的原语,必须成对使用。Block原
语是由被阻塞进程自我调用实现的,而Wakeup原语则是由一个被唤醒进程合作或被其他相关的进程
调用实现的。
	
4.进程切换
	进程切换是指从一个进程的运行转到另一个进程上运行,在这个过程中,进程的运行环境产生
了实质性的变化。过程如下:
	(1)保存处理机上下文,包括程序计数器和其他寄存器
	(2)更新PCB信息
	(3)把进程的PCB移入相应的队列,如就绪、在某事件阻塞等待队列
	(4)选择另一个进程执行,并更新其PCB
	(5)更新内存管理的数据结构
	(6)恢复处理机上下文
	
	进程切换与处理机模式切换是不同的,模式切换时,处理机逻辑上可能还在同一进程中运行。
若进程因中断或异常进入核心态运行,执行完后又回到用户态刚被中断的程序运行,则操作系统只
需恢复进程进入内核时所保存的CPU现场,而无须改变当前进程的环境信息。但若要切换进程,当
前运行进程改变了,则当前进程的环境信息也需要改变。
	

四、进程的组织
	进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位。它由以下三部分
组成,其中最核心的是进程控制块(PCB)1.进程控制块
	进程创建时,操作系统为它新建一个PCB,该结构之后常驻内存,任意时刻都可以存取,并在进程
结束时删除。PCB是进程实体的一部分,是进程存在的唯一标志。
	进程执行时,系统通过其PCB了解进程的现行状态信息,以便对其进行控制和管理;进程结束时,
系统收回其PCB,该进程随之消亡。操作系统通过PCB来管理和控制进程。
	当操作系统欲调度某进程运行时,要从该进程的PCB中查出查出其现行状态及优先级;在调度
到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB
中的程序和数据的内存始址,找到其程序和数据;进程在运行过程中,当需要和与之合作的进程实现
同步、通信或访问PCB;当进程由于某种原因而暂停运行时,又需将其断点的处理机环境保存在PCB
中。可见,在进程的整个生命周期中,系统总是通过PCB对进程进行控制的,亦即系统唯有通过进程
的PCB才能感知到该进程的存在。
	为了方便进程的调度和管理,需要将各进程的PCB用适当的方法组织起来。目前,常用的组织
方式有链接方式和索引方式两种。链接方式将同一状态的PCB链接成一个队列,不同状态对应不同
的队列,也可以把处于阻塞态的进程的PCB,根据其阻塞原因的不同,排成多个阻塞队列。索引方式
将同一状态的进程组织在一个索引表中,索引表的表项指向对应的PCB,不同状态对应不同的索引
表,如就绪索引表和阻塞索引表。

	2.程序段:能被调度程序调度到CPU执行的程序代码段。注意,程序可被多个进程共享,即多个
继承可以运行同一个程序。
	3.数据段:一个进程的数据段可以是进程对应的程序加工处理的原始数据,也可以是程序执行
时产生的中间或最结果。

五、进程的通信
	进程通信是指进程之间的信息交换。PV操作是低级通信方式,高级通信方式是指以较高的效率
传输大量数据的通信方式。高级通信方式主要有以下三类。
1.共享存储
	共享存储又分为两种:低级方式的共享是基于数据结构的共享;高级方式的共享则是基于存储
区的共享。操作系统只负责为通信进程提供可供享用的存储空间和同步互斥工具,而数据交换则由
用户自己安排读/写指令完成。

2.消息传递
	在消息传递系统中,进程间的数据交换是以格式化的消息为单位的。若通信的进程之间不存在
可直接访问的共享空间,则必须利用操作系统提供的消息传递方法实现进程通信。进程通过系统提
供的发送消息和接收消息两个原语进行数据交换。
(1)直接通信方式。发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上,
接收进程从消息缓冲队列中取得消息
(2)间接通信方式。发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。这种中
间实体一般称为信箱,这种通信方式又称信箱通信方式。相应的通信系统称为电子邮件系统。

3.管道通信。所谓管道,是指用于连接一个读进程一个写进程以实现它们之间的通信的一个共享文
件,又名pipe文件。向管道提供输入的发送进程(即写进程),以字符流形式将大量的数据送入()
管道;而接收管道输出的接收进程(即读进程)则从管道中接收()数据。为了协调双方的通信,管
道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。

注意:从管道读数据是一次性操作,数据一旦被读取,它就从管道中被抛弃,释放空间以便写更多的
数据。管道只能采用半双工通信,即某一时刻只能单向传输。要实现父子进程双方互动通信,需要
定义两个管道。

六、线程概念和多线程模型
1.线程的基本概念
	引入进程的目的是为了更好地使多道程序并发执行,提高资源利用率和系统吞吐量;而引入线
程的目的则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
	线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,
只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部
资源。一个线程可以创建和撤销另一个线程,同一进程的多个线程之间可以并发执行。由于线程之
间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。

2.线程与进程的比较
(1)调度。在引入线程的操作系统中,线程是独立调度的基本单位,进程是拥有资源的基本单位。在
同一进程中,线程的切换不会引起进程的切换;在不同进程中进行线程切换会引起进程切换。
(2)拥有资源。进程是拥有资源的基本单位,线程不拥有系统资源。
(3)并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且多个线程之间也可以并发
执行。
(4)地址空间和其他资源。进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,某
进程内的线程对于其他进程不可见。
(5)通信方面。进程间通信(IPC)需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间
可以直接读/写进程数据段来进行通信。

3.线程的属性
多线程操作系统把线程作为独立运行或调度的基本单位。线程的主要属性如下:
(1)每个线程都应由一个唯一的标识符和一个线程控制块,线程控制块记录了线程执行的寄存器和
栈等现场状态。
(2)不同的线程可以执行相同的程序,即同一个服务程序被不同的用户调用时,操作系统把它们创建
成不同的线程。
(3)同一进程中的各个线程共享该进程所拥有的资源。
(4)线程是处理机的独立调度单位,多个线程是可以并发执行的。
(5)一个线程被创建后,便开始了它的生命周期,直至终止。线程在生命周期内会经历阻塞态、就绪
态和运行态等各种变化。

4.线程的实现方式
线程的实现方式可以分为两类:用户级线程和内核级线程。内核级线程又称内核支持的线程。
在用户级线程中,有关线程管理的所有工作都是由应用程序完成,内核意识不到线程的存在。
在内核级线程中,线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码只有一个内核
级线程的编程接口。内核为进程及其内部的每个线程维护上下文信息,调度也在内核基于线程架构
的基础上完成。

5.多线程模型
有些系统同时支持用户线程和内核线程,由此产生了不同的多线程模型,即实现用户级线程和内核级
线程的连接方式。
(1)多对一模型。将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。此模式中,
用户级线程对操作系统不可见(即透明)。
优点:线程管理是在用户空间进行的,因而效率比较高
缺点:一个线程在使用内核服务时被阻塞,整个进程都会被阻塞;多个线程不能并行地运行在多处理
机上。
(2)一对一模型。将每个用户级线程映射到一个内核级线程。
(3)多对多模型。将n个用户级线程映射到m个内核级线程上。要求m<=n
特点:多对多模型是多对一模型和一对一模型的折中,既克服了多对一模型并发度不高的缺点,又克
服了一对一模型的一个用户进程占用太多内核级线程而开销太大的缺点。此外,还拥有多对一模型
和一对一模型各自的优点。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值