操作系统知识点2——作业与存储

作业管理

1.进程调度:

  • 进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用权(多道程序设计前提)

    • 保留旧进程的运行信息,请出旧进程
    • 选择新进程,准备运行环境并分配CPU
  • 进程的机制

    • 就绪队列的排列机制:将就绪进程按照一定方式排成队列,以便调度程序最快找到进程
    • 选择运行进程的委派机制:调度程序以一定的策略选择就绪进程,将CPU资源分配给它
    • 新老进程的上下文切换机制:保存当前进程的上下文信息,装入被委派执行进程的运行上下文
  • 进程调度原则

    • 非抢占式的调度:进程只有完成/IO阻塞才让出处理器
    • 抢占式的调度:允许调度程序以一定策略暂停当前运行程序

        

进程调度算法

  • 先来先服务(按顺序)

  • 短进程优先调度(长进程不友好)

  • 高优先权优先调度(紧迫任务可以优先)

  • 时间片轮转调度(“绝对公平”)

    • 先来先服务原则排列就绪队列
    • 每次从头部取出,分配一个时间片执行

2. 死锁

死锁定义:两个或两个以上的进程,由于竞争资源/彼此通信造成阻塞现象,若无外力作用,它们都无法推进下去。此时系统处于死锁状态。

  • 死锁产生

    • 竞争资源:共享资源不满足各进程需求
    • 进程调度顺序不当
  • 四个必要条件(只满足1~2个不会死锁)

    • 1互斥条件(排他性)
    • 2请求保持条件(持有资源再申请时,进入等待)
    • 3不可剥夺条件(未完成全不能被剥夺)
    • 4环路等待条件(发生死锁时,必然存在进程-资源环形链)

死锁的处理

  • 预防死锁方法:破坏1个或多个必要条件

    • (条件2)一次性申请所有需要的资源
    • (条件3)申请资源得不到满足,释放占有资源
    • (条件4)线性申请资源
  • 避免死锁(系统处于安全状态):如果操作系统能保证所有进程在有限时间内得到需要的全部资源,则系统处于安全状态否则系统是不安全的。

    • 银行家算法
      • 已分配资源表、所需资源表、可分配资源表
      • 得到  还需分配资源表

存储管理

存储管理目的:

  • 确保计算机有足够的内存处理数据
  • 确保程序可以从可用内存中获取一部分内存使用
  • 确保程序可以归还使用后的内存,以供其他程序使用

1.连续内存分配

内存分配(分配空闲区)

  • 单一连续分配(单进程操作系统)
  • 固定分区分配(预先分区好,支持多道程序的最简单存储分配)
  • 动态分区分配(按照进程实际需要动态分配,常用)
    • 空闲区:动态分区空闲表动态分区空闲链
    • 动态分配算法:
      • 首次适应算法(FF算法,每次从头部开始)
      • 循环适应算法(从上次检索位置开始分配)
      • 最佳适应算法(空闲区链表按照容量从小到大排序)
      • 快速适应算法(多个空闲链表,每个空闲链表存储一种容量的空闲区)

内存回收(回收空闲区)

  • 空+回:只需空闲区容量增大为两者之和
  • 回+空:合并两者,新空闲区使用回收空闲区的地址
  • 空1+回+空2:合并三者,新空闲区使用空1地址
  • 回:创建新空闲节点

2.段页式存储管理(非连续,将进程映射至物理空间)

  • 页式存储(页面——相对逻辑空间定义,字块——相对物理设备定义)

    • 将逻辑空间分成页面,物理空间分成物理块,以页面为单位把进程空间装进物理内存中分散的物理块
    • 需要页面大小适中512B~8K(过小内存碎片过多,过大难以分配)
    • 页表:页面+字块(记录页面与字块的关系)
    • 地址:页号+页内偏移
    • 多级页表

        

  • 段式存储

    • 把进程逻辑空间划分成若干段(非等分),段长度由连续逻辑长度决定,MAIN、X、Y
    • 段表:段号+基址+段长
    • 地址:段号+段内偏移

    段式与页式存储管理对比(离散地管理):

     

  • 段页式存储

    • 逻辑空间按段式管理分成若干段,段内空间按页式管理分成若干页
    • 页地址:页号+页内偏移
    • 段地址:段号+段内偏移
    • 段页地址:段号+段内页号+页内地址

3.虚拟内存: 

物理内存不能无限增加,虚拟内存使得多道程序运行和大程序运行成为现实

  • 程序局部性原理:

    • CPU访问存储器时,访问的存储单元都趋于聚集在一块较小的连续区域中
    • 程序运行时无需全部装入内存
    • 发起页面中断,读取载入页面
  • 虚拟内存的

    • 请求页表机制​​​​​​​
    • 缺页中断机制
    • 页面置换算法
  • 页面置换算法(辅存)

    • 先进先出FIFO(只有FIFO算法会出现Belady异常)
    • 最不经常使用LFU
    • 最近最少使用LRU

4.Linux存储管理

  • 页内碎片(段页式存储时,进程没有占满这页)
  • 页外碎片(给内存分页时,部分小内存不满足页大小,无法利用)

Buddy内存管理算法:经典内存管理方法,基于二进制优势(效率高)

  • 目标:努力让内存分配与相邻内存合并能够快速进行
  • 伙伴系统(内存的伙伴:相邻相同大小的内存)
  • 分配步骤
    • 内存分配原则:向上取整为2幂大小
    • 找空闲满足的内存
    • 拆分至最小满足,再分配
  • 回收步骤
    • 判断伙伴在空闲链表?
    • 在,则移除伙伴,合并成大的,向上循环

Linux交换空间(swap)

  • 物理内存满时,将其转换至交换空间(磁盘)
  • 使用交换空间速度会变慢
  • 冷启动内存依赖、系统睡眠依赖、大进程空间依赖

Swap与虚拟内存区别:

  • Swap是操作系统概念;虚拟内存是进程概念
  • Swap解决系统物理内存不足问题;解决进程物理内存不足问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值