(两百七十五)《Operating Systems: Three Easy Pieces》读书笔记 (二)

2023-12-19 07:18

本文主要是介绍(两百七十五)《Operating Systems: Three Easy Pieces》读书笔记 (二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第六章 受限直接执行

开篇引入问题:如何高效并可控的虚拟化CPU

可控:用户态+内核态

高效:?

还讲了进程间切换,涉及了上下文的保存和恢复

以及OS通过时钟中断重新获取CPU

 

第七章 进程调度

开篇提出了5个假设,并在此基础上提出/优化调度策略

  1. 任务同时到
  2. 知晓任务完成时间
  3. 任务执行花费相同的时间
  4. 只用CPU
  5. 不会中途停止

先提出FIFO,先进先出策略

后来引入调度指标-周转时间,并修改假设“任务完成时间相同”,优化调度策略为SJF(最短任务优先)

后来去除假设任务同时到,优化策略为STCF(最短完成时间优先)

之后引入响应时间概念,并废弃“不会中途停止”提出策略RR(轮转调度),该调度引入了上下文切换的时间消耗

之后又废弃只有CPU假设,引入重叠策略,即当一个进程由于IO阻塞无法使用CPU时,其他进程可继续使用CPU

 

为何轮转时间片要是中断时间的倍数?

 

第八章 多级反馈队列

引入问题:未知进程运行时间,如何减少响应时间和周转时间?(上一章唯一留存的假设)

引入规则:

  1. 如果A的优先级>B,执行A
  2. 如果A、B优先级相同,轮转执行
  3. 工作刚开始时,优先级最高
  4. 一旦用完在某一层的时间配额(无论中间放弃了多少次CPU),降低优先级
  5. 经过一段时间,所有工作恢复最高优先级(防止饥饿)

规则4由如下两个分规则演化而来

  • 工作用完时间片,降低优先级
  • 如果工作在其时间片内主动释放CPU,则优先级不变

但有可能被不规范进程频繁主动释放CPU的漏洞,进而导致其他进程饥饿

 

另外高优先级有更短的时间片,这样响应时间会比较好,而较低优先级有较长的时间片,这样周转时间较好

 

第九章:调度:比例额度

引入彩票、随机、步长调度策略,但由于彩票、步长无法确定,未得到广泛运用

 

第十章:多处理器调度

缓存:根据时间和空间局部性来缓存程序后续可能使用的数据

缓存性能>内存性能

但多个CPU会引入缓存一致性问题,可依靠硬件,比如总线窥探来解决(另外其实还依赖同步锁)

 

进程具有缓存亲和度,即在某个CPU上执行后,在该CPU恢复较其他CPU快

引入两种策略

  • SQMS Single Queue MultiProcessor Scheduling
  • MQMS Multi-Queue MultiProcessor Scheduling

SQMS有同步锁的问题,性能会比较差,继而导致拓展较差

MQMS可能会有负载不均衡问题,可通过适时地迁移任务来达到负载均衡的目的。

 

 

 

 

 

 

 

这篇关于(两百七十五)《Operating Systems: Three Easy Pieces》读书笔记 (二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511332

相关文章

LibSVM学习(六)——easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。        这两个文件都要用python(可以在http://www.python.org上下载到,需要安装)和绘图工具gnup

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

读书笔记(一):双脑记

谁又知道年轻人那反复无常的大脑有着怎样的运行机制?尽管他们的大脑已被荷尔蒙折腾地七荤八素;却偶尔还会有灵感跻身夹缝之间; 层级化:每时每刻,人类都在进行抽象化,也就是说,从客观事实中发展出更具普遍意义的理论和知识。利用这种方法,我们得以不断地开发出新的更为简洁的描述层级,方便我们那容量有限的大脑加以处理。分层的概念几乎可以应用于任何复杂系统,甚至包括我们的社交世界,也即是人们的个人生

Three 渲染器(二)

WebGL1Renderer 构造函数 WebGL1Renderer( parameters : Object ) Creates a new WebGL1Renderer. 属性 See the base WebGLRenderer class for common properties. 方法 See the base WebGLRenderer class for common

leetcode#628. Maximum Product of Three Numbers

题目 Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1: Input: [1,2,3]Output: 6 Example 2: Input: [1,2,3,4]Output: 24 Note: The lengt

2024.09.07【读书笔记】| SMRTLink工具对PB组装疑难解答

在使用SMRT Link的pb_assembly_hifi命令进行组装分析时,可以参考以下步骤和信息: 使用pbcromwell show-workflow-details pb_assembly_hifi命令查看该工作流的详细信息。这将帮助你了解所需的输入参数和可选输入参数。 根据工作流的要求,你需要准备相应的输入文件。例如,对于单样本基因组组装,需要CCS(连续测序)的fastq文件路径作

11991 - Easy Problem from Rujia Liu?

题意: 输入一串整型数列,再输入两个数k,v,输出第k个v的序号。不存在则输出0,如第一个样例 8 41 3 2 2 4 3 2 11 3 //第1个3,序号为2,输出22 4 //第2个4,不存在,输出03 2 //第3个2,序号为7,输出74 2 思路: struct num {

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

【开发工具】开发过程中,怎么通过Easy JavaDoc快速生成注释。

文章目录 引言什么是Easy JavaDoc?Easy JavaDoc用来干什么?如何使用Easy JavaDoc?安装Easy JavaDoc配置Easy JavaDoc使用Easy JavaDoc生成注释 Easy JavaDoc与IDEA自带注释的区别IDEA自带注释Easy JavaDoc Easy JavaDoc的优缺点优点缺点 步骤 1:打开设置步骤 2:找到Easy JavaD

《设计模式:可复用面向对象软件的基础》读书笔记(3)

这篇博客记录了书中《第3章:创建型模式》里的要点。 介绍 创建型设计模式抽象了实例化过程。 在这些模式中有两个不断出现的主旋律: 他们都将关于该系统使用哪些具体的类的信息封装起来。他们隐藏了这些类的实例是如何被创建和放在一起的。 整个系统关于这些对象所知道的是由抽象类所定义的接口。因此,创建型模式在什么被创建、谁创建它、它是怎样被创建的,以及何时被创建等方面给予你很大的灵活性。 下面将这