2009-08-12 1 views
0

Если есть, то какое отношение?Есть ли какое-либо отношение между процессором и потоками?

+4

это звучит как домашнее задание. что этот вопрос отсутствует, это простой термин «Объяснить» или «Объяснить в предоставленном пространстве». – akf

+0

Если я сделаю неплохой вопрос, это будет звучать как домашнее задание ??? – Johanna

ответ

2

Один процессор (ядро) может запускать только один поток одновременно.

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

1

Нить - это единица работы, назначенная ядру процессора.

В любой момент любая нить либо приостановлена ​​(не работает), либо работает на одном сердечнике. Каждое ядро ​​либо бездействует (не работает нить), либо работает ровно по одному потоку.

Назначение потоков для ядер является заданием планировщика операционной системы.

2

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

12

Подумайте о процессоре как о человеке и о потоке как о единственной задаче, которую должен выполнить человек.

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

Но этот человек может делать только одну вещь за раз.

Revisit 2013: Обратите внимание, что вышеуказанное не обязательно верно. Прежде всего, один «процессор» теперь имеет несколько ядер, каждый из которых способен выполнять несколько операций одновременно с конвейерами, а что нет. Это гораздо более сложный мир, чем просто «один процессор может делать только одно за раз».

+2

Pig-swill! Моя жена может делать все это и многое другое с истинным параллелизмом, кроме того, что у нас нет кошки или собаки :-) +1. – paxdiablo

+1

Возможно, ваша жена - это гиперпотоковый многоядерный процессор? :) – Thorarin

+2

Может быть * Pax * является мормоном –

1

Есть возможно кратно соотношение, в зависимости от архитектуры системы:

  • для одного случая процессора, соотношение равно 1: N (где N есть число нитей). Все будет работать на этом одиночном процессоре
  • для многопроцессорного/многоядерного/гиперпотокового корпуса, отношение приблизительно равно P: N (где P - количество процессоров), однако, поток потока становится «многомерным», проблема планирования.

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

Например, если у вас есть 1 интенсивный вычислительный поток и 10 потоков ввода-вывода с большим количеством ожиданий, планировщик ОС, скорее всего, назначит T1-P1 и T2-T11 на P2 и отключит остальные ядра для энергосбережение и перераспределение кеша в пользу P1. T1 станет всем ядром для его использования и не будет вытесняться T2-T11.

Смежные вопросы