小编End*_*iel的帖子

两个程序的运行时间分别运行,然后一起运行

我最近在一次采访中被问到这个问题,虽然我在前两部分做得很好[我假设]我在第三部分上做了一些努力.这是问题:

您有两个Linux程序,A和B.当单独运行时,A和B每个都需要一分钟才能完成刚刚重新启动的系统.[即:新系统:重新启动它,登录,获取shell提示符,运行程序.]

如果有以下情况,您可以告诉我有关这些计划

a)一起跑,他们需要2分钟b)一起跑,他们需要1分钟c)一起跑,他们需要30秒

我说过:a)如果他们在一起运行时花费的时间恰好是两倍,他们就不会互相排斥,并且正在争夺所有相同的资源,可能不会共享任何类型的缓存数据或指令[因此没有帮助从缓存的角度来看彼此相对,并且每个程序需要完全利用所述资源来完成,使得OS不能并行化它们.

对于b),我说如果它们能够一起快速运行,它们可能在现金中共享一些空间/时间局部性,并且可以使得它们能够以这样的方式正确地流水线化,即当程序A在等待某些东西时,程序B可以在这些阶段之间运行,反之亦然 - 在1分钟内有效地运行它们.

对于c),我有点卡住了.回想起来,我可能应该说,也许程序A和B都在做一个共同的任务,其中两个同时运行可以比单独运行的任务更快地完成所述任务 - 例如垃圾收集器.但我能想到的最好的结果是它们可能是从硬盘上的同一扇区中加载出来的,这有助于它们一起快速运行.

我只是在寻找一些我可能错过的东西的一些聪明人的意见.这个位置是针对平台/系统的位置,需要很好地理解硬件/软件和操作系统,以及它们之间的相互作用,这就是为什么[我假设]问的问题.

我也试着想一些可以应用于每个部分的例子,以帮助展示我对现实生活应用程序的问题的知识,但当场我很简短.

c++ architecture linux parallel-processing

29
推荐指数
2
解决办法
1813
查看次数

标签 统计

architecture ×1

c++ ×1

linux ×1

parallel-processing ×1