首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
假定我们有3个程序,每个程序花费80%的时间进行IO,20
[单选题]
假定我们有3个程序,每个程序花费80%的时间进行I/O,20%的时间使用CPU。每个程序启动时间和其需要使用进行计算的分钟数如下,不考虑进程切换时间:
程序编号 启动时间 需要CPU时间(分钟)
1 00:00 3.5
2 00:10 2
3 00:15 1.5
请问,在多线程/进程环境下,系统的总响应时间为( )
22.5
23.5
24.5
25.5
添加笔记
邀请回答
收藏(784)
分享
11个回答
添加回答
54
推荐
牛客444334号
B
0~10分钟内,只有一个进程在跑,进程1总共使用了10*0.2=2分钟的CPU,10*0.8=8分钟的IO,还剩下1.5分钟的CPU要使用;
10~15这5分钟内,有进程1和进程2两个进程,CPU利用率为1-0.8*0.8=0.36,所以CPU一共跑了5*0.36=1.8分钟,假定两个进程完全平等,CPU使用时间平分,则每个进程使用了1.8/2=0.9分钟的CPU时间,这样进程1剩下1.5-0.9=0.6分钟的CPU,进程2剩下2-0.9=1.1分钟的CPU;
15开始,有3个进程, CPU利用率为1-0.8*0.8*0.8=0.488,此时X分钟之内,CPU总共执行了0.488*X分钟,由于三个进程平分,所以每个进程的CPU使用时间为0.488*X/3, 所以进程1在 0.6*3/0.488=3.69分钟之后,也就是15+3.69=18.69分完成;
之后CPU利用率又为0.36(两个进程),此时进程2剩下1.1-0.6=0.5分钟的CPU,进程3剩下1.5-0.6=0.9分钟的CPU, 之后进程2在在0.5*2/0.36=2.78分钟之后也就是2.78+18.69=21.46时候进程2结束;
之后进程3开始单跑,此时进程3还剩下 0.9-0.5=0.4的CPU时间,此时的CPU利用率为0.2,0.4/0.2=2, 即2分钟之后进程3结束,也就是21.46+2=23.46≈23.5 所以答案应该选B
参考:http://blog.csdn.net/sunmenggmail/article/details/8022532
编辑于 2015-02-05 17:57:44
回复(2)
13
TaskMachine
我的算法不太一样,我考虑的是I/O本身不占用CPU,1,2,3程序的时间如下,假设每个进程都是先进行I/O的,那么每个进程的CPU计算时间并不冲突:
1、14s + 3.5s 17.5s
2、10s + 8s(进程1已经计算完毕) + 2s 20s
3、15s + 7.5s(进程2已经计算完) + 1.5s 22.5s
所以一共的响应时间是22.5s
发表于 2015-09-05 19:56:43
回复(7)
6
好学上进
题目问系统的总响应时间,而系统的调度目标是使总响应时间尽可能地小。那么,怎么使总响应时间最小呢?
注意到,CPU是共享(竞争)的,而IO是各自的,所以,系统的调度只要满足“
在使用CPU上不引起冲突(发生竞争
)
”这一条件,就不会有时间上的耽搁,就能使总响应时间最小。
由题意易知程序1、2、3的IO时间分别为14、8、6,在这一条件下,不引起CPU使用冲突是可以做到的,而且调度方法有无数多种(因为题目并没有规定是先IO还是先使用CPU,或者两者交替,这些都没有说,那我们就可以认为是任何形式)。
下面两幅图分别给出了“先使用CPU后进行IO”和“先进行IO后使用CPU”两种情况的图解,一目了然。
图中阴影部分表示使用CPU时间,空白部分表示进行IO时间。
可见,只要不引起CPU冲突,每个程序都能从一开始一口气执行完,总响应时间由最后执行完的程序决定。
对于本题,只要不引起CPU冲突,总响应时间都是
15(程序3开始时间)+1.5(程序3使用CPU时间)+6(程序3进行IO时间)=22.5
发表于 2016-09-06 10:10:43
回复(1)
1
NewObject
http://blog.csdn.net/xu3737284/article/details/22203553
发表于 2015-09-06 11:06:13
回复(0)
1
雄
有两个前提假设: 1. 程序运行过程中,cpu使用时间平均分布在程序整个生命周期 2. 线程优先级相同,资源分配使用最公平的分配方式(即时间片很短的分时调度)
发表于 2015-08-16 09:39:36
回复(0)
2
从来不作
第二题究竟是A还是B,感觉有争议啊
发表于 2015-09-05 15:33:40
回复(2)
0
久居福毛线
只有一个进程的时候,CPU利用率肯定是20%。
两个进程的时候:CPu利用率是:20% + (1-20%)*20% = 36%
三个进程是:36% + (1-36%)*20% = 48.8%
发表于 2024-08-22 16:59:50
回复(0)
0
牛客444683864号
1、14s + 3.5s 第17.5s结束
2、10s + 8s(进程1已经计算完毕) + 2s 第20s
结束
3、15s + 7.5s(进程2已经计算完) + 1.5s 第22.5s
结束
所以系统响应时间是0-22.5s,总共是23.5s
发表于 2021-05-19 16:35:15
回复(0)
0
Ma-Hong-Kai
自己找了下 http://lib.csdn.net/article/operatingsystem/30754
发表于 2016-08-01 22:51:51
回复(0)
0
牛客407258号
最主要的就是要知道CPU的利用率随着进程的增加而增加,不是一成不变的20%。CPU利用率=1—p的n次方。p是I/O的操作时间,n是进程的数量。
发表于 2016-04-22 00:01:09
回复(0)
0
vera_in_may
我算出来是22.5,是根据CPU的时间算的。17.5+2.5+2.5=22.5
发表于 2015-09-09 11:28:31
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
编译和体系结构
腾讯
来自:
腾讯2013研发工程师笔试题
上传者:
淑女不是姐的范
难度:
11条回答
784收藏
15957浏览
热门推荐
相关试题
以下指令集架构属于复杂指令集架构的是?
阿里巴巴
编译和体系结构
评论
(15)
来自
阿里巴巴2015实习生笔试题
什么是内存抖动(Thrashing)?
腾讯
编译和体系结构
评论
(1)
来自
腾讯2013研发工程师笔试题
下列说法正确的有()
协议与标准
常用网络通信协议
评论
(1)
统计字符串中的重叠子串长度之和
58集团
测试工程师
2020
测试开发工程师
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
0~10分钟内,只有一个进程在跑,进程1总共使用了10*0.2=2分钟的CPU,10*0.8=8分钟的IO,还剩下1.5分钟的CPU要使用;
之后CPU利用率又为0.36(两个进程),此时进程2剩下1.1-0.6=0.5分钟的CPU,进程3剩下1.5-0.6=0.9分钟的CPU, 之后进程2在在0.5*2/0.36=2.78分钟之后也就是2.78+18.69=21.46时候进程2结束;
之后进程3开始单跑,此时进程3还剩下 0.9-0.5=0.4的CPU时间,此时的CPU利用率为0.2,0.4/0.2=2, 即2分钟之后进程3结束,也就是21.46+2=23.46≈23.5 所以答案应该选B
参考:http://blog.csdn.net/sunmenggmail/article/details/8022532