如何在cxl的期末里绝地求生

第一章

  • os
    • 定义
      • 操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户的程序的集合
    • 设计目标
      • 方便性
      • 有效性
      • 可扩充性
      • 开放性
      • 方便性和有效性是操作系统最重要的两个目标
    • 发展动力
      • 不断提高计算机资源利用率的需要
      • 方便用户
      • 器件的不断更新换代
      • 计算机体系结构的不断发展
    • 发展历程
      • 无OS时代→批处理系统→分时系统→实时系统→PC→分布式和并行系统→嵌入→移动系统→ …
        • 批(batch)的含义:
          • 供一次加载的磁带或磁盘,通常由若干个作业组装而成,在处理中使用一组相同的系统软件
        • CPU速度与I/O速度之间的矛盾
          • 解决:脱机IO
          • 三种最基本的操作系统类型
            • 批处理:一堆需要统一系统软件的任务
            • 分时:多个终端要求相应(时间片)
            • 实时:严格要求响应时间
              • 严格的:硬实时
              • 稍弱的:软实时

第二章

  • 冯洛伊曼体系结构
    • 在这里插入图片描述
    • 在这里插入图片描述
  • BIOS
  • MBR
  • 同步异步IO
  • 硬件保护:
    • Dual-Mode Operation(双操作模式)
      • user mode & kernel mode
    • I/O protection
      • All I/O instructions are privileged instructions
    • Memory protection
      • Base register protection scheme
      • 防止访问越界
    • CPU protection
      • 时钟
  • systemcall
    • 在这里插入图片描述

第三章

  • 系统组成
    • 进程管理
    • 内存管理
    • IO管理
    • 文件管理
    • 辅存外存管理
    • UI
      • 控制卡解释程序
      • 命令行解释程序
      • Shell
      • GUI
  • 系统服务
    • 操作系统提供服务的最基本方式——system calls(系统调用)
      • 进程控制类
      • 文件管理类
      • 设备管理类
      • 通信类
      • 信息维护类
      • 传参给os的三个方法
        • 参数放寄存器
        • 参数放内存,寄存器放地址
        • 参数压栈,os pop
  • os特征
    • 并发
    • 共享
    • 并发和共享是操作系统的两个最基本的特征
    • 虚拟
    • 异步
  • os的抽象
    • 进程
      • 在这里插入图片描述
    • 进程通信
      • 信号、 信号量、 管道、 消息队列、 套接字
    • 线程
      • 将进程的执行上下文从进程描述符中分离出来,就得到了线程的概念
  • os结构
    1. Simple structure(无结构,或者说简单结构)
    2. Monolithic kernel(单一大内核)
    3. Modular kernel(模块化结构)
    4. layered approach(层次结构)
    5. Microkernel( the first and the second generation)
    6. Hybrid structure(混合内核)
    7. Exokernel(外核)

第四章

  • 程序顺序执行时的特征
    • 顺序性
      • 严格按照程序规定的顺序执行
    • 封闭性
      • 程序是在封闭的环境下运行的。独占全机资源。一旦开始运行,结果不受外界因素的影响。
    • 可再现性
      • 只要程序执行时的环境和初始条件相同,都将获得相同的结果
  • 程序并发执行时的特征
    • 间断性
      • 并发程序“执行-暂停执行-执行”
    • 失去封闭性
      • 由于资源共享,程序间可能出现相互影响的现象
    • 不可再现性
  • 程序并发执行的条件
    • R ( p 1 ) ∩ W ( p 2 ) ∪ R ( p 2 ) ∩ W ( p 1 ) ∪ W ( p 1 ) ∩ W ( p 2 ) = ∅ \mathrm{R}\left(\mathrm{p}_{1}\right) \cap \mathrm{W}\left(\mathrm{p}_{2}\right) \cup \mathrm{R}\left(\mathrm{p}_{2}\right) \cap \mathrm{W}\left(\mathrm{p}_{1}\right) \cup \mathrm{W}\left(\mathrm{p}_{1}\right) \cap \mathrm{W}\left(\mathrm{p}_{2}\right)=\varnothing R(p1)W(p2)R(p2)W(p1)W(p1)W(p2)=
  • 进程特征
    • 在这里插入图片描述
    • 动态性:最基本的特性
      • 它由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡
    • 并发性
    • 独立性
      • 进程是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位
    • 异步性
      • 进程按各自独立的、不可预知的速度向前推进
    • 结构特征
      • 进程映像 = 程序段 + 数据段 + 进程控制块
  • 进程状态
    • 在这里插入图片描述
    • 在这里插入图片描述
    • 因自身原因而等待的叫wait,因外部的叫挂起
    • 在这里插入图片描述
  • 进程控制块
    • PCB是进程存在的唯一标志
    • 在这里插入图片描述
  • 多道程序度
    • 内存中的进程数
  • IO密集型
    • 大多时间用来做IO而不是运算,有许多短期的CPU bursts
  • CPU密集型
    • 大部分时间做运算,有不多的长期的CPU bursts
  • 上下文切换
    • CPU 寄存器
    • 进程状态
    • 内存控制信息
  • fork & exec
#include<stdio.h>
#include<unistd.h>
int main(void) {
pid_t pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* 出错了 */
fprintf(stderr, “Fork Failed”);
exit(-1);
} else if (pid == 0) { /* 子进程要做的 */
execlp(/bin/ls”, “ls”, NULL);
} else { /* 父进程要做的 */
/* parent will wait for the child to complete */
wait (NULL);
printf (“Child Complete”);
exit(0);
}
}
  • 进程间通信(IPC)

第五章

  • 程序运行就是不停的CPU-I/O Burst Cycle
    • Process execution= n (CPU execution + I/O wait)+ CPU execution
  • 抢占和非抢占
    • 在这里插入图片描述
    • 非抢占 4&5
    • 抢占 全
      • 需要硬件:时钟
      • 提前对共享数据同步
  • 调度延迟时间
    • 调度器用于停止一个进程,再运行一个进程的时间
    • 在这里插入图片描述
  • 调度标准
    • CPU 利用率
    • 吞吐率
    • 周转时间
      • 执行一个进程的时间:
        • 等待进入内存
        • 在就绪队列里等待:等待时间
        • CPU上运行
        • 做IO
    • 等待时间
    • 响应时间
      • 从提交请求到产生第一响应的时间
  • 调度算法
    • FCFS
      • 非抢占
      • 护航效应
        • 短进程位于长进程后
    • SJF
      • 最优的
      • 可抢占 可非抢占
      • 预测下一次CPU burst
        • τ n + 1 = α t n + ( 1 − α ) τ n \tau_{\mathrm{n}+1}=\alpha \mathrm{t}_{\mathrm{n}}+(1-\alpha) \tau_{\mathrm{n}} τn+1=αtn+(1α)τn
        • t n \mathrm{t}_{\mathrm{n}} tn为上一次实际时间
        • τ n \tau_{\mathrm{n}} τn为上一次预测时间
        • 0 &lt; α &lt; 1 0&lt;\alpha&lt;1 0<α<1
    • 优先级队列
      • 通常,最小的优先级数对应最高的优先级
      • 解决饥饿
        • aging(老化)逐渐增加在系统中等待很长时间进程的优先级
    • 时间片轮转
    • 多级队列
  • 多处理器调度
    • 非对称多处理
      • 一个处理所有调度决定,IO处理和其他系统活动,其他执行用户代码
    • 对称多处理
      • 共同就绪队列或各有私有队列
      • 处理器亲和性
        • 试图使一个进程在一个处理器上运行
        • 软亲和性 不做任何保证
        • 硬亲和性 提供syscall让进程指定不允许迁移
      • 负载平衡
        • push migration 往空闲的放
        • pull migration 从繁忙的拉
    • 对称多线程

第六章

  • 线程概念
  • 在这里插入图片描述
  • 线程是CPU使用的基本单元,由线程ID、程序计数器、寄存器集合和栈组成,与属于同一进程的其他线程共享代码段、数据段和其他os资源,如打开文件和信号
  • 用户线程和内核线程
    • 在这里插入图片描述
    • 在这里插入图片描述
    • 在这里插入图片描述

第七章

  • 生产者消费者问题
    • 有限缓冲区
      • 在这里插入图片描述
      • 是正确的但只能用BUFFER_SIZE-1的空间
      • 改进–>增加counter
      • 在这里插入图片描述
      • 但是,因为竞争条件导致可能出错–>临界区问题
      • 竞争条件
        • 多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关
  • 临界区问题
    • 临界区
      • 一段代码,可能改变共享变量
      • 不能让两个进程同时在临界区执行
    • 进入区
      • 实现一个进程协作的协议,每个进程必须请求允许进入临界区
    • 退出区
      • 临界区之后的代码
    • 剩余区
      • 其他代码
    • 在这里插入图片描述
    • 临界区要求
      • 互斥
      • 空闲让进
      • 有限等待
    • Peterson算法
    • 在这里插入图片描述
    • 硬件同步
    • 信号量
      • 在这里插入图片描述
      • 计数信号量
      • 二进制信号量(互斥锁)
      • 同步工具
        • 在这里插入图片描述
      • 缺点
        • 忙等(自旋锁)
      • 记录型信号量(解决忙等)
        • 在这里插入图片描述
        • 在这里插入图片描述
      • 死锁和饥饿
    • 信号量集
    • 当资源大于t的时候一次分配d
    • Swait(S,t,d)
  • 生产者消费者信号量解决
    • mutex提供了对缓冲池访问的互斥要求,empty和full分别用来表示空缓冲项和满缓冲项的个数
    • 在这里插入图片描述
  • 读者写者
    • mutex用于确定在更新readcount时的互斥,readcount用来跟踪有多少进程正在读对象,wrt供写者作为互斥信号量
    • initial mutex->1,wrt->1,readcount->0
    • 在这里插入图片描述

第八章

  • 死锁的条件与预防
    • 互斥
    • 持有并等待
      • 每个进程在执行时申请并获得所有资源(我全要)
      • 先释放已有的资源再申请(先放手)
    • 不剥夺(非抢占)
      • 不能立即满足需求的进程隐式释放它已有的资源
    • 循环等待
      • 要求每个进程按资源递增序进行请求
  • 死锁避免
    • 安全状态
      • 存在安全序列的状态
        • &lt; P 1 , P 2 , ⋯ &ThinSpace; , P n &gt; &lt;P_1,P_2,\cdots,P_n&gt; <P1,P2,,Pn>, P i P_i Pi仍然可申请的资源小于当前可用资源和所有 P j ( j &lt; i ) P_j(j&lt;i) Pj(j<i)已占有的资源和 – 安全序列
        • 即将之前的都分配并释放了后可满足当前需求
        • 死锁一定不在安全状态中,但不安全不一定死锁
    • 资源分配图算法(每个资源只有一个实例)
      • 在资源分配图上加上需求边,当需求造成环时出现不安全状态
    • 银行家算法(每个资源多个实例)
      • initial:n:进程数,m:资源类型的种类,Available[m]:记录每种资源现有的实例数,Max[n][m]:每个进程的最大需求,Allocation[n][m]:每个进程现已分配的实例数量,Need[n][m]:还需要的剩余的资源(Need[i][j]=Max[i][j]-Allocation[i][j])
      • 安全性算法
        • 找安全序列
      • 资源请求算法
        • 请求没超过当前剩余资源,也没超过进程的最大请求,那就加上看看是不是安全状态
    • 死锁检测
      • 资源只有单个实例
        • 去掉资源分配图中资源节点,边合并,图中有环就存在死锁
      • 多个实例
        • 同安全性检测,把Need变为Request
      • 死锁恢复
        • 进程终止
          • 终止所有死锁进程
          • 一次只终止一个进程直到取消死锁循环为止
        • 资源抢占
          • 选择一个牺牲品
          • 回滚
          • 饥饿

第九章

  • 存储的层次结构
    • 在这里插入图片描述
    • 主存是稀缺资源
  • caching(高速缓存技术)
    • 先在cache中找,没找到去upper storage system并留下备份在cache中
  • 绝对地址(物理地址)
    • 内存看到的地址
  • 逻辑地址(虚拟地址)
    • CPU产生的地址
  • 相对地址(线性地址)
  • 地址绑定的三个时间
    • 编译时
      • 绝对代码 代码里就是物理地址
    • 加载时
      • 可重定位代码
    • 执行时
      • 允许进程在执行时从一个内存段移到另一个内存段
    • MMU 内存管理单元
      • 运行时将虚拟地址到物理地址的映射
    • 装入(loading)
      • 绝对装入方式
        • 绝对代码 绝对地址
      • 可重定位装入方式
        • 装入时才确定了所有地址
      • 动态运行时装入方式
        • 子程序只在被调用时才被加载
    • 链接
      • 静态链接方式
        • 在装入前所有的模块和库都被加载
      • 装入时动态链接
      • 运行时动态链接
  • 连续内存分配
    • 每个进程位于一个连续的内存区域
  • 固定分区
    • 将内存分为多个固定大小的分区
  • 碎片
    • 内部
      • 分配时多分配的
    • 外部
      • 空闲空间足够满足要求但空间不连续
  • 动态分区
    • 找足够的孔(可用内存),分配,剩下的等待下次分配
    • 首次适应 第一个够大的
    • 最佳适应 最小的满足的
    • 最差适应 最大的
  • 紧凑
    • 为了减少外部碎片,移动内存块使空闲的内存块合在一起成为一个大的
    • 要求重定位
  • 对换
    • 进程可以暂时从内存中交换到备份存储上(swap out),当需要再次执行时再调回(swap in)
  • 分页
    • 物理内存分帧,逻辑内存分页,备份存储分块
    • 页表
      • 页号和页内偏移
      • 专用寄存器、页表基寄存器、转换表缓冲区(TLB)
    • TLB
    • 硬件支持
      • 在这里插入图片描述
      • 在这里插入图片描述
    • 内存保护
      • 页表中帧号加保护位 valid(有效) invalid
    • 有效访问时间 Eat
      • ϵ \epsilon ϵ表示TLB查找时间,t为内存访问时间, α \alpha α为命中率
      • E A T = ( t + ϵ ) α + ( 2 t + ϵ ) ( 1 − α ) \mathrm{EAT}=(\mathrm{t}+\epsilon) \alpha+(2 \mathrm{t}+\epsilon)(1-\alpha) EAT=(t+ϵ)α+(2t+ϵ)(1α)
      • 层次页表
        • 在这里插入图片描述
        • L层访存L+1次
      • 哈希页表
        • 在这里插入图片描述
      • 反置页表
        • 在这里插入图片描述
  • 分段
    • 在这里插入图片描述
  • 分段和分页的差别
    • 分页:面向os,物理分离,减少内部和外部碎片,提高mem利用率;大小固定,取决于硬件;一维
    • 分段:面向用户,逻辑分离,满足用户需求;大小不固定,取决于程序,编译时决定;二维,段号和段偏移
  • 段页式
    • 在这里插入图片描述

第十章

  • 虚拟内存
    • 产生原因
      • 需要更大的空间
      • 程序的局部性原理
    • 缺页异常(页错误陷阱)
      • 检查进程内部页表,如果非法访问终止进程,否则要调入
      • 找到一个空闲帧
      • 调度一个磁盘操作,将所需要的页调入刚分配的帧
      • 当磁盘读操作完后,修改内部页表,以及将页表保护位置为v
      • 重新开始因陷阱而终止的指令
    • 换页算法
      • FIFO
      • OPT(最优置换)栈算法
      • LRU(最近最少使用)栈算法
        • 计数器或栈实现(引用后起顶)
      • 近似LRU页置换
        • 引用位:被引用后置1
        • 引用附加位算法
          • 每个周期将引用位转移到最高位,其他为向右移一位,抛弃最后一位,选择最小的
        • 二次机会页置换算法
          • 遇1置0,选下;遇0置换;循环队列
        • 增强型二次机会算法
          • 再加一个修改位,(refrence bit,change bit)取小的换
      • 基于计数的页置换
        • 每个页加一个计数器
        • LFU(最不经常使用页置换)
        • MFU(最常使用页置换)
    • 抖动
      • 进程忙于换页而不是执行
      • 原因
        • 不合理的多道程序度

第十一章

  • 文件概念
    • 文件是记录在外存上的相关信息的具有名称的集合
  • 文件属性
    • 名称
    • 标识符
    • 类型
    • 位置
    • 大小
    • 保护
    • 时间、日期和用户标识
  • 文件操作
    • 创建
    • 在文件中重定位
    • 删除
    • 截短:长度设为0并删除空间,保留属性
  • 文件类型
    • 幻数
  • 文件结构
  • 文件访问
    • 顺序访问方式
    • 直接访问方式
    • 索引访问方式
  • 目录概述
    • 单层
    • 双层 MFD UFD(user file directory)
    • 树状
    • 无环图
      • 链接
        • 软:一个有另一文件指向的文件
        • 硬:一个文件的别名
    • 通用图

第十二章

  • 分配方法
    • 连续分配
      • 在这里插入图片描述
    • 链接分配
      • 在这里插入图片描述
    • 索引分配
      • 在这里插入图片描述

第十三章

  • 访问时间=寻道时间+旋转延迟
  • FCFS调度
  • SSTF(最短寻道时间优先)
  • SCAN(电梯算法)
    • 先处理一个固定方向的请求,到端时反向接着处理
  • C-SCAN
    • 到端时反向回到开头,再反向接着处理
  • LOOK
    • 对应于SCAN,到最远的请求就反向,C-LOOK对应C-SCAN
  • RAID
    • 在这里插入图片描述

第十四章

  • IO实现
    • 轮询
      • 主机读忙位直到它被清除
      • 主机设置命令寄存器中的写位并向数据输出寄存器中写入一个字节
      • 主机设置命令就绪位
      • 控制器注意到命令就绪位被设置,就设置忙位
      • 控制器读取命令寄存器,看到写命令,读一个字节,向设备执行IO
      • 控制器清除命令就绪位,状态寄存器的故障位和忙位
    • 中断
    • DMA
  • IO接口
    • 设备驱动层隐藏了设备控制器之间的差异
    • 块设备与字符设备
    • 网络设备 套接字
    • 时钟和定时器
      • 实时时钟
      • 时间戳计数器
      • 可编程间隔定时器
    • 阻塞和非阻塞
  • IO子系统
    • IO调度
      • 设备状态表配备等待队列
    • 缓冲 内存区域
    • 告速缓存
    • 假脱机(spooling)
    • IO保护
      • syscall指令特权级
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值