首页
题库
面试
求职
学习
竞赛
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收藏
16035浏览
热门推荐
相关试题
以下指令集架构属于复杂指令集架构的是?
阿里巴巴
编译和体系结构
评论
(15)
来自
阿里巴巴2015实习生笔试题
考虑左递归文法S->Aa|b...
腾讯
编译和体系结构
评论
(4)
来自
腾讯2013研发工程师笔试题
你怎么理解的分配延迟?
腾讯
编译和体系结构
评论
(3)
来自
腾讯2013研发工程师笔试题
在一个子网掩码为255.255.2...
FTTX
计算机网络
测试
后端开发
客户端开发
前端开发
数据
运维/技术支持
评论
(2)
滑动窗口中位数
哈希
堆
双指针
评论
(3)
扫描二维码,关注牛客网
意见反馈
下载牛客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