文章目录
- 第一章 引论
- 第 2 章 操作系统接口
- 第三章 进程管理
- 第 4 章 进程调度与死锁
- 第五章 存储器管理
- 5.1 存储管理的主要功能,重定位及其方式(静态重定位和动态重定位)
- 5.2 固定分区基本思想和分区说明表的数据结构,可变分区管理的分配策略、回收处理
- 5.3 分页存储管理中页数计算、虚拟地址寄存器的结构,块长
- 5.4 静态分页基本思想及例 5-3
- 5.5 虚拟存储器、程序局部性原理
- 5.6 请求分页:扩充页表中 P、A、M 位的作用,重定位过程缺页中断、页面调度的关系
- 5.7 FIFO、LRU 置换算法的思想及淘汰页面的计算及命中率(例图 5-26,图 5-27)
- 5.8 二次机会置换算法的思想及淘汰页面的计算及命中率(例图 5-29)
- 5.9 抖动现象、BELADY 现象
- 5.10 两种碎片的主要区别
- 5.11 分段和分页主要区别
- 5.12 段页式存储管理中进程、段表和页表的关系
- 第六章 文件管理
- 第 7 章 设备管理
虽然我知道没人看,但是我还是说一下,都是我乱写的。
第一章 引论
1.1 多道程序设计
在内存中存放多道程序,让这些程序可以并发执行
多道程序设计之后,程序执行就失去了封闭性和顺序性
1.2 并发/并行执行的含义
-
并发:交替执行
-
并行:一起执行
1.3 OS 主要功能
- 用户接口以及作业管理
- 处理器管理
- 存储器管理
- 文件管理
- 设备管理
1.4 三个操作系统的特点
批处理的主要缺点是缺乏交互性
第 2 章 操作系统接口
2.1 OS 内核
2.2 用户接口类型
- 命令接口
- 联机命令接口:又称为交互式命令接口,主要用在分时、实时系统上。用户通过键盘输入命令,向系统提出各种服务请求。系统通过命令解释器,解释并执行命令
- 脱机命令接口:又称为批作业命令接口,适用于批作业处理系统。由一组作业控制命令组成,脱机用户并不能直接干预作业的运行。
- 编程(程序)接口:由一组系统调用组成,用户通过在程序中使用这些系统调用来要求操作系统提供服务。(在 C 语言环境中,系统调用就是一个函数)
2.3 系统调用含义
2.3.1 含义
公共子程序。用户可以在程序中调用一些系统提供的子功能
凡是有用到系统资源的操作都需要通过系统调用,如 I/O 操作这样
2.3.2 分类
- 设备管理
- 文件管理
- 进程控制
- 进程通信
- 内存管理
2.3.3 库函数和系统调用的区别
系统调用是操作系统的一部分,运行在核心态
库函数应用程序的一部分,运行在用户态
第三章 进程管理
3.1 并发执行的工作方式及特征
3.2 进程定义、进程状态及转换
3.2.1 进程的引入
控制程序并发执行,更好的实现操作系统的共享性和并发性
PCB 是进程存在的唯一标志
3.2.2 进程的特征
- 动态性:进程是动态的产生和消亡的。是进程最基本的特征
- 并发性:引入进程的目的就是为了能实现操作系统的并发性。进程的并发性允许多个进程实体同时存在于内存中,能够在一段时间内同时运行。是进程的重要特征
- 独立性:能独立运行
- 异步性:每个进程都独立运行,按各自的速度推进,会导致结果的不可再现性。所以要进行同步操作
- 结构性:程序段 + 数据段 + PCB
3.3.3 进程状态
-
运行态:单处理机模式下,每个时刻最多只能有一个进程处于运行态
-
就绪态:这个进程已经得到了运行的所需要的一切资源。一旦获得处理机就可以马上进入运行态开始运行。
处在这个状态的进程可能有很多个,它们排成一个队列,我们称为就绪队列。
-
阻塞态:这个进程在等待一件事件做完,而在这件事情做完之前。这个进程都处于等待状态。这个件事可以是等待输入/输出结束,也可以是等待一个资源从不可用变为可用。
-
创建态:进程正在被创建,还没到就绪态。
-
结束态:进程要关闭退出时,要先设置为结束态,然后一步步由操作系统收回资源。
3.3.4 进程状态转换
不能从阻塞态直接到运行态。当某一进程由于一些原因变为阻塞态时,当事件完成或操作系统提供服务后,先变为就绪态,加入就绪队列。从运行到阻塞是主动的,但是从阻塞到就绪是被动的。
3.3 信号量机制及实现互斥和同步的方法,生产者/消费者问题并发程序设计
3.3.1 信号量
信号量分互斥量和资源量
互斥量一般设置为 1 ,表示临界区只允许一个进程进入。所以当互斥量为 0 时,表示已经有一个进程进入了临界区,临界区外没有进程。当从 0 变为负数时候,负几就代表有几个进程。(就是绝对值的意思😂) 资源量同理
3.4 进程通信的实现方式
- 共享内存:有一个进程间的共享空间。对其进行读写时候要利用同步互斥操作( pv 这种)
- 消息传递:有直接通信和间接通信两种。邮箱机制。
- 管道通信:
3.5 线程的引入、类型、与进程的关系
3.5.1 线程的引入
减少程序在并发执行中付出的时空开销,提高系统的并发性能,提高资源利用率和吞吐量。
最直接的理解:线程是一个轻量化的进程
线程没有自己的进程空间,它和进程共享进程空间。
3.5.2 与进程的关系
-
调度
线程是 CPU 调度的最小单位,进程是拥有资源的最小单位。在同一个进程中各个线程的切换并不会引起进程的切换,但是在不同进程中的线程切换会引起进程的切换。
-
资源
拥有资源的都是进程,线程是不拥有资源的。
第 4 章 进程调度与死锁
4.1 批处理系统中作业的四个状态(批处理系统作业的四个阶段)
4.2 周转时间、平均周转时间的定义
- 周转时间:作业完成事件 - 作业提交时间
- 平均周转时间:周转时间求和 / 总的作业数
- 带权周转时间:周转时间 / 实际运行的时间
4.3 作业调度基本算法、周转时间、平均周转时间的计算(例 4-1,4-2)
4.3.1 先来先服务 FCFS
- 属于非抢占式算法
- 算法简单,对长作业有利,对短作业不利。
- 有利于 CPU 繁忙型(其更接近长作业),不利于 I/O 繁忙型
4.3.2 短作业优先 SJF
- 抢占式算法,对长作业不利,导致长作业长期不能被调度(饥饿现象)
- 完全没有考虑到作业的紧迫程度
- 平均等待时间,平均周转时间最短
4.3.3 高响应比优先
响应比:作业越短,等待时间越长越好
对短作业的优势不多说。对长作业来说,等的越久响应比越大,可以避免出现饥饿状态。
4.4 进程调度两种方式
- 非抢占式:一旦把 CPU 分配给某个进程,那就要把这个进程执行完才会轮到下一个。
- 抢占式:优先级高的进程可以打断当前的进程
4.5 进程调度基本算法[FCFS、RR(例 4-3),优先级]基本思想
4.5.1 时间片轮转 RR
用于分时处理系统。是绝对可抢占的。
定义一个时间片长度。在该时间片内,系统从就绪队列中拿出一个进程执行,分给它一个时间片,当一个时间片结束时,不管进程做没做完,都要去执行下一个进程。但是如果时间片长度很大,所有进程都能够在一个时间片内执行完时,这个算法就和 FCFS 一样了。但是如果时间片给的很小,就要频繁的切换进程。
4.5.2 优先级
一般来说,I/O 型的优先级要大于一个 CPU 计算型的
4.6 进程死锁产生原因、死锁的解决方法
4.6.1 产生原因
- 系统资源竞争
- 远程推进顺序非法
4.7 四个必要条件与死锁预防(静态分配、按序分配)
4.7.1 四个必要条件
- 互斥
- 不剥夺
- 请求保持
- 循环等待
4.8 安全状态的判断、银行家算法应用(例 4-7)
4.9 死锁判断例子(例 4-9)
第五章 存储器管理
5.1 存储管理的主要功能,重定位及其方式(静态重定位和动态重定位)
5.1.1 重定位
虚拟地址转为物理地址的过程
- 静态重定位:虚拟地址一次性全换为物理地址
- 动态重定位:在运行时再进行地址转换
5.2 固定分区基本思想和分区说明表的数据结构,可变分区管理的分配策略、回收处理
5.3 分页存储管理中页数计算、虚拟地址寄存器的结构,块长
5.4 静态分页基本思想及例 5-3
5.5 虚拟存储器、程序局部性原理
5.5.1 局部性原理
- 时间局部性:就是说程序中的某条指令执行一次之后,不久之后可能再次执行
- 空间局部性:程序访问了某个存储单元,一会可能再访问一次。
5.5.2 虚拟存储器
就是内外存设计了。虚拟的外存。
各种分页式、段页式都是虚拟存储器的实现。
5.6 请求分页:扩充页表中 P、A、M 位的作用,重定位过程缺页中断、页面调度的关系
- P :状态位
- A :一段时间访问该页的次数
- M:是否又被修改过
- 缺页中断:就是因为这种机制,一个进程要访问的页可能不在内存中。这时候就需要把内存设置为阻塞态,然后从外存中找要的那页,找到了也不能直接就往内存里写。那多不礼貌,要看看内存中还有没有地给你这页放,就是有没有空闲的内存块。有的话就整进来,然后这个进程变为就绪态。内存中地不够咋办呢?选个倒霉蛋(某页),直接丢掉,当然不能乱丢,如果这个倒霉蛋在内存中被修改过,那就得丢回外存了。(如果没被修改过,应该就直接丢了,这里我也没理解明白)
5.7 FIFO、LRU 置换算法的思想及淘汰页面的计算及命中率(例图 5-26,图 5-27)
5.7.1 FIFO 算法
老规矩先来一套最简单的先进先出算法。
简单来说就是,最先进的最先滚,队列算法。
5.7.2 LRU 算法
也很简单,就是把最久没有使用的算法换出去。这个是基于堆栈的,每次有一个被访问了,就从丢到栈尾去。栈中不可以重复,每次就把栈顶丢掉就可以了。
5.8 二次机会置换算法的思想及淘汰页面的计算及命中率(例图 5-29)
5.9 抖动现象、BELADY 现象
5.9.1 BELADY 现象
正常来说,给你的物理块越多,你同时在内存中放的页就越多,和外存的置换次数就少。换的次数少了,是不是故障率就少了。对吧。但是 belady 发现,FIFO 算法,就是先进先滚,比较特别。你给他越多的物理块,反而故障数越多。(就是缺页次数变多)差不多知道个意思就行,具体的可以去搜搜看。
5.9.2 抖动现象
这个现象就是最糟糕的现象。刚刚被换进内存的页,又被换出来。或者刚换出来,又要进去。这个时候 CPU 大部分时间都拿来处理交换了,系统效率就低了。一般都是进程要访问的页数大于系统的物理块数时候会出现。
5.10 两种碎片的主要区别
5.11 分段和分页主要区别
5.12 段页式存储管理中进程、段表和页表的关系
第六章 文件管理
6.1 文件系统的主要功能
- 目录管理
- 存储空间管理
- 共享与安全性
- 接口管理:要设计让用户访问修改文件的接口
- 内容组织:包括逻辑结构以及物理结构。逻辑结构是对用户使用文件系统而言,物理结构是对系统管理文件而言。
6.2 文件逻辑结构的分类(流式文件和记录式文件)
6.2.1 流式文件
简单的将数据按顺序组织保存,是字节为单位
6.2.2 记录式文件
- 顺序文件
- 索引文件
- 索引顺序文件
- 散列文件
放一下书上的解释
6.3 三种文件物理结构及其主要特点
6.4 二级目录的名称及结构关系图
就是有个主目录,不放别的,就放不同的用户。
然后每个用户对应自己的单级目录这个
单级目录就是一个文件对应一个 FCB
6.5 二级目录访问过程
先找用户名,再去对应的用户名目录下找文件
6.6 树状目录结构、根目录、路径含义
想象一下访问我的电脑。每次点进一个文件夹,就是进去一个非叶节点
6.7 文件保护、保密的含义
6.8 基于主体权限的存取控制方法
存取控制矩阵
行:文件名
列:用户名
对应的格:该用户对该文件的访问权限