2.1.1 进程的概念和特征
进程的概念
在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程(Process) 的概念,以便更好地描述和控制程序的并发执行。进程最基本的特性:并发性 共享性
进程控制块 (PCB):
为了使并发执行的程序能独立运行,所专门配置的数据结构。
PCB是进程存在的唯一标志
进程的特征
(1)动态性 有着创建、活动、暂停、终止等过程动态性是进程最基本的特征
(2)并发性 多个进程实体同时存在于内存中
(3)独立性 进程实体是一个独立运行、独立获得资源和独立接受调度的基本单位
(4)异步性 进程按各自独立的、不可预知的速度向前推进不确定性
(5)结构性 每个进程每个进程都配置一个PCB对其进行描述。
2.1.2 进程的状态与转换
1)运行态。 进程正在处理机上运行。在单处理机环境下,每个时刻最多只有一个进程处于运行态。
2)就绪态。 进程获得了除处理机外的一- 切所需资源,一旦得到处理机,便可立即运行。系统中处于就绪 状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
3)阻塞态,又称等待态。 进程正在等待某一事件而暂停运行, 如等待某资源为可用(不包括处理机)或等待输入输出完成。即使处理机空闲,该进程也不能运行。
4)创建态。 进程正在被创建,尚未转到就绪态。创建进程通常需要多个步骤:首先申请- -个空白的PCB,并向PCB中填写一些控制和管理进程的信息:然后由系统为该进程分配运行时所必需的资源:最后把该进程转入就绪态。
5)结束态。 进程正从系统中消失,可能是进程正常结束或其他原因中断退出运行。进程需要结束运行时,系统首先必须置该进程为结束态,然后再进一步处理资源释放和回收等工作。
就绪态->运行态:
获得处理机资源(分派处理机时间片)
运行态->就绪态:
时间片用完,更高优先级进程获得处理机
运行态->阻塞态:
进程请求某一资源(如外设)或等待某一事件的发生(如I/O操作的完成)
阻塞态->就绪态:
I/O操作结束或者中断结束
2.1.3 进程控制
任何进程都是在操作系统内核的支持下运行的,是与内核紧密相连的
进程控制的主要功能是对系统中的所有进程实施有效的管理,一般把进程控制用的程序叫做原语
,原语的执行特点是执行期间不准被中断原子性。
(1) 进程的创建:终端用户登陆系统、作业调度、系统提供服务、用户程序的应用请求
(2) 进程的终止:正常结束、发生异常、外界干预
(3) 进程的阻塞和唤醒: 阻塞
等待资源 唤醒
资源到达
(4) 进程切换:时间片用完、主动放弃处理机、被更高优先级的进程剥夺处理机
2.1.4 进程的组织
进程是一个独立运行的单位,也是操作系统进行资源分派和调度的基本单位。它由以下三部分组成
其中最核心的是进程控制块(PCB)。
1.进程控制块
进程创建时操作系统为它新建一个PCB,该结构之后常驻内存,任意时刻都可以存取,并在进程结束的时候删除。PCB是进程实体的一部分,是进程存在的唯一标志
当进程由于某种原因暂停运行时,又需将其断电的处理机环境保存在PCB中
2.程序段
能被进程调度到CPU执行的程序代码
3.数据段
进程对应程序加工处理的原始数据,也可以是程序执行时产生的中间结果或最终结果
2.1.5 进程的通信
进程通信是指进程间的信息交换。 PV操作低级通信方式,高即通信方式是指较高的效率传输大量数据的通信方式。高级通信方法主要有以下三类。
1.共享存储
低级方式: 基于数据结构的共享
高级方式: 基于存储区的共享
2.消息传递
1)直接通信方式:直接把消息挂到接收进程的消息队列
2)间接通信方式:挂到某个中间实体,接收进程找实体接收消息,类似电子邮件。
3.管道通信 利用一种特殊的pipe文件
连接两个进程
缓冲区只允许一边写入,另一边读出
未写满不允许读,未读空不允许写
2.1.6 线程概念和多线程模型
1.线程的基本概念
引入 进程
的目的是为了 更好地使多道程序并发执行
,提高资源利用率和系统吞吐量;
而引入 线程
的目的则是为了 减小程序在并发执行时所付出的时空开销
, 提高操作系统的并发性能。
线程
最直接的理解就是“轻量级进程”,它是一个基本CPU执行单元,也是程序执行流的最小单元。
2.线程与进程的比较
1)调度:在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度
的基本单位,进程是拥有资源
的基本单位。
2)拥有资源:进程是拥有资源的基本单位;线程不拥有系统资源(有一点必不可少的资源)
3)并发性:引入线程的操作系统中,不仅进程之间可以并发执行,而且多个线程之间也可以并发执行。
3.线程的属性
多线程操作系统把线程作为独立运行(或调度)的基本单位
1)线程是一个轻型实体,它不拥有系统资源,但每个线程都应有一个唯一的标识符和一个线程控制块,
线程控制块记录了线程执行的寄存器和栈等现场状态。
2)不同的线程可以执行相同的程序,即同一个服务程序被不同的用户调用时,操作系统把它们创建成不同的线程。
3)同一进程中的各个线程共享该进程所拥有的资源
。
4)线程是处理机的独立调度单位, 多个线程是可以并发执行的。
5)一个线程被创建后,便开始了它的生命周期,直至终止。线程在生命周期内会经历阻塞态、就绪态和运行态等各种状态变化。
4.线程的实现方式
线程的实现可以分为两类:用户级线程和内核级线程
在用户级线程中,有关线程管理(线程的创建、删除和切换)所有工作都由应用程序来完成,内核意识不到线程的存在。
在内核级线程中,线程管理的所有工作都由
**内核
**完成。
5.多线程模型
1)多对一模型。将多个用户级线程映射到一个内核级线程
优点: 线程管理是在用户空间进行的,因而效率比较高。
缺点: 一个线程在使用内核服务时被阻塞,整个进程都会被阻塞;多个线程不能并行地
运行在多处理机上。
2)一对一模型。将每个用户级线程映射到一个内核级线程。
优点: 当一个线程被阻塞后,允许另一个线程继续执行,所以并发能力较强。
缺点: 每创建一个用户级线程都需要创建一个内核级线程与其对应,这样创建线程的开销比较大,会影响到应用程序的性能。
3)多对多模型。将n个用户级线程映射到m个内核级线程上,要求m≤n。
特点:既克服了多对一模型并发度不高的额缺点,又克服了一对一模型的一个用户进程占用太多内核级线程开销太大的缺点。
例题
线程没有独立的地址空间每个进程包含独立的地址空间,地址空间是私有的
如果不是私有的黑客程序将会盗取信息
进程存储映像由:
PCB、程序段、数据段构成
进程 优先级信息在PCB
内存四区
一、栈区
由编译器自动分配释放,存放函数的形参、局部变量等。当函数执行完毕时自动释放。
二、堆区
一般由程序员手动分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收。
三、全局区 对应正文段
用于存放全局变量和静态变量, 里面细分有一个常量区,字符串常量和其他常量也存放在此。该区域是在程序结束后由操作系统释放。
四、代码区
全局变量只对一个进程而言,不同进程不同的全局变量。