操作系统 第二章(1) 进程与线程 操作系统总结
进程与线程
文章目录
一、进程的概念
-
程序:是静态的,是可执行文件,是一系列的指令集合
-
进程:是动态的,是程序的一次执行过程
二、进程的组成
-
操作系统需要对各个并发执行的进程进行管理,管理时所需要的进程自己的信息,都会被保存在 各个进程自己的PCB中 (Process Control Block,进程控制块)
-
进程存在的唯一标志是PCB,当进程被创建时,操作系统为其创建PCB,进程结束时,操作系统 会回收其PCB
-
程序段、数据段、PCB三部分组成了进程实体
-
进程的新定义:进程是进程实体的运行过程,是系统进行资源分配的一个基本单位
-
知识回顾
三、进程的组织
-
操作系统中有许多的PCB,为了对这些PCB进行有效的管理,应当使用适当的方式将其组织起来
-
进程的组成讨论的是一个进程内部的构成问题,进程的组织讨论的是多个进程之间的组织方式问题
-
链接方式
-
索引方式
四、进程的状态与转换
1. 进程的三种基本状态
2. 进程的其他两种状态
3. 进程状态的转换
- 知识回顾
五、进程控制
-
进程控制就是要实现进程状态的转换
-
使用原语实现进程控制,原语具有原子性,原语的执行是一气呵成的,比如:将一个进程从阻塞 队列添加到就绪队列时,修改阻塞队列中此进程的状态为就绪态之后,应当将其从阻塞队列移 至就绪队列,如果不是一气呵成,可能出现状态为就绪态,但仍处于阻塞队列的情况
-
原语是通过关中断指令和开中断指令实现的,如图:
-
进程控制相关的原语
无论哪种原语实现进程控制,所要做的事情有三类:
(1) 更新PCB中的信息
① 修改进程状态标志
② 剥夺进程的CPU使用权之前保存其运行环境
③ 某进程开始运行前恢复其之前的运行环境
(2) 将PCB插入到合适的队列
(3) 分配/回收资源
- 知识回顾
六、进程通信
-
进程通信指的是进程之间的信息交换
-
各进程的内存地址空间相互独立,一个进程不能直接访问另一个进程的地址空间,操作系统提供 了进程之间信息交换的一些方法
-
共享存储
(1) 基于数据结构的共享
如共享数组,此种共享方式速度慢,限制多,是一种低级通信方式
(2) 基于存储区的共享
此种方式共享速度快,是一种高级通信方式
-
管道通信
(1) 管道其实就是一个缓冲区
(2) 管道只能采用半双工通信,如果要实现双向同时通信,必须设置两个管道
(3) 各进程要互斥的访问管道
(4) 管道写满时,写进程将被阻塞,等待读进程将数据读走,管道被读空后,读进程将被阻塞
(5) 管道为空,才允许写,管道为满,才允许读
(6) 数据一旦被读出,数据就从管道中被抛弃,说明读进程最多只能有一个 -
消息传递
进程之间的数据交换以格式化的消息为单位,通过发送消息/接收消息两个原语进行数据交换
(1) 直接通信方式
消息直接挂在接收进程的消息缓冲队列上
(2) 间接通信方式
消息先发送到中间实体(信箱)中
6. 知识回顾
七、线程的概念
-
一个进程有多个线程,从属于同一进程的各个线程共享进程的资源
-
进程是资源分配的基本单位,线程是CPU调度的基本单位
-
进程切换开销大,线程切换开销小
-
线程也有运行态、就绪态、阻塞态
-
线程几乎不拥有资源,只有极少量的资源(TCB(线程控制块)、寄存器信息等)
-
为什么要引入线程?
(1) 进程可以并发执行的基础上,进程内部的线程也可以并发执行,提升了系统的并发度
(2) 如图所示:
八、线程的实现方式
1. 用户级线程
用户级线程是从用户角度能看到的线程,操作系统看不到线程的存在,只可以看到进程,线程 切换在用户态下即可完成,无需操作系统干预,如图:
2. 内核级线程
内核级线程是从操作系统内核能看到的线程,线程的切换必须在核心态下才能完成
3. 两种实现方式的结合
九、多线程模型
1. 多对一模型
2. 一对一模型
3. 多对多模型
- 知识回顾