操作系统学习笔记
来源:互联网 发布:西贝柳斯 Mac 软件下载 编辑:程序博客网 时间:2024/06/06 02:57
第一二章
- 明确操作系统的作用
- 明确操作系统包括哪些功能
- 明确用户模式和内核模式的概念及作用
- 内核模式拥有更高的权限
- 用户模式通过陷阱或中断进入内核模式
- 了解操作系统提供的服务有哪些
- 明确系统调用的工作机制
- 程序员更偏爱使用api
- 系统调用在内核下运行
- 明确操作系统的结构有哪些,各自优缺点
- 简单结构:没分层易出错
- 分层方法:有分层
- 微内核:得到更小的基本内核,便于os扩展
- 模块:面向对象,内核的核心部件是分开的,通过接口通信,可动态加载给内核
- 了解虚拟机及优点
- 保护系统资源
- 在不干扰操作系统的情况下进行系统开发
第三章
- 并发,并行,顺序执行
- 进程的概念
- 程序在执行中
- 一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程,是系统进行资源分配和调度的独立单位
- 进程引入的目的:为了实现程序并发执行,提高资源利用率,系统吞吐率量
- 进程组成:代码段,数据段,程序计数器,堆栈
- 进程的特征:结构特征,动态性,并发性,独立性,异步性
- 进程和程序的区别:
- 进程的五种状态:新的,就绪,运行,等待,终止
- PCB
- 进程的唯一标识
- 记录了操作系统描述进程和控制进程的全部信息
- PCB和进程是一一对应的
- 上下文切换:保存老进程的状态,加载新进程的状态,造成额外的开销
- 作业队列:保存在系统的所有进程
- 长期,中期,短期调度
- 三者区别在于频率
- 进程间通信
- 共享内存
- 消息传递
第四章
- 线程引入的目的:减少进程切换和创建的开销,节约资源和提高执行效率
- 进程作为资源的拥有者,线程作为调度的基本单位
- 线程拥有:程序计数器,寄存器,栈
- 对等线程共享:代码段,数据段,操作系统资源
- 用户级线程和核心级线程
- 线程的调度和切换时间
- 系统调用
- 线程执行时间
- 多线程模型
- 多对一
- 线程管理由线程库在用户空间进行,效率高
- 一个线程阻塞调用,整个进程阻塞
- 不能并行运行在多处理器上
- 一对一
- 能并行运行在多处理器上
- 创建一个用户级线程就要创建一个内核线程
- 多对多
- 开发人员可以创建任意多的用户线程,并且相应内核线程可以并发在多处理器上执行
- 当一个线程进行阻塞时,内核调另一个线程来执行
- 多对一
- 线程库:为程序员创建和管理线程的api
- 线程池:建一定数量的线程放在池中等待工作
- 比创建新线程更快
- 限制了可用线程的数量
第五章
- 进程执行由CPU执行和I/O等待周期组成,进程在这两个状态之间切换
- I/O约束程序具有很多短CPU区间,CPU约束程序由少量唱的CPU区间
- 就绪队列中的记录通常为PCB
- CPU调度决策发生时机
- 当一个进程从运行到等待
- 从等待到就绪
- 从运行到就绪
- 终止
- 1和4是非抢占
- 2和3是抢占
- 分配程序
- 切换上下文
- 切换到用户模式
- 跳转到用户程序合适位置,以重新启动程序
- 分派延迟
- 调度准则
- CPU使用率
- 吞吐量:单位时间内所完成进程的数量
- 周转时间:从进程进入就绪队列到最终完成的时间
- 等待时间:在就绪队列中等待的时间
- 响应时间:从提交请求到第一次响应的时间
- 调度算法
- FCFS
- 周转时间和响应时间无法保证
- 对短作业不利
- SJF
- 需要事先知道每个作业所需的处理机的时间
- 可能“饿死”
- 偏袒短作业,不利于分时系统
- 抢占的SJF(SRT)
- SRT不像FCFS偏袒长程序,也不像轮转法有额外中断,减少了开销
- 记录过去时服务时间,增加了开销
- 从周转时间看,比SJF有更好的性能
- 最高响应比(HRB):1+等待时间/服务时间
- 2、3、4都是优先级调度
- 饥饿:低优先级进程可能永远无法得到执行
- 老化:饥饿的解决方案,随着时间增加进程优先级
- 轮转法(RR): 基于FCFS的根据时间片来抢占的算法
- 时间片的选择:
- 过长:沦为FCFS
- 过短:增加上下文切换次数,增加开销
- 占用CPU先后及长短公平
- 时间片的选择:
- FCFS
- 非对称多处理:一个处理器处理所有系统活动,其他处理器只执行用户代码
第六章
- 临界资源
- 多个进程争着用一个共享资源
- 任何时刻,最多只能有一个进程在使用该资源
- 一段可能对共享数据进行修改的代码
- 临界区三大要求
- 互斥
- 前进
- 优先等待
- 避免忙等的P、V操作
- 同步操作不一定成对出现
- 互斥P操作紧邻临界区
第七章
- 死锁:因竞争资源而无限等待
- 死锁产生原因
- 资源不足
- 进程推进速度不当
- p操作顺序不当
- 进程按申请,使用,释放的顺序使用资源
- 死锁四个必要条件
- 互斥
- 占有并等待
- 不可抢占
- 循环等待
- 资源分配图
- 无环->不死锁
- 有环
- 单个资源->死锁
- 多个资源->可能死锁
- 死锁处理方法:
- 死锁预防
- 互斥:共享资源不是必须,非共享资源是必需的
- 占有并等待:必须保证进程申请资源时没有占有其他资源
- 要求进程一次申请全部资源,只有没占有资源时才分配资源
- 利用率低,可能出现死锁
- 非抢占:一个进程的申请没实现,隐式释放(可以被抢占)其占有的所有资源
- 循环等待:将所有资源放到资源列表中,要走进程按照资源表中递增的顺序申请资源
- 死锁避免:避免进入不安全状态
- 安全状态,不安全状态和死锁的关系:
- 一种资源单个实例:资源分配图算法
- 一种资源多个实例:银行家算法
- 资源请求算法
- 安全检测算法
- 优缺点:
第八章
- 确保每个进程都有独立的内存空间:基地址寄存器和界限地址寄存器
- 地址绑定
- 编译时:绝对代码
- 加载时:静态地址重定位(连续内存)
- 执行时:动态地址重定位(允许内存非连续分配)
- 逻辑地址(虚拟地址)到物理地址的映射:由内存管理单元(MMU)完成
- 动态加载和动态链接:将加载和链接延迟到运行
- 连续内存分配
- 单一连续分配
- 分区管理
- 固定分区
- 动态分区
- 可用分区表和可用分区自由链
- 动态存储分配方法:首次适应,最佳适应,最差适应
- 内碎片和外碎片:外碎片可以利用紧缩解决(只有动态重定位才可用)
- 非连续内存分配(进程的物理地址可以是非连续的)
- 分页
- 帧:物理内存分为固定大小的块
- 页:虚拟内存分为固定大小的块
- 页表保存在内存中
- 页号和页偏移
- 访问两次内存(页表一次,指令/数据一次)
- 页表基地址寄存器(PTBR)指向页表
- 页表长度寄存器(PRLR)定义页表大小
- TLB(转换表缓存区)命中率:
- 可重入代码(纯代码)可以共享
- 页表结构:层次页表、哈希页表、反向页表
- 分段
- 把程序按照内容或者过程关系分成大小不固定的段,每段有自己的名字(段名字)
- 每个段对应一个二维线性虚拟空间
- 通过段表进行地址映射(段表每个条目包含端基地址和段界限)
- 段表示一组基地址和界限寄存器对
- 段表保存在内存中
- 访问两次内存
- 段式和页式比较:
- 段页式
- 访问三次内存
- 二维地址
- 虚拟空间最小单位是页
- 分页
第九章:
- 虚拟内存:以透明方式给用户一个比实际内存大的多的地址空间
- 按需调页:对标记为无效访问会产生页错误陷阱,然后进行这种页错误的处理
- 写时复制:子进程需要对页进行写操作,再创建一个共享页的副本
- 页面置换算法
- FIFO:Belady现象
- 最优置换算法(OPT):不会出现Belady现象,无法在操作系统中实现,用来评价其他算法优劣
- 最近最少使用(LRU):不会出现Belady现象
- 近似LRU:附加引用位算法,二次机会算法
- 页缓冲算法:减少换入换出时间
- 帧分配
- 帧分配最小数量:当单个指令完成之前出现页错误,该指令将重新执行,所以必须要有足够的帧来容纳单个指令所引用的页
- 分配算法:固定分配(平均,比例分配),优先级分配
- 全局置换和局部置换
- 全局置换:从所有帧集合中进行置换,无法控制进程缺页率
- 局部置换:从自己分配的帧中进行置换,无法置换掉其他进程不常用帧
- 系统颠簸:如果一个进程没有分配足够的帧,缺页率高,进程频繁的进行页置换
1. 进程在换页上用的时间多于执行时间
2. CPU使用率低
3. 增加多道程序程度
4. 解决方法
1. 局部置换算法:无法完全解决问题,对于没有颠簸的进程,也会增加其有效访问时间
2. 局部模型:进程执行时从一个局部移向另一个局部,为每个局部分配足够的帧 - 内存映射文件机制和内存映射I/O
第十章:
- 文件系统
- 两大组成部分:一组文件,目录结构
- 文件系统提供了在线存储和访问计算机操作系统和所有用户的程序与数据的机制。负责为用户建立、撤销、读写、修改和复制文件,还负责完成对文件的按名存取和进行存取控制。
- 目标:便于查找和访问
- 文件访问方法:顺序访问和直接访问
- 文件结构:流式结构,记录式结构
- 目录结构:
- 分区:多个分区共享一个磁盘,一个分区跨多个磁盘
- 单层目录
- 双层目录
- 树状目录
- 无环图目录:硬连接和软链接
- 通用图目录
第十一章
- 文件系统的分层
- 应用程序
- 逻辑文件系统:管理元数据
- 文件组织系统:知道文件及其逻辑块和物理块
- 基本文件系统:只需要向合适的设备驱动程序发送一般命令就可对磁盘上的物理块进行读写
- I/O控制:由设备驱动和中断处理程序组成
- 设备
- 虚拟文件系统:面向对象,API
- 空间分配方法
- 连续空间分配
- 简单
- 方便支持随机访问
- 存在空间浪费
- 变长困难
- 不利于文件插入和删除
- 外部碎片
- 链接分配
- 浪费少
- 不支持随机访问
- 索引分配
- 实现文件动态增长,还支持随机访问
- 增加储存器开销
- 二次访存
- 连续空间分配
- 目录实现:线性列表、哈希列表
- 空闲空间管理
- 空闲空间表
- 空闲块链
- 位示图
第十二章
- 扇区,磁道,柱面
- 磁盘调度:FCFS,SSTF,SCAN,C-SCAN,LOOK,C-LOOK
第十三章
- 外中断和内中断
- I/O控制方式
- 程序直接控制方式
- 中断控制方式
- DMA控制方式
- 通道控制方式
后记
最后操作系统考了90,虽然不算高,但也能多少提高一点点均分了,这份笔记也算没白做,一分努力一分收获
阅读全文
0 0
- 操作系统学习笔记:操作系统类型
- 操作系统学习笔记--操作系统基本概念
- 计算机学习笔记--操作系统
- 计算机学习笔记--操作系统
- 操作系统学习笔记(1)
- VxWorks 操作系统学习笔记
- 操作系统学习笔记(一)
- 操作系统学习笔记[1]
- 操作系统学习笔记
- 操作系统学习笔记1
- 操作系统学习笔记1
- VxWorks 操作系统学习笔记
- 操作系统学习笔记
- 操作系统学习笔记
- VxWorks 操作系统学习笔记
- VxWorks 操作系统学习笔记
- 操作系统课程学习笔记
- 操作系统学习笔记一
- Combination
- FPGA之verilog学习第一天(时分秒数字时钟)
- android toolbar 设置应用栏 [U01]
- 521. Longest Uncommon Subsequence I
- 关于bit位域和大小端的理解
- 操作系统学习笔记
- 常用DOS命令大全
- HDU
- 基于redis分布式缓存实现(新浪微博案例)
- <一>、TensorFlow环境搭建
- 从云大会谈谈云计算“关键”技术趋势
- Android应用程序访问硬件驱动(JNI方式)
- Java面试题
- angular4 引入bootstrap