Недавно я задал этот вопрос в интервью, и, хотя я делал все в порядке в первых двух частях [я предполагаю], я немного потрудился на третьем. Здесь вопрос:
У вас есть две Linux-программы: A и B. Когда вы запускаете отдельно, каждый A и B выполняют одну минуту, чтобы завершить работу в системе, которая только что была перезапущена. [то есть: новая система: вы перезагрузите ее, войдите в систему, получите приглашение оболочки, запустите программу.]
Что вы можете рассказать мне о программах, если:
a) при запуске вместе они занимают 2 минуты б) при запуске вместе они занимают 1 минуту c) при запуске вместе они занимают 30 секунд.
Я сказал для a), что если они берут ровно вдвое больше времени, когда они работают вместе, они не разделяют взаимного исключения и соперничают за все те же ресурсы, возможно, не используют каких-либо данных или инструкций кэш-памяти [и, таким образом, 't помогать друг другу из перспективы кеша], и каждая программа нуждается в полном использовании указанного ресурса для завершения, так что ОС не может их распараллелить.
В b) я сказал, что если они могут работать так же быстро вместе, они, вероятно, разделяют пространственную/временную локальность в наличных деньгах и могут поддаваться надлежащей конвейерной обработке таким образом, что, хотя программа A ожидает что-то, программа B может работать между этими этапами и наоборот - эффективно запускать их в течение одной минуты.
Для c), я немного застрял. Оглядываясь назад, я, вероятно, должен был сказать, что, возможно, программы A и B выполняли общую задачу, когда два из них одновременно запускали задачу быстрее, чем одна, работающая одна - например, сборщик мусора. Но самое лучшее, что я мог придумать, было то, что, возможно, они загрузились из одного сектора на жесткий диск, и это помогло им вместе работать быстро.
Я просто ищу информацию от некоторых из умников здесь о вещах, которые я, вероятно, пропустил. Позиция была для позиции платформ/систем, которые требуют хорошего понимания аппаратного/программного обеспечения и операционных систем, а именно взаимодействия между ними, поэтому [я предполагаю] задан вопрос.
Я также пытался придумать примеры, которые я мог бы применить к каждой части, чтобы показать свои знания о реальных приложениях для жизни, но на месте я немного отставал.