Многоядерные и многопоточные - PullRequest
1 голос
/ 09 апреля 2011

Как достигается многозадачность на основе процессов с помощью многопоточности в каждом процессе?

Например, рассмотрим, когда операционная система работает с двумя фоновыми процессами.Каждый процесс поддерживает внутреннюю многопоточность.Теперь, как происходит разделение времени между этими процессами и внутри них, и как происходит разделение времени между потоками?

Ответы [ 3 ]

2 голосов
/ 09 апреля 2011

Планировщик обычно работает на уровне потока.Проще говоря, планировщик по очереди передает каждому исполняемому потоку свой временной интервал.

Таким образом, процесс с двумя потоками получит вдвое больше процессорного времени, чем процесс с одним потоком.

1 голос
/ 09 апреля 2011

От:

http://msdn.microsoft.com/en-us/library/ms684259(VS.85).aspx

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

Длина временного интервала зависит от операционной системы и процессора. Поскольку каждый временной интервал мал (приблизительно 20 миллисекунд), кажется, что одновременно выполняется несколько потоков. Это действительно так в многопроцессорных системах, где исполняемые потоки распределяются между доступными процессорами. Однако при использовании нескольких потоков в приложении необходимо соблюдать осторожность, поскольку при слишком большом количестве потоков производительность системы может снизиться. "

Также проверьте Эта ссылка для того, когда использовать многозадачность

Операционная система решает, когда и как долго будет работать каждый поток. Для операционных систем Microsoft нет способа определить или предсказать, какой поток в каком процессе будет выполняться следующим. Каждый поток также имеет приоритет, с которым он работает. Потоки с более высоким приоритетом имеют тенденцию получать больше времени, чем с более низким. Этот приоритет может быть изменен пользователем или программой. См. эту ссылку для получения дополнительной информации.

0 голосов
/ 09 апреля 2011

"Теперь, как происходит разделение времени между этими процессами и внутри них, и как происходит разделение времени между потоками?"

Это зависит от операционной системы.Действительно базовая ОС может вообще не выполнять квантование времени и просто позволить каждому процессу завершаться в порядке поступления.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...