计算机操作系统——内核 中断异常 系统调用 进程转化控制通信 线程 处理机 挂起 进程调度 调度算法 进程同步互斥 信号量机制 同步互斥模式 管程 死锁 预防避免检测和解除

笔记整理来源王道考研视频

第一章

操作系统(Operating System)

负责管理协调硬件,软件等计算机资源的工作,为上层用户,应用进程提供简单易用的服务,是一种系统软件

功能和目标

  1. 资源的管理者

    • 处理机管理
    • 存储器管理
    • 文件管理
    • 设备管理
  2. 向用户提供服务

    • 命令接口(用户直接使用

      • 联机命令接口(交互式命令接口)
      • 脱机命令接口(批处理命令接口)

      区别在于说一句做一句还是说一堆做一堆

    • 程序接口(系统调用,用户通过程序间接使用

    • GUI用户图形界面

  3. 对硬件机器的扩展

特征

并发

指两个或多个事件在同一时间间隔内发生,这些事件宏观上是同时发生的,但微观上是交替发生的

并发性指计算机系统中同时存在着多个运行的程序

并行:指多个事件在同一时刻同时发生


共享

即资源共享,系统中的资源可供内存中的多个并发执行的进程共同使用

  • 互斥共享
  • 同时共享

在这里插入图片描述


并发与共享的关系

并发与共享互为存在条件

  • 如果失去并发性,共享性就失去了存在的意义
  • 如果失去共享性,就无法实现并发

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物,物理实体是实际存在的,而逻辑对应物是用户感受到的

  • 空分复用技术
  • 时分复用技术
    在这里插入图片描述

异步

在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进

显然,如果失去了并发性,则系统只能串行地处理各个进程,每个进程的执行会一贯到底,只有系统拥有并发性,才有可能导致异步性


没有并发和共享,就谈不上虚拟和异步

发展

阶段特点
手工操作阶段用户独占全机,人机速度矛盾导致资源利用率极低
单道批处理阶段缓解了一定程度的人机速度矛盾,CPU仍然有大量时间在等待
多道批处理阶段多道程序并发执行,共享计算机资源,利用率大幅提升 (操作系统正式诞生);没有人机交互功能
分时操作系统以时间片为单位轮流为各个用户服务,但是不能优先处理一些紧急任务
实时操作系统硬实时操作系统:必须在绝对严格的规定时间内完成处理
软实时操作系统:能接受偶尔违反时间规定
能优先响应一些紧急任务

运行机制

两种指令

  • 特权指令:不允许用户使用
  • 非特权指令:

如何判断当前是否可以执行特权指令?

在这里插入图片描述

两种处理器状态

  • 用户态(目态)
  • 核心态(管态)

在这里插入图片描述

两种程序

  • 内核程序
  • 应用程序

内核

内核是计算机上配置的底层软件,是操作系统最基本,最核心的部分

在这里插入图片描述

在这里插入图片描述


中断和异常

本质:发生中断就意味着需要操作系统介入,开展管理工作

在这里插入图片描述

  • 中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权
  • 中断是唯一使用户态–>核心态的途径(通过“特权指令”)

分类

分类标准:按照信号的来源:CPU内部叫内中断,CPU外部叫外中断

在这里插入图片描述

在这里插入图片描述


外中断的处理过程

在这里插入图片描述


系统调用

应用程序通过系统调用操作系统的服务。服务中的各种共享资源都由操作系统统一掌管,因此在用户程序中凡是与资源有关的操作(如存储分配,I/O操作,文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。

系统调用需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行

在这里插入图片描述


系统调用的过程

在这里插入图片描述

  • 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
  • 发出系统调用是在用户态,而对系统调用的相应处理在核心态进行
  • 陷入指令是唯一一个只能在用户态执行,而不可能在核心态执行的指令

第二章

进程

定义,组织,特征

进程实体(静态)

程序段,数据段,PCB(进程控制器,存放一些描述进程的信息)三部分组成了进程实体(进程映像),一般情况下,我们把进程实体就简称为进程。

所谓创建进程就是创建进程实体的PCB,撤销进程就是撤销进程实体的PCB

PCB是进程存在的唯一标志!
在这里插入图片描述

在这里插入图片描述

进程(动态)

进程是进程实体的运行过程

在这里插入图片描述


组织

链接方式

在这里插入图片描述

索引方式

在这里插入图片描述


特征

  1. 动态性(最基本的特征)
  2. 并发性
  3. 独立性(是资源分配,接受调度的基本单位)
  4. 异步性
  5. 结构性

在这里插入图片描述


进程的状态与转化

三种状态

  1. 运行态
  2. 就绪态(拥有了除处理机之外的所有需要的资源)
  3. 阻塞态/等待态

在这里插入图片描述


另外两种状态

  1. 创建态:进程正在被创建,操作系统为进程分配资源,初始化PCB
  2. 进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB

状态的转化(重点)

在这里插入图片描述

  • 运行态–>阻塞态是进程自身的主动行为
  • 阻塞态–>就绪态是被动的
  • 不能由阻塞态直接转化为运行态
  • 也不能由就绪态直接转化为阻塞态

在这里插入图片描述


进程控制

在这里插入图片描述

原语

在这里插入图片描述

原语执行不可中断

在这里插入图片描述


进程通信

进程之间的信息交换

  1. 共享存储
  • 基于数据结构的共享
  • 基于存储区的共享

在这里插入图片描述

  1. 管道通信

在这里插入图片描述

  1. 消息传递

在这里插入图片描述


线程

线程是一个基本的CPU执行单元,也是程序执行流的最小单位,引入线程之后,不仅是进程之间可以并发,进程内的线程也可以并发

引入线程之后,进程只作为除CPU之外的系统资源的分配单元

引入线程带来的变化

在这里插入图片描述

  • 线程是处理机调度的单位,进程是资源分配的单位

线程的属性

在这里插入图片描述


线程的实现方式

用户级线程(用户态)

在这里插入图片描述

内核级线程(核心态)

在这里插入图片描述

组合

  • 重点:操作系统只看得见内核级线程,因此只有内核级线程才是处理机分配的单位

在这里插入图片描述

多线程

多对一:一个线程阻塞会导致整个进程都阻塞

在这里插入图片描述


一对一

在这里插入图片描述


多对多

在这里插入图片描述

处理机调度

高级调度/作业调度

在这里插入图片描述

中级调度/内存调度

在这里插入图片描述

低级调度/进程调度

在这里插入图片描述

总结

在这里插入图片描述

挂起

在这里插入图片描述

进程调度

时机

在这里插入图片描述

例题

在这里插入图片描述


方式

在这里插入图片描述


进程切换

在这里插入图片描述


调度算法

评价指标

  1. CPU利用率
    利 用 率 = 忙 碌 的 时 间 / 总 时 间 利用率=忙碌的时间/总时间 =/

  2. 系统吞吐量
    吞 吐 量 = 单 位 时 间 内 完 成 作 业 的 数 量 吞吐量=单位时间内完成作业的数量 =

  3. 周转时间
    周 转 时 间 = 作 业 被 提 交 到 作 业 完 成 的 时 间 间 隔 周转时间=作业被提交到作业完成的时间间隔 =
    在这里插入图片描述

    带权周转时间
    带 权 周 转 时 间 = 作 业 周 转 时 间 / 作 业 实 际 运 行 的 时 间 带权周转时间=作业周转时间/作业实际运行的时间 =/
    在这里插入图片描述

  4. 等待时间

    在这里插入图片描述

  5. 响应时间

    指用户提交请求到首次产生响应所用的时间


先来先服务(FCFS)

在这里插入图片描述

在这里插入图片描述

短作业优先(SJF)

在这里插入图片描述

非抢占式

在这里插入图片描述

抢占式(最短剩余时间优先算法)

在这里插入图片描述

注意

在这里插入图片描述


高响应比优先(HRRN)

在这里插入图片描述

在这里插入图片描述


时间片轮转调度算法

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

时间片不能太大,会退化为先来先服务算法,会增大进程响应时间

时间片不能太小,进程切换过于频繁

优先级调度算法

在这里插入图片描述

非抢占式

在这里插入图片描述

抢占式

在这里插入图片描述


在这里插入图片描述


多级反馈队列调度算法

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


进程同步,互斥

在这里插入图片描述

进程互斥的软件实现方法

单标志法

在这里插入图片描述

在这里插入图片描述

单标志法可以实现同一时刻最多允许一个进程访问临界区

违背“空闲让进”原则


双标志先检查法

在这里插入图片描述

双标志后检查法

在这里插入图片描述

Peterson算法

在这里插入图片描述

解决了进程互斥问题,遵循了空闲让进,忙则等待,有限等待三个原则,但是依然没有遵循让权等待原则

进程互斥硬件实现方法

中断屏蔽

在这里插入图片描述

TestAndSet指令

在这里插入图片描述

Swap指令

在这里插入图片描述

信号量机制

整型信号量

在这里插入图片描述

记录型信号量(重点)

  • S->value的初值表示系统中某类资源的数目
  • 每次wait操作,意味着进程请求一个单位的该类资源,使系统中可供分配的该类资源的数量减少一个
  • S->value<0时,表示该类资源分配完毕,因此进程调用block原语进行自我阻塞,放弃处理机(可见该机制遵循了“让权等待”准则),此时S->value表示已经阻塞的进程数量
  • 每次signal操作表示执行进程释放一个单位的该类资源,调用wakeup原语唤醒等待的进程

在这里插入图片描述


总结

在这里插入图片描述

信号量机制实现进程互斥

在这里插入图片描述

信号量机制实现进程同步

在这里插入图片描述

实现进程的前驱关系

在这里插入图片描述

问题

生产者—消费者模式

  • 如果说有两个生产者进程对同一个缓冲区进行操作时(可能会出现数据覆盖),各进程必须互斥的访问
  • 生产者的操作和缓冲区的状态的关系是同步关系

在这里插入图片描述

实现同步和互斥

  • 实现互斥是在同一进程中进行一对PV操作
  • 实现同步是在其中一个进程执行P,另一个进程执行V

在这里插入图片描述

改变位置

  • 实现互斥的 P 操作一定要放在实现同步的 P 操作之后,否则可能会出现“死锁

    生产者等待消费者释放空闲缓冲区,而消费者又在等待生产者释放临界区

  • V操作顺序可以调换

在这里插入图片描述

在这里插入图片描述


多生产者—多消费者模式

问题
在这里插入图片描述


实现1

在这里插入图片描述

实现2

在这里插入图片描述


在这里插入图片描述

缓冲区大于1,就必须专门设置一个互斥信号量来保证互斥访问缓冲区


在这里插入图片描述


吸烟者问题

问题

在这里插入图片描述

实现

在这里插入图片描述


读者—写者问题

问题

在这里插入图片描述

在这里插入图片描述

实现

在这里插入图片描述


在这里插入图片描述

哲学家进餐问题

问题

在这里插入图片描述

实现

在这里插入图片描述


仅当一个哲学家左右两支筷子都可用时才允许他抓起筷子

在这里插入图片描述


总结

在这里插入图片描述

管程

信号量机制存在编写程序困难,易出错的问题

管程组成

  1. 管程的名称
  2. 局部于管程的共享数据结构的说明
  3. 对该数据结构进行操作的一组过程
  4. 对局部于管程的共享数据设置的初始值的语句

管程特征

  1. 局部于管程的数据只能被局部于管程的过程访问
  2. 一个进程只有通过调用管程的过程才能进入管程访问共享数据
  3. 每次仅允许一个进程在管程内执行某个内部过程
  4. 各外部进程/线程只能通过管程提供的特定“入口”才能访问共享数据

在这里插入图片描述

引入管程的目的就是更方便的实现进程互斥和同步

在这里插入图片描述


死锁

死锁,饥饿,死循环的区别

在这里插入图片描述

死锁的产生条件

注意:发生死锁时一定有循环等待,但是发生循环等待时未必死锁

在这里插入图片描述

发生死锁的情况

在这里插入图片描述

处理策略

  1. 预防死锁
    • 破坏死锁产生的四个必要条件的一个或多个
  2. 避免死锁
    • 用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)
  3. 死锁的检测和解除
    • 允许死锁的发生,不过操作系统会负责检测出死锁的发生,然后采取某种措施解除死锁

预防死锁

破坏互斥条件

在这里插入图片描述

破坏不剥夺条件

在这里插入图片描述

破坏请求和保持条件

在这里插入图片描述

破坏循坏等待条件

在这里插入图片描述

避免死锁

安全序列

如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态,当然,安全序列可能有多个

在这里插入图片描述

银行家算法

在这里插入图片描述


在这里插入图片描述

检测和解除

死锁的检测

在这里插入图片描述

算法

依次消除与不阻塞进程(不阻塞进程是指其申请的资源还足够的进程)相连的边,直到无边可消

在这里插入图片描述


死锁的解除

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值