【操作系统】02.进程管理

多道程序系统

多道就是将多个程序同时装入内存,使之并发运行。操作系统也是基于多道产生的,提高了资源利用率和系统吞吐量。

进程

定义

进程是程序的一次执行
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

在引入线程后,线程成为调度的基本单位,进程仍是资源分配的基本单位

进程实体的组成

程序:是一组指令的组合

进程:是程序的一次执行过程,是系统进行资源分配和调度的一个独立单位

进程实体:在程序的一次执行过程,会在内存中产生 程序块、数据块、程序控制块 这三部分,这三部分构成了进程实体,又叫进程影像。

image.png

程序块

一般也被称为代码段。
代码段是进程的程序指令在内存中的位置,包含需要执行的指令集合;

数据块

是进程的操作数据在内存中的位置,包含需要操作的数据集合

程序控制块 PCB

(Program Control Block,PCB)
包含进程的描述信息和控制信息,是进程存在的唯一标志。

image.png

PCB的组织方式

image.png

  • 链接方式
    image.png
  • 索引方式
    image.png

进程的特征

image.png

进程的状态

状态

image.png
除此之外,还有挂起态:就绪挂起和阻塞挂起

image.png

进程状态的转换

image.png

image.png

进程的控制

进程控制主要就是要实现进程状态之间的转换

image.png

image.png

原语

进程控制一般是由OS的内核中的原语来实现的

为了保证PCB的状态和所处队列等信息一致,需要将这些修改操作一气呵成

image.png
image.png

image.png

进程的创建与终止

image.png

image.png

进程的切换

image.png

进程的阻塞与唤醒

image.png

进程的挂起与激活

进程的通信

进程通信是指进程之间的信息交换

image.png

共享存储

image.png

管道通信

image.png

消息传递

image.png

CS系统

主要用户不同计算机之间进程的通信

  • 套接字

  • 远程过程调用和远程方法调用

进程同步

image.png

进程同步与互斥

进程互斥的实现,是在同一个进程中先P后V
进程同步的实现,是在两个进程中先V后P

image.png

image.png

临界资源的访问

image.png
image.png

硬件实现方法

image.png

中断屏蔽方法

image.png

TestAndSet指令

image.png

Swap指令

image.png

信号量机制

image.png

分类

  • 整型信号量
    image.png
    image.png

  • 记录型信号量
    image.png
    image.png
    image.png

信号量的应用

image.png

  • 实现进程互斥

image.png

  • 实现进程同步

image.png

  • 实现进程的前驱关系
    image.png

管程机制

image.png

image.png

image.png

eg. synchronized
image.png

常见问题

生产者与消费者问题

image.png

image.png

image.png

image.png

多生产者与多消费者问题

image.png

image.png

当盘子的容量为1的时候,可以不用写mutex;当盘子的容量大于1的时候,需要mutex

吸烟者问题

image.png

image.png

读者与写者问题

image.png

image.png

image.png

image.png

哲学家进餐问题

image.png

image.png

image.png

image.png

线程

image.png

  • 进程是资源分配的基本单位,线程是调度的基本单位
  • 一个进程可以有多个线程

线程的属性

image.png

线程的实现方式

image.png

Java语言采用的就是多对多模型

处理机调度

当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理 这些任务的顺序,这就是“调度”研究的问题。

image.png

处理机调度的层次

image.png

高级(作业)调度

image.png
高级调度主要用于多批到批处理系统中,而在分时和实时系统中不设置高级调度。

中级(内存)调度

image.png

低级(进程)调度

image.png

调度的准则

  • 周转时间短
  • 响应时间短
  • 系统吞吐量大
  • 资源利用率高
  • 公平
    image.png

进程调度

image.png

进程调度的时机

image.png

内核程序临界区
image.png

普通代码(普通临界区)访问普通临界资源(例如IO设备),可以进行处理机调度
内核程序(内核程序临界区)访问内核数据结构(例如就绪队列),不可以进行处理机调度

进程调度的方式

image.png

进程的切换与过程

image.png

广义进程调度:

  • 选择一个进程(狭义进程调度)
  • 进程切换:
    • 保存原来进程的数据
    • 恢复新进程的数据

调度算法

评价指标

image.png

  • CPU利用率
    image.png

  • 系统吞吐量

image.png

  • 周转时间
    image.png

  • 带权周转时间
    image.png

  • 等待时间

image.png

  • 响应时间

image.png

早期批处理算法

下面三种算法适用于早期批处理算法

image.png

先来先服务

FCFS是最简单的调度算法,该算法既可用于作业调度,也可以用于进程调度
image.png

eg
image.png

短作业优先

image.png

  • 非抢占
    image.png

  • 抢占
    image.png

image.png

注意事项
image.png

高响应比优先

image.png

eg

image.png

现代交互算法

image.png

时间片轮转

image.png
image.png

一般来说,设计时间片时要让切换进程的开销占比不超过1%

eg
image.png

优先级调度

image.png

  • 非抢占式
    image.png

  • 抢占式
    image.png
    注意事项
    image.png

多级反馈队列

image.png

eg
image.png

对于实时调度:

  1. 最早截止时间优先:任务截止时间越早,优先程度越高
  2. 最低松弛度优先:任务越紧急,优先程度越高

死锁

image.png

image.png

产生死锁的条件

image.png

image.png

处理策略

预防死锁

image.png

  • 破坏互斥条件

image.png

  • 破坏不剥夺条件

image.png

  • 破坏请求和保持条件

image.png

  • 破坏循环等待条件
    image.png

避免死锁

安全序列

image.png
image.png

银行家算法

image.png

死锁的检测与解除

image.png

死锁检测算法

image.png

解除死锁

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值