【CS537】【lec4】CPU总结和地址空间


CPU 虚拟化相关笔记

CPU 虚拟化概述

  • 调度机制:使用进程间的调度来虚拟化 CPU。

  • 受限的直接执行:将整个空间划分为用户空间和内核空间,因为一个 process 控制一个 CPU,所以要限制。使用时钟中断确保控制权能回到内核手中。

I/O 操作与调度器

I/O 如何受到调度器操作

进程间的状态转换:

  • 运行中 ➔ 就绪:调度
  • 运行中 ➔ 阻塞(Blocked):因 I/O 操作启动
  • 阻塞(Blocked)➔ 就绪:I/O 操作完成

当一个进程进入 I/O 操作时,会有其他进程代替其执行(状态切换)。

模式切换机制

  • 响应时间
  • FIFO
  • SJF(最短作业优先)
  • SJF(最短响应优先)
  • 周期时间

在这个基础上,引入了多级反馈队列(MBFQ 机制),同时在周期时间和响应时间之间存在一对矛盾。

多级反馈队列(MLFQ)

四条准则:

  1. 优先级高的优先执行。
  2. 同一优先级,共同划分轮转时间片执行。
  3. 从最高优先级开始执行。
  4. 如果一个进程占用了整个时间片(slice),就将该进程降级;否则,保持优先级。

虚拟化相关笔记

CPU 总结

机制

  • 进程抽象
  • syscall(系统调用)
  • system call for protection(用于保护的系统调用)
  • 分时共享的上下文切换

策略

  • 一系列调度指标:响应时间等
  • MLFQ 的权衡(存在一对矛盾)

内存虚拟化

在一开始,我们认为一个进程控制了整个 CPU,但是一个进程使用整个机器,会造成多个任务使用内存的混叠,无法阻止恶意程序。

我们有以下一些目标用来规范多任务运行:

  • 透明性 :程序认为自己独享 CPU、内存。
  • 保护 :在进程与进程之间,在进程与内核之间添加隔离保护。
  • 效率 :不能浪费内存和减慢进程(所以需要使用硬件来执行的地址转换的任务)。
  • 共享 :运行许多任务通过通信协作。

内存分时共享笔记

抽象:地址空间

我们需要什么样的地址空间?

  • Static :代码和全局变量
  • Dynamic :堆和栈

同步运行多任务的问题

  • 如何同步运行多任务?
  • 如果地址是 “硬编码” 的,如何避免内存碎片化?

四种机制

  1. Time sharing
  2. Static Relocation
  3. Base
  4. Base + Bounds

文章作者: MIKA
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 MIKA !
  目录