灌水
第一章 绪论
1.1 操作系统
操作系统的概念:控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件,是用户与计算机之间的接口。
用户与计算机之间的接口:
系统软件:
操作系统的上层为应用软件,下层为硬件。
控制和管理资源:
文件资源,I/O资源,内存资源等。
扩充机器:
操作系统的基本特征:
并发:并行性是指两个或多个事件在同一时刻发生;并发性是指两个或多个事件在同一时间间隔发生。
共享:指系统中的资源可供内存中多个并发执行的进程共同使用。
两种资源共享方式:
互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。
同时共享方式:系统中的某些资源,允许一个时间段内有多个进程“同时”对它进行访问。
虚拟:指通过某种技术把一个物理实体变为若干个逻辑上的对应物。
异步:
1.2 操作系统的发展过程
人工操作:
缺点:(1)用户独占全机。(2)CPU等待人工操作。
脱机输入/输出:
单道批处理系统:
多道批处理系统:
分时系统:
实时系统:
例题
1.3 操作系统的运行环境
1.3.1 运行机制
内核程序和应用程序(两个程序)。
内核态和用户态(两个状态):
如何得知处于什么状态:
两个状态如何切换(3个都是由用户态转为内核态、其本质都是中断):
a.系统调用 b.异常 c.外围设备的中断
内核态->用户态:一条修改PSW的特权指令。
特权指令和非特权指令(两个指令):
1.3.2 中断的分类
外中断称为“中断”,内中断称为“异常”。
以下为“异常”:
故障:
除数为0的故障:
页故障:
陷阱(类似DEBUG):
终止:
1.3.3 系统调用概念
系统调用过程:
1.4 操作系统的设计
微内核OS结构:
微内核OS结构的功能:
例题
和I/O、处理机、文件等资源相关的操作一定是与内核态有关
1.5 操作系统的启动
1.6 虚拟机
第二章 进程管理
2.1 进程的概念和特征
进程的概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
程序并发的特征:(1)间断性(2)失去封闭性(3)不可再现性
进程的特征:
(1)结构特征:程序段、数据段、PCB三部分组成了进程实体
PCB是进程存在的唯一标志:
(2)动态性
动态性表现在:“它由创建而产生,由调度而执行,由撤销而消亡”。进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。
(3)并发性
指多个进程同存于内存中,且能在一段时间内同时运行。程序(没有建立PCB)是不能并发执行的。并发是多个进程轮换交替执行,而并行是同时执行。
(4)独立性
(5)异步性
2.1.1 进程控制块的组织方式
2.1.2 进程和程序的关系
2.2 进程的状态和切换
创建:
就绪:
执行:
阻塞:
终止:
2.2.1 进程的切换
例题
读磁盘完成:表明进程所等待的磁盘资源已获得,因此需要从阻塞状态变为就绪状态,选A
D
2.3 进程控制
进程图:父进程可以创建子进程,子进程也可创建其子进程
进程控制原语:
进程创建:
进程终止:
正常结束、外界干预、异常终止
终止过程
进程阻塞:
阻塞过程:
进程唤醒:
进程挂起:
进程从内存到磁盘
进程挂起过程:
进程激活:
例题
用户登陆成功和启动程序执行需要用到PCB而设备分配需要设备分配表,因此选C
B
D
C
A
2.4 进程同步
资源竞争出现的问题:
临界区:
2.4.1 软件实现
单标志法:
双标志检查:
前检查:
后检查:
peterson:
2.4.2 硬件实现
中断
TestAndSet
Swap
2.5 进程同步机制
P操作:资源用一个则资源数减一
V操作:资源释放一个则资源数加一
整型信号量:
记录型信号量:
互斥信号量
2.5.1 前驱等待
例题
C
用PV操作不是用信号量
A
2.6 管程机制
为什么需要管程:
管程的定义:
管程的组成:
管程类似于JAVA中的setter和getter方法,只能通过这些方法去操作和使用资源:
防止A进程只需A资源不需B或C资源,但因得不到满足而阻塞,管程引入了条件变量(一个资源一个条件变量)
阻塞时:
管程的特性:
2.6.1 管程与进程对比
设置进程的目的在于实现系统的并发性,而管程的设置则是解决共享资源的互斥使用问题
例题
管程中的signal操作为唤醒进程,若没有阻塞进程则无事发生;而进程的V操作无论有没有阻塞进程都会使信号量加1(s=s+1)
2.7 锁机制
概述:
锁的本质;
2.7.1 锁的分类
重量级锁(悲观锁):获取不到锁就马上进入阻塞状态的锁,我们称之为重量级锁。
自适应自选锁:能够根据线程最近获得锁的状态来调整循环次数的自旋锁,我们称之为自适应自旋锁。
轻量级锁(乐观锁):
偏向锁(超乐观锁):
乐观锁和悲观锁:
互斥锁:
perterson锁:
Barkey锁(轮询):
2.8 进程通信
2.8.1 通信的方式
共享内存:
消息队列:
1) 直接通信方式(socket编程)
2) 间接通信方式
3) 管道
半双工:同一时刻只能读或写
例题
C
2.9 线程与进程
线程的引入:
线程的状态参数:
2.9.1 进程与线程的区别
2.9.2 线程的实现
用户级线程:
内核支持线程:
一对一模型:
多对多模型:
例题
A:用户级线程不需要;B:反了;C:正确;D:进程拥有,线程调度
B
D
D;凡是进程内某一线程拥有的其他线程不能共享
第三章 处理机管理
3.1 调度的层次
高级调度(作业调度):
中级调度(内存调度或交换调度):
低级调度(进程调度):
三种调度算法的关系和比较:
3.1.1 调度的方式
非抢占式优先权调度算法:
抢占式优先权调度算法:
3.1.2 调度的时机
3.1.3 调度的实现方式
根据等待事件的不同放入不同的阻塞队列中(二级调度)
三级调度
3.2 调度的准则
周转时间:
带权周转时间:
平均周转时间:
3.3 调度算法
3.3.1 先来先服务
会画表格
3.3.2 短作业优先
注意到达时间
3.3.3 优先级
3.3.4 高响应比优先
响应比=(等待时间+服务时间)/服务时间或周转时间/服务时间
3.3.5 时间片轮转
3.3.6 多级反馈队列
设置优先级逐渐降低的多个就绪队列
3.3.7 总结
3.4 进程调度的上下文切换机制
3.4.1 发生进程上下文切换的场景
发生进程调度会引起进程上下文切换
3.4.2 饥饿现象
当优先级固定在某一个标准时会出现饥饿现象。
例题
B
B
B
D
B
A
A
D
C
P2:15+24
P3:1+24+18+36
P1:1+24+36+30+12
(P1+P2+P3)/3=C
算出周转时间和带权周转时间
3.5 死锁的概念和性质
3.5.1 死锁产生的必要条件
3.6 死锁的处理策略
3.6.1 死锁预防
破坏请求保持条件
破坏不可抢占
破坏循环等待
给资源按顺序标号,只有获得了1号资源后才能获得2号资源,以此类推
3.6.2 安全状态
3.6.3 死锁避免
银行家算法
预分配过程:
安全性算法:
3.6.4 死锁检测
指出分配,指向请求
给某个节点全部资源后将其请求边和分配边删掉,据此所有结点没边了则说明无死锁。
3.6.5 死锁解除
例题
B
B
B
死锁预防会限制用户申请资源的顺序;B
B
不是,还剩有资源
第四章 内存管理
4.1 内存的基础知识
4.2 内存管理的基本概念
逻辑地址(LA):
物理地址(PA):
内存映射:
4.2.1 内存保护
上下限寄存器:进程在申请资源时会检查资源是否在内存的上下限中,若不在则会抛出内存越界错误。
基址 限长寄存器:
4.2.2 内存分配和回收
内存会被分为很多区域:
4.3 程序的运行过程
4.3.1 程序的运行过程
4.3.2 链接方式
- 静态链接
- 装入时动态链接
- 运行时动态链接
4.3.3 装入方式
- 绝对装入方式
绝对装入只适用于单道程序环境。
程序中使用的绝对地址,可在编译或汇编时给出,也可由程序员赋予。通常情况下都是编译或汇编时再转换为绝对地址。
- 可重定位装入(静态重定位)
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。
作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。
- 动态运行时装入
例题
D
B
编译形成逻辑地址、装载形成物理地址
寄存器(硬件机构)给出个上下界,以保证进程空间不被非法访问。
4.4 连续内存管理方式(静态)
4.4.1 连续分配方式
内外碎片:
4.4.2 单一分配方式
4.4.3 固定分区分配
4.5 动态分区分配方式
按需分配
4.5.1 动态分区分配算法
有外无内,有内无外
4.5.2 首次适应算法
4.5.3 循环首次适应算法
与首次适应算法差别为:分配空间从上一次分配的地址开始分
4.5.4 最佳适应算法
会存在大量的外部碎片
4.5.5 最坏适应算法
与最佳适应算法相反
(PS:释放的顺序?)
4.5.6 回收内存
例题
4.6 基本分页内存管理方式
进程进行分页,内存空间进行分块
实现将连续的页分到不连续的块中
4.6.1 分页逻辑地址结构
页面大小类比xy轴,页面个数类比z轴,好比一本书
由地址得页号和位移量
4.6.2 如何映射到内存块中
每一个进程对应一张页表;页表信息常驻内存;页表内的每一项其长度是相同的
页表的本质是一个大数组,页号是数组下标,页表项是数组元素,其大小是块号。
4.6.3 地址转化过程
地址的变换过程:
从这个过程中,可以看到,处理器每访问一个再内存中的操作数,就要访问两次内存:
第一次用来查找页表将操作数的逻辑地址变换为物理地址;
第二次完成真正的读写操作。
例题
4.6.4 具有快表的地址转化过程
将一些常用的页表(页号和块号)放入CPU中,避免访存(因为页表在CPU中)
4.7 基本分段内存管理方式
4.7.1 分段的地址结构
4.7.2 段表
4.7.3 地址变化过程
4.7.4 分段与分页的区别
4.7.5 例题
B
4.8 虚拟存储器的基本概念
4.9 请求分页存储管理
4.9.1 请求分页中的页表机制
4.9.2 缺页中断
缺页中断与一般中断的区别
4.10 页面置换算法
4.11 页面分配和调入