第二章 进程与线程
一、进程与线程
1.进程的概念
程序:是静态的,就是个存放在磁盘里的可执行文件,如:QQ.exe。
进程:是动态的,是程序的一次执行过程,如:可同时启动多次QQ程序
引入进程的概念,以便更好地描述和控制程序的并发进行,实现操作系统的并发性和共享性(最基本的两个特征)
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
PCB是进程存在的唯一标志:(进程控制块)
操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。

进程的组成:

PCB是给操作系统用的,程序段、数据段是给进程自己用的
进程的特征:

2.进程的状态转换
进程的状态:

一个进程从运行态变成阻塞态是主动的行为,而从阻塞态变成就绪态势别动的行为,需要其他相关进程的协助。
进程的组织方式:

总结:

3.进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简化理解:反正进程控制就是要实现进程状态转换

在操作系统,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,是一个不可分割的基本单位。(原子性)

进程的创建:

进程的终止:

进程的阻塞和唤醒:

进程的切换:

总结:

如何实现:

4.进程通信
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。各个进程可使用操作系统内核提供的同步互斥工具(如P、V操作)
共享存储:

消息传递:

- 直接通信方式:

- 间接通信方式:(信箱)

管道通信:

- 写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据
- 读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据
总结:

5.线程和多线程模型
引入线程的原因:

引入线程后的变化:(与进程比较)

线程的属性:

线程的实现方式:(以下三种)
用户级线程:
内核级线程:
组合方式:上述两种方式的结合
多线程模型:
- 多对一

- 一对一

- 多对多

总结:

线程的状态转换:(大致与进程相似)

二、处理机调度
1.调度的概念、层次
调度:当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。
调度的三个层次:
高级调度(作业调度)。按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。
低级调度(进程调度/处理机调度)—— 按照某种策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。
中级调度(内存调度)——按照某种策略决定将哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。
联系、对比:

总结:

2.调度的目标
即调度算法的评价指标
CPU利用率:

系统吞吐量:

周转时间:


等待时间:

响应时间:响应时间,指从用户提交请求到首次产生响应所用的时间。
3.进程调度的时机
即切换与过程调度方式
临界区:

进程调度时机:

进程调度方式:

进程切换以及过程

4.调度器、闲逛进程
调度器:

调度程序的处理对象:

闲逛进程:

5. 调度算法
先来先服务:

短作业优先:


高响应比优先:

三者对比:

时间片轮转:

优先级调度:

多级反馈队列调度:

三者对比:

多级队列调度算法:

三、同步与互斥
1. 进程同步与互斥


2.进程互斥的实现
软件实现:

硬件实现:
中断屏蔽方法:

TestAndSet指令:

Swap指令:

3.互斥锁


4.信号量机制

整型信号量

记录型信号量

总结

信号量的值 = 这种资源的剩余数量(信号量的值如果小于0,说明此时有进程在等待这种资源)
- P( S ) —— 申请一个资源S,如果资源不够就阻塞等待
- V( S ) —— 释放一个资源S,如果有进程在等待该资源,则唤醒一个进程
实现进程互斥:

实现进程同步:

总结:

5.管程


6.经典问题
生产者消费者问题:

多生产者多消费者问题:

吸烟者问题:

读者写者问题:

哲学家进餐问题:

四、死锁
1.概念

2.预防死锁
破坏死锁产生的条件
3.避免死锁
安全序列

使用银行家算法

4. 检测和解除死锁
死锁的检测:

死锁的解除:

主要参考:王道考研课程
后续会持续更新考研408部分的学习笔记,欢迎关注。
github仓库(含所有相关源码):408数据结构笔记



















