操作系统笔记 清华大学陈渝

课程概要

  • 基本概念及原理
  • 操作系统介绍
  • 中断及系统调用
  • 内存管理
  • 进程及线程
  • 调度
  • 同步
  • 文件系统
  • I/O子系统

1. 基本概念

  • 操作系统是控制软件,管理应用程序,为应用程序提供服务,杀死应用程序,分配资源,管理外设
  • 抽象:CPU - 进程,内存 - 地址空间,磁盘 - 文件
  • OS分为Shell(界面)和Kernel(内核)
  • 并发(concurrent,交替运行) vs 并行(parallel,同时运行)
  • 实例:UNIX BSD,LINUX,WIN

2. 启动、系统调用、异常、中断

  • 启动过程:BIOS检测外设,加载BootLoader,再由BootLoader加载OS
  • 系统调用:应用程序向OS发出请求
  • 异常:应用程序发生异常,需要OS处理
  • 中断:外设发出请求
  • 系统调用之上有API供应用程序调用:Win32 API,POSIX API(UNIX LINUX Mac OS)
  • CPU不同状态:用户态 内核态

3. 内存管理

  • CPU:运算器、控制器、Register、Cache、MMU
  • 内存管理能够实现:物理存储抽象为逻辑地址空间,保护各程序各自内存空间,程序间共享内存,虚拟化 - 暂时不用的数据移动到磁盘
  • 程序经过编译、汇编、链接、载入对应到逻辑地址
  • 连续内存分配、内存碎片(外碎片 - 程序之间、内碎片 - 程序之内)
  • 首次适配、最优适配、最差适配
  • 内存碎片整理:压缩式(移动空闲内存)、交换式(暂时不用的数据移动到磁盘)

4. 非连续内存分配

  • 解决碎片问题,提高内存利用率
  • 分段segment:内存块大小可变
    • 内存地址表示为(segment number, offset)
    • 段表:段号 - 基址,长度
  • 分页page:内存块大小固定(帧)
    • 物理地址:(frame number, offset)
    • 逻辑地址:(page number, offset)
    • 页表:page - frame
  • 解决页表过大:
    • TLB(Translation Lookaside Buffer)用于缓存常用地址
    • 多级页表
    • 反向页表:frame - page
    • 反向页表的实现:页寄存器、关联内存、hash table

5. 虚拟内存

  • 缓解内存不足
  • 覆盖技术(overlay),常用程序模块独占常驻内存,不常用程序模块分时共享内存,但需要程序员设计覆盖关系,增加了程序设计复杂度,并且有从硬盘读写模块的开销,粒度是程序模块
  • 交换技术(swapping),由OS执行换入换出,以程序为单位,内存可能不足时进行内存和硬盘间数据交换,粒度是程序
  • 虚拟内存,由OS执行,程序设计需要有局部性(指令和数据访问在时间和空间上较为集中),低粒度,以页为单位,按需从硬盘调入程序和数据
  • 有效存储访问时间(effective memory access time, EAT)
  • 数据结构,通过页表实现:
    - 驻留位(resident bit, 1表示在内存中,0表示在硬盘中)
    - 保护位(设置权限,包括只读、读写、可执行等)
    - 修改位(dirty bit, 数据是否被修改过,换出时是否需要写回硬盘)
    - 访问位(access/used bit, 是否被访问,长时间未访问的数据在内存不足时优先被换出)
    - 锁定位(lock bit, 标记需要常驻内存的数据,如OS进程和对时间敏感的进程)
  • 算法,在页表中查找所需数据的物理地址,如存在则直接读取;如不存在,先判断是否有空余内存,如无,先换出内存上的数据(未被修改直接free,被修改过则写回硬盘),再从硬盘读取数据

6. 页面置换算法

  • 物理内存不足时,需要换出内存中的数据
  • 置换算法选择将哪些数据换出,目标是尽可能减少换入换出
  • 最优页面置换算法,换出未来等待最长时间才会被访问的数据,是一种理想情况,作为其他评价其他算法的标杆
  • 先进先出算法(FIFO),换出在内存中存在时间最长的数据,但存在时间久的数据有可能会被频繁访问,导致缺页较多,造成Belady现象
  • 最近最久未使用算法(Least Recently Used, LRU),换出距离上一次被访问间隔时间最久的数据,缺页较少,但需要记录每个数据的访问时间,开销较大
  • 时钟算法(Clock),在环形链表中记录frame的access bit,数据被访问时bit置为1,所有bit定期归零。发生缺页时,在环形链表中寻找access bit为0的frame,若为1则置为0,若为0则换出。相当于近似的LRU,缺页次数稍大,但节省空间
  • 二次机会算法,改进clock,(access bit, dirty bit) :
    • (1, 1) -> (0, 1) -> (0, 0)
    • (1, 0) -> (0, 0)
    • 换出(0, 0),被修改过的frame换出开销大,指针经过两次才变为(0, 0)
  • 最不常用算法(Least Frequently Used, LFU),将访问次数最少的数据换出
  • Belady现象,分配更多物理内存,缺页反而更多的现象,如FIFO
  • 全局页面置换算法
    • 实现全局动态分配各个程序的内存,保持平衡,效果好于局部算法
    • 工作集模型,W(t, Δ),t时刻往前Δ时间段(窗口)内,page的集合,集合size越小,程序局部性越好
    • 工作集页置换算法,固定窗口大小,随着时间窗口移动,换出窗口外的页,换出最久未访问的页,限制每个程序的可用内存
    • 缺页率页置换算法(Page Fault Frequency, PFF),用缺页发生的时间间隔评价缺页率,间隔短说明内存不足,加载页,间隔长说明内存过多,换出未访问的页
  • 抖动(thrashing),内存严重不足时,大量时间耗费在换入换出操作上,程序运行效率大大降低的现象

7. 进程

  • 进程(Process)
    • 定义:程序的一次执行过程
    • 为了支持运行多个程序、多个实例而生
    • 记录程序的所有状态信息,包含代码、数据、程
  • 13
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值