2.1、前驱图和程序执行
前驱图:有向无环图,用于描述进程之间执行的先后顺序,节点表示进程或程序段之间执行的先后顺序
程序顺序执行的特征:
①顺序性:程序按规定的顺序执行
②封闭性:单个程序独占全机,执行状态不受外界因素影响
③可再现性:程序经过多次执行后,只要其执行的环境和初始条件相同,都将得到相同的结果
程序的并发执行:采用多道程序技术,将多个程序同时装入内存,使之并发运行
程序并发执行的特征:
①间断性:并发程序之间相互制约
②失去封闭性:多个程序共享全集资源,执行状态受外界因素影响
③不可再现性:程序经过多次执行后,虽然执行时的环境和初始条件都相同,但得到的结果却各不相同
2.2、进程的描述
定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程控制块(PCB):专门的数据结构,与进程一一对应
进程的特征:
①动态性(最基本的特征):生命周期
②并发性:一段时间内同时运行
③独立性:进程实体是一个能独立运行的基本单位,是系统中独立获得资源和独立调度的基本单位
④异步性:按各自独立,不可预知的速度向前推进
进程与程序的区别:
①进程是程序的一个实例,是程序的依次执行
②程序是进程的代码部分
③进程是活动的,程序是静态的
④进程再内存中,程序在外存中
进程的状态及转换
(1)就绪状态
进程处于已经准备好的状态
系统中通常由多个就绪进程,按某种策略排队
(2)执行状态:以获得CPU,正在执行的状态
(3)阻塞状态:正在执行的进程由于发生某事件而暂时无法继续执行的状态
典型事件:请求I/O,申请缓冲区,进行系统调用
根据阻塞原因,设置多个阻塞队列
进程控制块PCB:
PCB是进程的一部分,是操作系统中最重要的记录型数据结构,是进程存在的唯一标志,常驻内存。
PCB的作用:
①作为独立运行基本单位的标志;
②能实现间断性运行方式
③提供进程管理所需要的信息
④提供进程调度所需要的信息
⑤实现与其他进程的同步与通信
(1)进程标识符
进程标识符用于唯一地标识一个进程,一个进程通常有两种标识符:① 内部标识符 ②外部表示法
(2)处理机状态:
处理机状态信息主要是由处理机地各种寄存器中地内容组成的
①通用寄存器 ②指令计数器 ③程序状态字PSW ④用户栈指针
(3)进程调度信息
在PCB中还存放一些与进程调度和进程对换有关的信息
①进程状态 ②进程优先级 ③进程调度所需的其他信息 ④事件
(4)进程控制信息
①程序和数据的地址 ②进程同步和通信机制 ③资源清单 ④链接指针
2.3、进程控制
(1)进程创建
进程创建过程:①申请空白PCB ②分配所需资源 ③初始化PCB ④插入就绪队列
(2)进程终止
引起进程终止的事件:正常结束,异常结束,外界干预
2.4、进程通信
(1)共享通信概念
进程通信是指进程之间的信息交换
低级进程通信:进程的同步和互斥,
效率低 通信对用户不透明
高级进程通信:使用方便,高效地传送大量信息
(2)进程通信的类型
共享存储器系统:
基于共享数据结构的通信方式(效率低),
基于共享存储区的通信方式
管道通信(半双工,单向通信)
管道:用于连接一个读进程和一个写进程以实现它们之间的一个共享文件,又名pipe文件
管道机制的协调能力:互斥,同步,对方是否存在
消息传递系统
①直接通信方式 ②间接通信方式(通过邮箱)
客户机-服务器系统
套接字(Socket) 远程过程调用(RPC)和远程方法调用(RMI,java)
2.5线程的基本概念
引入进程的目的:①使多个程序并发执行
②提高资源利用率及系统吞吐量
进程的2个基本属性:
①进程是一个课拥有资源的独立单位
②进程是一个课独立调度和分配的基本单位
提出线程的目的:
①减少程序在并发执行时所付出的时空开销
②使OS具有更好的并发性
③适用于SMP结构的计算机系统
进程是拥有资源的基本单位(传统进程为重型进程)。
线程作为调度和分派的基本单位(又称为轻型进程)
线程的进程的比较
①调度的基本单位:
在传统的OS中,进程是拥有资源,独立调度和分派的基本单位
在引入线程的OS中,线程作为调度和分派的基本单位,进程作为资源拥有的基本单位
在同一进程中:线程的切换不会引起进程切换,在由一个进程中的线程切换到另一个进程的线程时,将会引起进程切换
②并发性
在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程,也可并发执行
③拥有资源
进程是系统中拥有资源的一个基本单位,它可以拥有资源
线程本身不仅拥有系统资源,仅有一点保证独立运行的资源
允许多个线程共享其隶属进程所拥有的资源
④独立性
同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多
⑤系统开销:
在创建或撤销进程时,OS所付出的开销将远大于线程的开销
线程切换的代价远远低于进程切换的代价
同一进程中多个线程之间的同步和通信也比进程的简单
线程控制块(TCB)
线程标识符,一组寄存器,线程运行状态,优先级,线程专有存储区,信号屏蔽,堆栈指针
2.6线程的实现
(1)内核支持线程KST
在内核空间实现:
优点:
①在多处理机系统中,内核可同时调度同一进程的多个进程
②如一个线程堵塞了,内核可调度其他线程(同一或其他线程)
③线程的切换比较快,开销小
④内核本身可采用多线程技术,提高执行速度和效率
缺点:
①对用户线程切换,开销较大
(2)用户级线程ULT
在用户空间实现
优点:
①线程切换不需要切换到内核空间
②调度算法可以时进程专用的
③线程的实现与OS平台无关
缺点:
①系统调用的堵塞问题
②多线程应用不能利用多处理机进行多重处理的优点
ULT与KST组合方式