摘要: 上一章我们讲述了进程运行的上下文切换机制,这一章我会开始介绍一系列关于进程的调度策略,这个话题很具有挑战性,希望大家能挑战成功。 如何开发调度策略?这个问题非常重要,在探讨可能的策略范围之前,我们先做一些简化假设。这些假设与系统中运行的进程有关,有时候我们一般把这些正在运行的进程称为工作负载。确定工 阅读全文
posted @ 2020-08-23 01:08 我的偶像是木子 阅读(308) 评论(0) 推荐(0)
摘要: 在第三篇我们提出了两个问题,现在我们开始解决第二个问题:当我们运行一个进程时,操作系统如何让它停下来并切换到另一个进程,从而实现虚拟化CPU所需的时分共享? 从宏观角度看,进程之间的切换应该很简单吧?操作系统应该决定停止一个进程并开始另一个进程。但现在有一个很严重的问题,如果一个进程在CPU上运行, 阅读全文
posted @ 2020-08-22 16:07 我的偶像是木子 阅读(405) 评论(1) 推荐(0)
摘要: 通过运行一个进程一段时间,然后运行另一个进程,如此反复切换,以这种方式时分共享CPU实现了虚拟化。但构建这样的虚拟化机制时存在一些挑战。 第一个就是性能,如果在不增加系统的开销情况下实现虚拟化? 第二个就是控制权,如何有效运行进程,同时保留对CPU的控制? 控制权对于操作系统尤为重要,因为操作系统作 阅读全文
posted @ 2020-08-22 04:32 我的偶像是木子 阅读(699) 评论(0) 推荐(0)
摘要: 上一章我们阐述了虚拟化的作用就是为了实现多路复用。针对CPU的虚拟化,在于时间上的快速切换,给人一种每个程序都占用1个CPU的假象,针对内存的虚拟化,让每个程序都有自己的地址空间,让程序以为自己独占了整个内存。这一章请跟着我详细了解下这种美丽的假象是如何实现的吧。让我们先看第一个假象,也是操作系统提 阅读全文
posted @ 2020-08-21 23:50 我的偶像是木子 阅读(1157) 评论(0) 推荐(0)
摘要: 在学习操作系统前,我们先了解程序在计算机中的执行流程。根据冯诺依曼计算模型: 1. 首先程序需要通过输入设备加载到计算机的内存中 2. CPU从内存中取出程序中的指令并对其解码,然后执行 3. CPU和内存反复交互,直到程序所有指令执行完成 4. 最后把程序计算结果通过输出设备输出外界 看似简单流程 阅读全文
posted @ 2020-08-21 15:22 我的偶像是木子 阅读(1070) 评论(0) 推荐(0)