王道-操作系统

print("每天进步一点点")

1.1操作系统的概念

书上的作用:
1.作为计算机系统资源的管理者
2.作为用户和计算机硬件系统之间的接口
3.实现对计算机资源的抽象。
操作系统的概念

1.2操作系统的基本特征

操作系统的基本特征

1.3操作系统的发展和分类

各种类型操作系统想解决的问题及解决方式。
操作系统的发展和分类

1.4 操作系统的运行机制(⭐⭐⭐ 补充)

概念:
①程序的运行:cpu执行一条一条的机器指令的过程。
②内核程序:由许多的内核程序组成"操作系统的内核"Kernel,实现操作系统内核功能。是操作系统最重要、最核心的部分,也是最接近硬件的部分
操作系统作为计算机资源的管理者是在内核实现的。
③应用程序:运行在操作系统之上的,如程序员编写的程序。

④特权指令:操作系统的内核作为"管理者"会让cpu执行某些特权指令。只存在内核程序中。
⑤非特权指令:应用程序只能运行"非特权指令"。
cpu在设计时就划分了特权指令和非特权指令。

⑥cpu区分应用程序和内核程序:
通过PSW程序状态寄存器中的一个二进制位标记cpu处于何种状态,以此来区分应用程序或内核程序。
区分两种程序
⑦cpu实现状态的切换:
cpu程序切换的过程

”“”“”“”“”“巴拉巴拉啊啊啦啦啦啦啦
详细的操作系统启动过程

”“”“”“”“”“”
操作系统的运行机制

1.5 中断和异常(⭐⭐⭐ 补充)

中断和异常
Ⅰ。中断的作用

  1. 一个应用程序一旦上cpu运行,就会一直运行下去,除非发生中断,一旦发生中断,cpu就会立即停止当前的应用程序,转而执行相应的内核程序进行中断信号处理。
  2. 中断会使cpu由用户态转为内核态,是让操作系统内核夺回cpu使用权的唯一方式****
  3. 如果没有中断机制就无法实现多道程序并发
    在这里插入图片描述

Ⅱ.中断的类型:
在这里插入图片描述

内中断:
例子1:试图在应用程序中执行特权指令。
例子2:执行除法指令发现除0
例子3:应用程序请求操作系统的内核服务,此时会执行一条特殊指令(注意不是特权)—陷入指令,以此来引发内部终端信号。

执行 "陷入指令"意味着应用程序主动将cpu的控制权交给操作系统内核。系统调用即是通过"陷入指令"完成的。

外部中断:

  1. 两个应用程序是如何在中断机制的作用下实现并发运行的?
    通过时钟中断实现多道并发。
    时钟中断实现多道并发
  2. 1.初始时处于用户态的cpu执行应用程序1,当执行了两条指令后,时间已经过了50ms,此时时钟部件给cpu发送中断信号。
    此时的中断信号与当前的执行指令是无关的,源于cpu外部)
    2.cpu检测到中断信号时,停止当前程序,转而运行一个内核程序来处理这个中断信号。
    3.操作系统内核决定着另一个应用程序上cpu运行,所以当该内核程序结束后,会让程序2同样运行50ms。
    之后以此往复

例子2:I/O中断 —由输入输出设备发来的中断信号。
如当打印机完成打印工作,向cpu发送一个中断信号。

Ⅲ 中断机制原理:

中断机制原理

1.6系统调用(🍎🍎🍎)

系统调用
Ⅰ.系统调用是操作系统提供给应用程使用的接口,可理解为一终可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
在这里插入图片描述
在这里插入图片描述

  • 应用程序通过系统调用实现对共享资源的互斥共享:

共享资源的互斥实现

Ⅱ.系统调用的过程(⭐⭐⭐)

注意:陷入指令=trap指令=访管指令
系统调用过程
过程:

  • 应用程序在请求操作系统内核服务之前,首先要给cpu传递传参指令给cpu的相应寄存器传递参数
  • 之后执行陷入指令(trape)引发内中断,cpu转而执行相应的中断处理程序–系统调用的入口程序根据寄存器中的参数决定用户需要那种类型的系统调用
  • 然后让该类型的系统调用的处理程序上cpu运行。内核服务结束后cpu转回用户态继续执行应用程序。

”“”“”“”“”“本节最后”“”“补充 linux系统向上提供了哪些系统调用”“”“”“”“”“”

1.7操作系统的体系结构

两种内核的优缺点:
两种内核
微内核在非内核和内核态之间频繁变态…

  • 典型的大内核:Linux、UNIX
  • 典型的微内核:Windows NT

在这里插入图片描述

  1. 操作系统又分为非内核态、内核态。

  2. 内核态又根据是否只保留与硬件直接相关的模块 引出两种结构不同的内核类型。

在这里插入图片描述

第一章总结

总结

第二章

2.1.1 进程的概念、组成、特征

1.程序和进程的区别:

  • 程序:是静态的。放在磁盘里的可执行文件,是一系列指令的集合。

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

  • 进程实体(进程映像): 是静态的。反应进程某一时刻的状态,由 PCB、程序段、数据段 构成。
    同一程序多次执行,会对应多个进程。

2.进程的组成:
进程的组成
另外:
作业调度:让外存的程序调入内存的过程。
进程调度:让内存中的进程上CPU运行。

3.PCB的组成:

操作系统对进程进行管理所需要的信息都存在PCB中。
在这里插入图片描述

2.1.2 进程状态与转化、进程组织

  • 进程PCB中会有一个变量 stats来表示进程当前的状态。

1.进程状态转化:
在这里插入图片描述
另外:
阻塞态 又称 等待态
创建态 ~ 新建态
终止态 ~ 结束态

2.进程的组织: 连接方式、索引方式

2.1.3进程控制

进程控制

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

简化理解:进程控制实现进程状态的转换。

  1. 如何实现进程控制? 用"原语"实现。

  2. 为什么进程控制需要使用"原语"实现 (为啥进程控制要“一气呵成”)?

答:如果不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,影响操作系统进行别的管理工作。

例如:

  1. 如何实现原语的原子性?

使用 两个特权指令:“关中断指令”和“开中断指令”
实现原子性。
在这里插入图片描述
补充:
正常情况下:CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前程序,转而运行处理中断的程序。

(执行了开中断指令后,要转而处理之前没有检查的中断指令)

1. 进程控制相关的原语:

  1. 创建原语:

创建原语

  1. 撤销原语:

在这里插入图片描述

  1. 阻塞原语–唤醒原语
    在这里插入图片描述
  2. 切换原语: 涉及到两个进程的状态转换。
    在这里插入图片描述

原语是如何实现保存运行环境信运行环境(进程上下文)的?

  1. 运行环境信息是什么?

CPU中会设计很多 “寄存器”,用来存放程序运行过程中所需的数据。

运行环境信息:即当前寄存器中保存的一些必要的信息。以免当进程再次上cpu时 信息被覆盖。

  1. 过程:
    在这里插入图片描述

2.1.4 进程通信

  • 进程是分配系统资源的单位,(包括内存地址空间)因此各进程拥有的内存地址空间相互独立。
  • 不同进程的内存地址空间不能相互访问。
  1. 进程通信的三种方式

在这里插入图片描述
共享存储

各进程互斥访问对共享区间。

共享存储
消息传递

  • 进程间的数据交换以格式化的信息(Message)w为单位,进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

直接通信:
接受/发送原语的对象是通信的进程

send/receive(进程,msg)
在这里插入图片描述

信箱通信:

进程可以在系统内核地址空间中申请一个独立的信箱。接受/发送原语的对象是信箱,而不是另一个进程。

send/receive(信箱,msg)
在这里插入图片描述

管道通信
在这里插入图片描述
注:
在这里插入图片描述
在这里插入图片描述

管道通信和共享存储的区别:

  • 通信管道:相当于一个FIFO的循环队列,进程的发送/接受信息必须遵循先进先出的要求。
  • 共享存储: 数据的形式、存放位置只由进程自己决定,发送/接受没有限制。

2.1.5 线程的概念

引入线程:
提高并发度。

1.线程是调度的基本单位,是程序执行流的最小单元。
2.进程是系统资源的分配单位。

  1. 为什么引入线程

在这里插入图片描述

  1. 引入线程的变化

在这里插入图片描述

  1. 线程的属性

在这里插入图片描述

2.1.6 线程的实现方式和多线程模型

在这里插入图片描述
多线程模型
⭐⭐⭐只有内核级线程才是处理机调度的单位。
多对一模型:
在这里插入图片描述
一对一模型:

在这里插入图片描述
多对多模型:
在这里插入图片描述

2.2.1 调度的概念和层次(七层模型⭐⭐⭐)

在这里插入图片描述

  1. 作业的概念:

在这里插入图片描述

  1. 挂起的情况:

在这里插入图片描述
程序出现卡顿时可能就是因为启动的进程处于外存,需要先调入内存再为其分配处理机所以会出现卡顿的情况。

  1. ⭐⭐⭐进程的七状态模型

在这里插入图片描述
只要是挂起说明该进程映像,数据等资源在外存。

  1. 进程创建后可能由于内存没有空间无法调入内存,所以创建态后会进入就绪挂起状态。
  2. 当一个处于运行态的程序下处理机时可能直接调入到就绪挂起态。

4.三层调度:

在这里插入图片描述
内存调度是将 处于外存的挂起的程序调入内存

2.2.2 进程调度的时机、切换与过程

1.进程调度的时机:
1.需要进行进程调度与切换的时机:
在这里插入图片描述

2.不能进行进程调度与切换的时机:

  1. 1.在处理中断的过程中。
  2. 2.进程在 操作系统内核程序临界区
  3. 3.在原子操作过程中。
    在这里插入图片描述
    2.进程调度的方式
    1.非抢占式:在这里插入图片描述
    2.抢占式:
    在这里插入图片描述
    可优先处理优先级更高的程序,也可实现让进程按各个时间片轮转,适用于分时操作系统和实时操作系统。

3.进程切换与过程
在这里插入图片描述

2.2.3 调度算法的评价指标

在这里插入图片描述
1.系统吞吐量:单位时间内完成作业的数量
2.周转时间:作业被提交给操作系统开始作业完成为止这段时间间隔。
在这里插入图片描述
3.带权周转时间必然>=1,对于周转时间相同的作业,带权周转时间越小,该作业时间的等待时间越短。满意度越高
4.等待时间:周转时间-服务时间

 一个作业被提交的一开始是*挂在外存的作业后备队列中*。作业调入内存后,***建立对应的进程,***

在这里插入图片描述
综上可知:如果一个进程创建后,既需要计算,有需要I/O;则⑦等待时间=周转时间-计算时间-I/O时间

作业的实际运行时间一般是不变的,调度算法优化的是作业/进程的等待时间。

2.2.4 调度算法:FCFS、SJF、HRRN

在这里插入图片描述
先来先服务FCFS
在这里插入图片描述
在这里插入图片描述
二、SJF、SRNT之间的区别

(非抢占式)短作业优先SJF、 短进程优先SPF
在这里插入图片描述
(抢占式)SRTN 最短剩余时间优先
在这里插入图片描述

在这里插入图片描述
对上述各种算法计算的结果比较:
          平均等待T      平均周转T    平均带权周转T
FCFS:  4.75       8.75         3.5
SJF:          4          8            2.56
SRNT:       3          7             1.5
z
针对上述那个题目 采用SRNT算法 调度评估指标值是最小的。

优缺点中提到的 SJF 是“最短的”:是不严谨的!!

注意
在这里插入图片描述
更严谨的说法:

  • 在所有进程同时可运行时, 采用SJF算法 的平均等待时间、平均周转时间是最短的。

  • 在所有进程都几乎同时达到时, 采用SJF算法 的平均等待时间、平均周转时间是最短的。

  • 抢占式的短作业/短进程优先调度算法(SRNT) 的平均等待时间、平均周转时间是最短的。

4.如果选择题中遇到 “短作业SJF/SPF 的平均等待时间、平均周转时间是最短的” 这种说法最好判断一下其他选项是否有明显错误。

FCFS 在每次调度的时候考虑的是等待时间,选取一个等待时间最的进行调度,忽略了运行时间。
SJF 考虑的是运行时间,选择运行时间最的的,不利于长作业调度,可能会导致饥饿。

三、高响应比优先 HEEN
既可用于作业调度也可用于进程调度
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
FCFS、SJF、HRRN 不考虑响应时间、事件的紧急程度一般适用于早期的批处理系统。

2.2.5 调度算法:时间片轮转,优先级,多级反馈队列

一、时间片轮转RR

在这里插入图片描述

在这里插入图片描述

时间片太大或者太小的影响:
若上述题目 时间片设置为5,则 算法退化为FCFS。
在这里插入图片描述

在这里插入图片描述

因此时间片不能过大也不能过小

二、优先级调度
在这里插入图片描述

非抢占式:
每次调度选择当前已经到达且优先级最高的进程。
1。当前进程主动放弃处理机时会发生调度。

抢占式版本:
每次调度选择当前已经到达且优先级最高的进程。
1。当前进程主动放弃处理机时会发生调度。
2**.就绪队列发生改变**时也需要检查是否进行抢占。
在这里插入图片描述

在这里插入图片描述
如何合理设计各类进程的优先级:
在这里插入图片描述
偏向于I/O繁忙型的原因:
在这里插入图片描述
这应该说的就是cpu运算速度与存储器的读取速度之间的鸿沟吧…

若采用动态优先级则什么时候调整?
在这里插入图片描述

三、多级反馈队列

2.3.1 进程同步、进程互斥

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏轼'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值