📜  门| GATE-CS-2015(Set 1)|问题16(1)

📅  最后修改于: 2023-12-03 15:12:42.488000             🧑  作者: Mango

门 | GATE-CS-2015(Set 1) | 问题16

这是GATE-CS-2015(Set 1)的问题16,旨在考察程序员在操作系统中的知识。

问题描述

假设您有一个应用程序P,该应用程序需要消耗$120$秒的CPU时间以完成其工作。您有两个处理器P1和P2,它们每秒钟可以使用$60%$和$80%$的CPU时间。使用一个shell脚本编写一个程序来启动P,让P在最短时间内完成其工作。

解题思路

由于P1和P2的性能不同,我们需要考虑优先启动哪一个处理器以获得最佳性能。为了找到最佳解决方案,我们需要比较使用P1和P2的时间。

首先,计算P在单个处理器上执行所需的时间:

120 / 1 = 120

然后,计算P在P1和P2上的执行时间:

120 / 0.6 = 200
120 / 0.8 = 150

从上面的计算中,我们可以得出结论:使用P2处理器可以让P在最短时间内完成其工作。

因此,我们必须优先启动P2处理器,然后再启动P1处理器。可以使用以下shell脚本来实现此目的:

#!/bin/bash

# Start P on P2 processor
./P & pid1=$!

# Sleep for the amount of time it takes P to complete on P2 (in seconds)
sleep 150

# Start P on P1 processor
./P & pid2=$!

# Wait for both processes to finish
wait $pid1
wait $pid2

在这个脚本中,我们首先启动P2处理器,并在后台运行应用程序P。然后我们睡眠$150$秒,这是程序在P2处理器上执行的时间,然后再启动P1处理器,并在后台运行应用程序P。最后,我们等待两个进程完成执行。

总结

本文介绍了如何使用shell脚本来编写一个程序来启动P,让P在最短时间内完成其工作。我们考虑使用P1和P2处理器的性能比较,并选择使用P2处理器以获得最佳性能。如果您有任何问题或疑问,请在评论中留言。