1.1.1 操作系统的概念,功能
定义
系统资源管理者
向上提供方便易用的服务
具体服务的案例
狭义的用户接口不包含GUI
为什么图示中用户和操作系统有一部分是直接相接的?
用户有两个方式使用操作系统,可以通过GUI直接使用操作系统(在图示上表示为直接相连),也可以通过接口间接使用操作系统(图示上表示为间接接触)。
作为最接近硬件的层次
总结
1.1.2 操作系统的四个特征
特征1------并发
四核CPU只能同时并行运行四个程序(微观),要从宏观上来看同时执行四个以上的程序,就还是需要并发。
特征2------共享
在宏观和微观上同时对资源进行访问的例子:
游戏和音乐同时播放(游戏和音乐这个两个进程同时在访问扬声器,不是交替的)
并发和共享的关系(互为存在条件)
特征3------虚拟
并发与虚拟的关系(没有并发,就谈不上虚拟)
特征4------异步
并发与异步的关系
总结
1.2 操作系统的发展与分类
手工操作阶段
缺点1:用户独占全机(同一个时间,只能有一个人在使用)
缺点2:人机矛盾导致的资源利用率低(当时计算机的造价昂贵,但是在这个过程中使用的时间却很短很短)
批处理阶段------单道批处理系统
改进的方面:
1.磁带最开始接收多个用户的纸袋内容,不再是一个用户独占全机了
2.使用磁带进行读写,快于纸袋机,提升了输入的速度
3.并且有监督程序可以控制作业的输入输出,一道作业执行完以后,不用用户再去输入就可以执行下一道
缺点:内存中仅有一道程序运行
磁带的读写速度比纸袋机快很多
批处理阶段------多道批处理系统
改进方面:CPU在计算第一个作业的时候,输入设备是处于空闲状态的,可以在CPU计算前一道作业的同时使用输入设备进行下一道作业的输入。
缺点:没有人机交互功能,用户提交自己的作业之后就只能等待计算机的处理完成,中间不能控制自己作业的执行,不能调试也无法添加参数。
分时操作系统
改进方面:解决了人机交互问题,允许多个用户同时使用一台计算机
缺点:不能优先处理一些紧急的任务
轮流为每个用户执行一段时间,所以最后宏观上来看,所有用户的输出应该是同时完成的
实时操作系统
改进方面:可以优先处理一些紧急的任务,紧急的任务不需要排队
导弹不实时会偏离轨迹
自动驾驶不实时会发生交通事故
12306的车票更新是实时的,但是可以稍微晚一点,不会造成大的影响。
其他几种操作系统
总结
1.3.1 操作系统的运行机制
程序是如何运行的
这里指的指令是二进制的机器指令
Linux,Windows的cmd,MasOS的小黑框中使用的命令也称为"指令",其实这是"交互式命令接口"
内核程序&应用程序
特权指令&非特权指令
CPU的内核态&用户态
内核态&用户态的切换
总结
1.3.2 中断和异常
中断的作用
没有中断,操作系统内核无法夺回CPU的使用权,就无法切换到下一个应用程序,就无法做到并发。
中断的类型
内中断
外中断
总结
中断机制的基本原理
总结
1.3.3 系统调用
系统调用的定义和作用
系统调用与库函数的区别
为什么系统调用是必须的?
什么功能要用到系统调用?
扩展------Linux的系统调用
系统调用的过程
总结
1.4.1 操作系统体系结构
操作系统的内核
大内核包括对数据结构的操作,微内核只包括对硬件的操作
操作系统的体系结构
微内核涉及到更多的CPU状态转换,频繁的CPU状态转换会降低系统的性能
总结
1.4.2 操作系统的体系结构(新版)
分层结构
每层只能调用相邻的更低的一层提供的接口,不可跨层调用
优点:
1.便于调试和验证,自底向上逐层调试验证,如硬件层,厂家出场的时候就是验证好的
2.容易扩充和维护,各层之间调用接口清晰固定,如在两层之间新增一层是很方便的
缺点:
1.仅可调用相邻低层,难以合理定义各层的边界
两个层之间很难不用到另一个层,如果不是相邻的,再使用的时候就会产生矛盾(不能跨层调用)。
2.效率低,不可跨层调用,系统调用执行时间长
如下面:A不能直接给D传递信息,D也不能直接给A传递信息
必须要A先给B传,B再传给C,C再传给D
模块化
外核
1.5 操作系统引导
1.6 虚拟机
2.1.1 进程的概念、组成、特征
进程的概念
进程的组成
进程的特征
总结
2.1.2 进程的状态与转换,进程的组织
创建态、就绪态
运行态
阻塞态
终止态
进程状态的转换
进程的组织
链式方式
索引方式
2.1.3 进程控制
如何实现进程控制?
在下面的例子,将PCB2的是state设为1和和把它放到就绪队列里面这两件事情必须要是一气呵成的,否则,如果先把state设为1,然后这件事情被终止了,但是此时state为的进程就被放到了阻塞队列里面。
如何实现原语的原子性?
进程控制的相关原语
创建原语
作业:在外存中,还未进入内存投入运行的程序
作业调度:从外存中挑选一个程序投入运行
撤销原语
阻塞原语和唤醒原语
切换原语
程序是如何运行的?---加深理解
总结
2.1.4 进程通信
什么是进程通信?
为什么进程通信需要操作系统支持?
共享存储
涉及到如在同一块区域写东西造成数据覆盖,所以各个进程对共享空间的访问应该是互斥的
消息传递
管道通信
管道通信与共享存储的区别:
共享存储可以在任何一块地方写,也可以从任何一个地方读
管道通信本质上是一个循环队列,只能从前面写,从后面读
总结
2.1.5 线程的概念
什么是线程,为什么要引入线程?
同一个进程中的两个线程可以执行同一份代码,也可以执行不同的代码
引入线程机制后,有什么变化?
线程的属性
2.1.6 线程的实现方式和多线程模型
线程的实现方式
用户级线程(操作系统感知不到它的存在)
内核级线程(操作系统可以感知到它的存在)
多线程模型
一对一模型
多对一模型
多对多模型
总结
2.1.7 线程的状态与转换
线程的状态与转换
线程的组织与控制
SP:堆栈寄存器
2.2.1 调度的概念、层次
调度的基本概念
调度的三个层次
高级调度
低级调度
中级调度
三层调度的联系、对比
补充------进程的挂起态与七状态模型
总结
2.2.2 进程调度的时机、切换与过程、方式
进程调度的时机
进程在访问临界区资源的时候会进行上锁,阻止其他进程访问
普通临界区访问的临界资源不会直接影响到操作系统内核的管理工作,因此在访问普通临界区时可以进行调度与切换
进程调度的方式
进程的切换与过程
总结
2.2.3 调度器和闲逛进程
调度器/调度程序
闲逛进程
o地址指令:永远不需要访问寄存器等,减少能耗
2.2.4 调度算法的评价指标
CPU利用率
系统吞吐量
周转时间
带权周转时间
等待时间
响应时间
总结
2.2.5 调度算法(1)
先来先服务
短作业优先
最短剩余时间优先算法
高响应比优先算法
总结
2.2.6 调度算法(2)
时间片轮转
时间片大小为2
时间片大小为5
一般来说,设计时间片时要让切换进程的开销占比不超过1%
优先级调度
非抢占式
抢占式
多级反馈队列算法
总结
2.2.7 调度算法(3)
多级队列调度算法
2.3.1 进程同步、进程互斥
什么是进程同步?(狭义的)
什么是进程互斥?
进程同步与进程互斥的关系
临界资源(Critical Resource)是指在多进程或多线程环境中,必须互斥访问的共享资源。
临界资源是指在并发环境中,需要被多个进程或线程共享使用的资源,这些资源在同一时刻只能被一个进程或线程访问。临界资源的共享访问如果不进行互斥控制,会导致数据竞争、数据不一致或系统错误。
广义的进程同步包含了进程互斥。进程同步是一个更广泛的概念,而进程互斥是进程同步中的一种特殊情况。为了更好地理解两者的关系,我们可以分别定义它们,并分析互斥在同步中的位置。
1. 进程同步 (Process Synchronization)
进程同步的目标是协调多个进程之间的操作,使它们能够按照特定的顺序或规则进行,以确保程序的正确性和资源的合理利用。进程同步可以包括以下两种情况:
- 协作式同步:用于保证进程之间按特定的逻辑顺序执行,确保数据的一致性。例如,生产者-消费者模型中,生产者需要在缓冲区中有空位时生产,消费者需要在缓冲区有产品时消费。
- 互斥式同步:用于保证在某一时刻,只有一个进程能进入临界区,防止共享资源的并发访问导致数据不一致或破坏。
2. 进程互斥 (Process Mutual Exclusion)
进程互斥是进程同步的一种特殊形式。它专注于保护临界区,确保在某一时刻只有一个进程能够访问共享资源。进程互斥的目的是防止多个进程同时操作同一资源,避免数据不一致和竞态条件。
互斥是进程同步的一个子集,用于解决资源并发访问的冲突问题。
3. 进程同步包含进程互斥的原因
进程同步的概念涵盖了**进程之间的一切协调机制**,不仅包括互斥,还包括其他形式的同步操作,如确保进程按特定顺序执行、解决进程之间的依赖关系等。互斥是进程同步的一种特殊情况,专门解决的是对共享资源的**并发访问问题**。因此,广义的进程同步包含进程互斥。
4. 进程同步与进程互斥的关系
- 进程同步的范围更广,目标是协调进程间的合作、顺序和依赖。
- 进程互斥是进程同步中的一个特例,专门用于管理对共享资源的排他性访问。
例如,信号量可以同时用于进程同步(协调进程间的执行顺序)和进程互斥(确保同一时刻只有一个进程进入临界区)。同样的机制可以起到不同的作用,这也体现了互斥是同步的一部分。
总结
广义的进程同步包含进程互斥。进程同步的目的是协调进程间的操作,确保正确的执行顺序和资源使用,而进程互斥是同步中的一种机制,专门用于解决并发访问共享资源的问题。
总结
2.3.2 进程互斥的软件实现方法
单标志法(违反"空闲让进"的原则)
双标志先检查法(违反"忙则等待"原则)
双标志后检查法
Peterson算法
P0把turn设为1,P1把turn设为0,表示自己优先想让对方使用临界资源