- 2.1进程与线程
进程与程序的区别
程序:静态的,是在磁盘中的可执行文件,一系列的指令集合
进程:动态,程序的一次执行过程
一个程序可以对应多个进程,每个进程都是程序的一个独立执行实例- 2.1.1 进程的概念和特征
- 为实现并发性和共享性,提高资源利用率和系统吞吐量——引入进程概念
- 进程实体【反应进程的某一时刻情况,静态,有时候会将进程实体与进程当作一回事】由程序段、相关数据段、PCB组成
- 进程定义:进程是进程实体的运行过程,是系统进行资源分配的一个独立单位
- 进程特征:(1)动态性(2)并发性(3)独立性(4)异步性(5)结构性
- 2.1.2进程的组成
PCB 是给操作系统用的。程序段、数据段是给进程自己用的。- 程序控制块PCB
- PCB是进程实体的一部分,进程存在的唯一标志
- OS通过PCB控制进程
- 进程ID【PID】:创建进程时,OS为其分配的唯一不重复ID
- PCB的组织方式【为更好的控制和管理进程】
- (1)链接方式【队列】
- (2)索引方式【数组】
- 程序控制块PCB
- 2.1.3进程状态与转换⭐
主要有三种基本状态:运行态、阻塞态、就绪态
进程状态之间的相互转换如上图所示- 运行态:进程占有CPU,在CPU上运行【单CPU上最多只能有一个进程处于运行态】
- 就绪态:获得除了CPU以外的一切资源,等待CPU【用到某种算法】,进程切换该态频繁
- 阻塞态:与就绪态不同,因缺少除了CPU以外的某种资源而等待【要能够区分就绪态和阻塞态】,切换该态次数较少
- 创建态:进程被创建【1.申请空白PCB并填写进程信息 2.分配资源 3.插入到就绪队列—转就绪态】#创建进程
- 终止态:进程撤销,系统回收资源
- 2.1.4 进程控制
也就是进程各种状态之间的转换,其中进程控制使用的程序段叫“原语”【具有原子性,执行一气呵成不可中断;通过关中断和开中断实现原语】- 进程创建--使用创建原语
- 进程可以创建子进程,进程关系为树形结构
- 单词
- 词义
- 助记
- 例句
- 单词
- 如何创建进程?【选择】#创建进程
- 引起进程创建的事件:(1)用户登录(2)作业调度(3)提供服务(4)应用请求
- 进程可以创建子进程,进程关系为树形结构
- 进程终止--撤销/终止原语
- 如何终止进程?(1)找到终止进程的PCB(2)剥夺CPU给其他进程(3)终止所有子进程(4)回收资源(5)删除该PCB
- 引起进程终止的条件:(1)正常结束【进程任务已完成】(2)异常结束【内中断/外异常】(3)外界干预
- 进程的阻塞与唤醒--阻塞原语Block/唤醒原语Wakeup成对使用
- 进程创建--使用创建原语
- 2.1.5进程通信
进程通信就是进程之间的信息交换,分低级通信方式和高级通信方式- 为什么进程通信与OS有关?
各进程拥有的内存地址空间相互独立,一个进程不能直接访问另一个进程的地址空间。OS提供了进程通信的机制
- 高级通信方式
- 共享存储:
- 多个进程对于共享空间的访问是互斥的【可以使用P-V操作】
- 有两种共享存储:(1)基于数据结构的共享【速度比较慢,低级方式共享】(2)基于存储区的共享【传输数据速度比(1)快】
- 两个进程之间共享空间--通过特殊的系统调用实现
- 消息传递:
- 以格式化的消息(Message)为单位,使用“发送消息/接收消息”两个原语进行数据交换。
- 有两种通信方式:(1)直接通信方式【消息发送指定接收的PID】(2)间接通信方式【通过信箱发送信息,不指定接受PID】
- 管道通信:
“管道”是一个特殊的共享文件,又名pipe文件。与共享存储不同:数据流向是单向的,遵循先进先出的原则。- 各进程互斥的访问管道
- 多个进程使用管道通信时,要考虑管道数据一旦读出就会彻底消失这一问题,解决方案:
- 多个写进程一个读进程
- 多个写进程多个读进程,系统会让各个读进程轮流从管道中读数据
- 共享存储:
- 为什么进程通信与OS有关?
- 2.1.6 线程和多线程模型
- 线程基本概念
- 为减小程序在并行执行过程中的时空开销提高OS的并发性能——引进线程概念
- 线程就是“轻量级进程”。一个基本的CPU执行单元,也是程序执行流的最小单位,是被系统独立调度和纷用的基本单位。
- 线程没有系统资源——与同一进程的其他线程贡享进程资源+并行执行
- 线程VS进程
- 线程也支持多处理机系统,多线程进程中可以将多个线程放在不同CPU上运行
- 线程的属性⭐
- 每个线程都有一个线程ID、线程控制块(TCB)
- 有就绪/阻塞/运行三种基本状态
- 同一进程的不同线程间共享进程的资源
- 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
- 同一进程中的线程切换,不会引起进程切换;不同进程中的线程切换,会引起进程切换
- 切换同进程内的线程,系统开销很小;切换进程,系统开销较大
- 线程的实现方式
- 用户级线程--代码逻辑载体
- 概念:(1)“用户级线程”就是“从用户视角看能看到的线程”(2)有关线程管理的所有工作都是由应用程序在用户态完成的,无需操作系统干预。(3)在用户看来,是有多个线程;在操作系统内核看来,并意识不到线程的存在。
- 优缺点:(1)优点:用户级线程切换在用户空间即可完成,不需要切换到核心态,开销小,效率高;用户级线程的实现与操作系统无关(2)缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高;多个线程不可在多核处理机上并行运行。
- 内核级线程--内核级线程是处理机分配的单位。
- 概念:(1)操作系统会为每个内核级线程建立相应的线程控制块TCB,通过TCB对线程进行管理。(2)线程调度、切换等都由内核负责,内核级线程的切换在核心态下才能完成。(3)“内核级线程”就是“从操作系统内核视角看能看到的线程”
- 优缺点:(1)优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。(2)缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,成本高,开销大。
- 组合方式--以上两种线程的结合
- 用户级线程--代码逻辑载体
- 多线程模型
- 多对一模型
- 一对一模型
- 多对多模型
- 线程基本概念
- 2.1.1 进程的概念和特征
2.1进程与线程
最新推荐文章于 2024-05-03 22:17:04 发布