多道程序设计模型

采用多道程序设计可以提高CPU的利用率。严格地说,如果进程用于计算的平均时间是进程在内存中停留时间的20%,且内存中同时有5个进程,则CPU将一直满负载运行。然而,这个模型在现实中过于乐观,因为它假设这5个进程不会同时等待I/O。

更好的模型是从概率的角度来看CPU的利用率。假设一个进程等待I/O操作的时间与其停留在内存中时间的比为p。当内存中同时有n个进程时,则所有n个进程都在等待I/O(此时CPU空转)的概率是pn。CPU的利用率由下面的公式给出:

CPU利用率 = 1-pn

 

图2-6以n为变量的函数表示了CPU的利用率,n称为多道程序设计的道数(degree of multiprogramming)。

从图2-6中可以清楚地看到,如果进程花费80%的时间等待I/O,为使CPU的浪费低于10%,至少要有10个进程同时在内存中。当读者认识到一个等待用户从终端输入的交互式进程是处于I/O等待状态时,那么很明显,80%甚至更多的I/O等待时间是普遍的。即使是在服务器中,做大量磁盘I/O操作的进程也会花费同样或更多的等待时间。

从完全精确的角度考虑,应该指出此概率模型只是描述了一个大致的状况。它假设所有n个进程是独立的,即内存中的5个进程中,3个运行,2个等待,是完全可接受的。但在单CPU中,不能同时运行3个进程,所以当CPU忙时,已就绪的进程也必须等待CPU。因而,进程不是独立的。更精确的模型应该用排队论构造,但我们的模型(当进程就绪时,给进程分配CPU,否则让CPU空转)仍然是有效的,即使图2-6的真实曲线会与图中所画的略有不同。

虽然图2-6的模型很简单,很粗略,它依然对预测CPU的性能很有效。例如,假设计算机有512MB内存,操作系统占用128MB,每个用户程序也占用128MB。这些内存空间允许3个用户程序同时驻留在内存中。若80%的时间用于I/O等待,则CPU的利用率(忽略操作系统开销)大约是1-0.512(0.83,原文这里有笔误),即大约49%。在增加512MB字节的内存后,可从3道程序设计提高到7道程序设计,因而CPU利用率提高到79%。换言之,第二个512MB内存提高了30%的吞吐量。

增加第三个512MB内存只能将CPU利用率从79%提高到91%,吞吐量的提高仅为12%。通过这一模型,计算机用户可以确定第一次增加内存是一个合算的投资,而第二个则不是。

文章转自:http://book.51cto.com/art/200907/137662.htm

时间: 2024-10-10 04:06:43

多道程序设计模型的相关文章

什么是多道程序设计技术,试述多道程序运行的特征。

多道程序设计技术是在计算机主存中同时存放几道相互独立的程序,它们在操作系统控制之下,相互穿插的运行. 多道程序运行的特征: 1.多道:计算机主存中同时存放几道相互独立的程序. 2.宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们都开始运行,但都未运行完毕. 3.微观上串行:从微观上看,主存中的多道程序轮流或分时地占有处理机,交替运行.

设计模型MVC和JavaBean

六.设计模型1和设计模型2(MVC)1.模型1:JSP+JavaBean2.模型2:MVC M:Model模型 JavaBean V:视图 JSP C:控制器 Servlet 七.模型1开发一个简单的web计算器八.EL表达式EL:Expression Language的缩写,表达式语言.基本语法形式:${EL表达式}1.作用:替换掉JSP中的java表达式<%=%>2.功能: a.从域中获取数据,并把数据显示在页面上.不会出现控制指针异常. ${p.name}: Java: Person p

SSAS 表格设计模型--外键

表格设计模型中,同多维设计模型相似, 维表和事实表相互独立,通过关系数据库中的外键来联系,互相关联构成一个统一的架构. DB中外键是需要唯一性约束的,即A表某列建立主键或者唯一键后,B表才可以引用为外键. 多维设计模型--星型结构 星形架构(star schema)是以事实表为核心,其他的维表围绕这个核心表呈星形分布,维表彼此之间没有任何联系,每个维表中的主键都只能是单列的,同时该主键被放置在事实表中,作为事实表与维表连接的外键. 表格设计模型-- 在创建关系时,提示:无法创建关系,因为每个列都

建立分析模型和设计模型

OOA面向对象分析 面向对象分析产生三种分析模型 功能模型(即用例模型à作为输入) 对象模型:对用例模型进行分析,把系统分解成互相协作的分析类,通过类图/对象图描述对象/对象的属性/对象间的关系,是系统的静态模型 动态模型:描述系统的动态行为,通过时序图/协作图描述对象的交互,以揭示对象间如何协作来完成每个具体的用例,单个对象的状态变化/动态行为可以通过状态图来表达  OOD面向对象的设计 OOD是对OOA的细化  没有严格的界线  OOD的结果直接用于编码 ?   与OOA的输出一样,只是更加

设计模型

完成了“领域模型”阶段后,面向对象已经初具雏形,我们已经看到了那熟悉的“对象”了,例如“商品”.“交易”.“商品清单”等,看起来已经进入了面向对象的世界了,你是否已经摩拳擦掌,跃跃欲试,准备开始编码了呢? 且慢,“领域模型”只是万里长征的第一步,通过领域模型分析得到的类还不能指导编码,还需要经过“设计模型”这个阶段的处理,才能基本上指导编码. 前面我们提过,领域模型的对象是没有方法的,但最终的实现肯定是有方法的,因此设计模型的第一个任务就是“为对象添加方法”. 那么是否给领域模型中的对象添加完方

JSON/xml、Processing 以及收集Java的设计模型

JSON简介: 1.基本介绍 JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 2.JSON语法 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字

JavaEE 设计模型

关于JavaEE的设计模型参见博客: https://www.cnblogs.com/TomFord/p/10736163.html 里面是根据学习和参见大牛博客所编辑的,希望大家一起交流学习. 原文地址:https://www.cnblogs.com/TomFord/p/10834203.html

Django框架(二):设计模型

1. 设计模型 我们之前操作数据库是通过写sql语句,那么能不能不写sql语句就可以操作数据库呢? 当然可以,这就要使用ORM框架了. 1.1 ORM框架 O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据.ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表

模块、设计模型、前端面试题积累

re 的 match 和 search 区别? match()函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None import re s1 = 'abcabcabc' print(re.match('abc', s1)) print(re.match('abc', s1).group()) print(re.match('abc', s1).span()) search()函数会在整个字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用