Когда лучше использовать интенсивный процессор или ввод-вывод кода в дочерних процессах [C ++] - PullRequest
0 голосов
/ 24 января 2020

Я получил экзаменационный вопрос и не знал ответа. Задача была:


Программист хотел бы создать очень быстрое приложение, поэтому он организует свое программное обеспечение в 13 процессов (родительский и 12 дочерних), все они работают параллельно. Дочерние потоки очень интенсивны:

  1. интенсивен ввод-вывод, поэтому очень часто используют системные вызовы (чтение / запись из файлов / каналов / сокетов, запись в стандартный вывод и т. Д. c.)
  2. Процессор загружен, поэтому очень часто используются системные вызовы:

Опишите, когда это будет хороший выбор, когда это будет плохой выбор, и мотивируйте свой ответ.


Номер 1 и 2, это разные вопросы. Так что ответ должен быть для обоих. Хорошие и плохие стороны интенсивного ввода-вывода, хорошие и плохие стороны интенсивного использования процессора. * Извините за неуместный топи c, я изменил его. * «Детские нити» были на экзаменационной работе. Я скопировал это. Я думаю, мой профессор хотел написать «процесс»


Спасибо

Ответы [ 2 ]

2 голосов
/ 24 января 2020

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

  1. интенсивный ввод / вывод, поэтому очень часто используются системные вызовы (чтение / запись из файлов / каналов / сокетов, запись в стандартный вывод и т. Д. c.)

Хорошая идея иметь такие процессы - это когда каждый процесс выполняет ввод / вывод (читает и / или пишет) с разных носителей. Плохая идея, когда они пытаются использовать один и тот же носитель и ждут друг друга.

На старых носителях, когда устройство должно перемещать головки чтения / записи между несколькими дорожками, это может серьезно снизить производительность.

Нагрузка на процессор, следовательно, очень часто используются системные вызовы

Вот ограничение на количество процессорных ядер в системе. В лучшем случае для каждого процессорного ядра требуется один процесс с интенсивным использованием процессора. Таким образом, если эти процессы используют одно и то же ядро, то это наихудшее, а когда каждый из них работает на разных ядрах, тогда это лучше. заставляя многопроцессорную обработку на одном ядре выполнять хуже, чем те же вычисления, выполняемые одним процессом (я полагаю, в руках мастера в обоих случаях).

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

0 голосов
/ 24 января 2020

Мой профессор помог мне с ответом.

  1. На самом деле было лучше иметь 13 ядер в P C, когда он использовал код с интенсивным использованием процессора
  2. Проблема заключалась в задержке, когда он имеет ввод / вывод интенсивный код. Так что лучше использовать меньше ядер, чтобы использовать их идеально.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...