время работы двух программ, запускаемых отдельно, а затем вместе

Мне недавно задали этот вопрос в интервью, и хотя я справился с первыми двумя частями [я предполагаю], я немного усомнился в третьей. Вот вопрос:

У вас есть две программы Linux, A и B. При отдельном запуске каждой из A и B требуется одна минута для завершения в системе, которая только что была перезапущена. [например: новая система: вы перезагружаете ее, входите в систему, получаете приглашение оболочки, запускаете программу.]

Что вы можете сказать мне о программах, если:

a) при совместном запуске они занимают 2 минуты На выполнение операций A и B в системе, которая только что была перезапущена, требуется одна минута. [например: новая система: вы перезагружаете ее, входите в систему, получаете приглашение оболочки, запускаете программу.]

Что вы можете сказать мне о программах, если:

a) при совместном запуске они занимают 2 минуты На выполнение операций A и B в системе, которая только что была перезапущена, требуется одна минута. [например: новая система: вы перезагружаете ее, входите в систему, получаете приглашение оболочки, запускаете программу.]

Что вы можете сказать мне о программах, если:

a) при совместном запуске они занимают 2 минуты б) когда бегают вместе, они занимают 1 минуту c) когда они работают вместе, они занимают 30 секунд

Я сказал для a) что если они занимают ровно в два раза больше времени при совместной работе, они не разделяют взаимного исключения и соперничают за все те же ресурсы, вероятно, не разделяют никаких типа данных или инструкций кэша [и, таким образом, не помогают друг другу с точки зрения кеширования], и каждая программа требует полного использования указанного ресурса для завершения, так что ОС не может распараллелить их.

Для b) я сказал что, если они могут работать так же быстро вместе, они, вероятно, разделяют некоторую пространственную / временную локальность в деньгах и могут поддаваться должной конвейерной обработке таким образом, что, пока программа A чего-то ожидает, программа B может работать между этими этапов, и наоборот - эффективно запустить их за 1 минуту.

Что касается c), я немного застрял. Ретроспективно, Я, вероятно, должен был сказать, что, возможно, программы A и B выполняли общую задачу, при которой две из них, запущенные одновременно, могли выполнить указанную задачу быстрее, чем одна, работающая в одиночку, например, сборщик мусора. Но лучшее, что я мог придумать, это то, что, возможно, они загружались из одного и того же сектора на жестком диске, и это помогло им обоим быстро работать вместе.

Я просто ищу информацию от некоторых умников здесь, на вещи, которые я, вероятно, пропустил. Позиция была для позиции платформ / систем, которая требует хорошего понимания аппаратного / программного обеспечения и операционных систем, а именно взаимодействия между ними, поэтому [я предполагаю] этот вопрос был задан.

Я также пытался думать примеров, которые я мог бы применить к каждой части, чтобы показать мои знания вопросов, касающихся реальных приложений, но тут же я ошибся.

29
задан Cœur 29 December 2016 в 05:54
поделиться