Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Операционные системы > Операционные системы общие вопросы
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 16.04.2012, 10:15   #1
lalilulelo
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 23
По умолчанию Многопоточность

Хай. Кто может разъяснить про многопоточность? Есть небольшая запутанность. Меня интересует знает ли железо или ОС про многопоточность определенного процесса или процессу просто предоставляется время ЦП и сам процесс устроен таким образом, что сам переключается между своими потоками?
lalilulelo вне форума Ответить с цитированием
Старый 16.04.2012, 10:19   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

процессор предоставляем механизм многозадачности.
на основе этого и работает многопоточность.

ОС естественно об этом знает, ведь она включает же этот механизм.
и именно ОС распределяет кванты времени потокам.

железу какому?
проц в курсе, а остальному пофиг на самом деле, ибо железо не вызывает код напрямую.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.04.2012, 12:11   #3
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,557
По умолчанию

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

Цитата:
проц в курсе,
Да? А я думал проц просто выполняет низкоуровневые инструкции.
the_deer_one вне форума Ответить с цитированием
Старый 16.04.2012, 12:42   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

механизм нитей, не является сильно надежным.

а вот та многозадачность что мы видим, обеспечивает сам проц, ОС лишь использует это(что логично)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.04.2012, 12:57   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,997
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
процессор предоставляем механизм многозадачности.
на основе этого и работает многопоточность.
Наоборот. Многозадачность - это чисто осевое понятие, а многопоточность относится как к софту, так и к процессору. Например, hyper-threading позволяет одному ядру работать с двумя потоками (эмуляция многоядерности).

Оси вообще без разницы, установлены ли несколько процессоров, либо один многоядерный процесор или одноядерный проц с hyper-threading.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
механизм нитей, не является сильно надежным.

а вот та многозадачность что мы видим, обеспечивает сам проц, ОС лишь использует это(что логично)
Открой task manager, и, если у тебя Win7, ты увидишь, что в данный момент у тебя работает (или, скорее, простаивает) несколько сотен потоков, которые винда раздаёт по процессорам. Да и на одноядерных процессорах многозадачные системы отлично себя чувствовали.

Довольно подробно эта тема описана в главе 25 "CLR via C#" Рихтера (только в 3-м издании).

Последний раз редактировалось ds.Dante; 16.04.2012 в 13:04.
ds.Dante вне форума Ответить с цитированием
Старый 16.04.2012, 13:01   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

Цитата:
Наоборот. Многозадачность - это чисто осевое понятие, а многопоточность относится как к софту, так и к процессору.
Task это термин проца в первую очередь, ОС обычно рулит потоками(и обычно уж с помощью этого самого Task Switch).
Цитата:
Например, hyper-threading позволяет одному ядру работать с двумя потоками (эмуляция многоядерности)
Оси вообще без разницы, установлены ли несколько процессоров, либо один многоядерный процесор или одноядерный проц с hyper-threading.
это относится лишь к планировщику потоков.
Цитата:
Открой task manager, и, если у тебя Win7, ты увдидшь, что в данный момент у тебя работает (точнее, простаивает) несколько сотен потоков.
и к чему это?
потоки простаивают, планировщик потоков не дает им квантов, потому что они в ядерном ожидании.

PS: почитайте про TSS.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 16.04.2012 в 13:08.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.04.2012, 13:26   #7
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вот та многозадачность что мы видим, обеспечивает сам проц, ОС лишь использует это(что логично)
в 32-разрядных Windows встроенный в процессор механизм многозадачности не используется. а на 64-разрядных системах данный механизм вообще не поддерживается
rpy3uH вне форума Ответить с цитированием
Старый 16.04.2012, 13:26   #8
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,997
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Task это термин проца в первую очередь
По-моему, наоборот. http://en.wikipedia.org/wiki/Computer_multitasking
Цитата:
Even on computers with more than one CPU (called multiprocessor machines), multitasking allows many more tasks to be run than there are CPUs. Operating systems may adopt one of many different scheduling strategies...


Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ОС обычно рулит потоками(и обычно уж с помощью этого самого Task Switch).
Переключение контекста - тяжеловесная операция самой оси, и процессор тут никак ей не помогает.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
это относится лишь к планировщику потоков.
Hyper-threading сохраняет одновременно два контекста потоков и переключает их на аппаратном уровне. Но это всё равно эмуляция двух процессоров.

Последний раз редактировалось ds.Dante; 16.04.2012 в 13:29.
ds.Dante вне форума Ответить с цитированием
Старый 16.04.2012, 13:32   #9
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

Цитата:
Сообщение от ds.Dante Посмотреть сообщение
Hyper-threading сохраняет одновременно два контекста потоков и переключает их на аппаратном уровне. Но это всё равно эмуляция двух процессоров.
Hyper-threading - полностью прозрачный механизм для ОС. и вообще эта технология тут ни причём
rpy3uH вне форума Ответить с цитированием
Старый 16.04.2012, 13:49   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

ds.Dante, естественно ктото должен этим управлять, или проц делает все по наитию?
Цитата:
а на 64-разрядных системах данный механизм вообще не поддерживается
с 64 я не работал, потому спорить не буду.
Цитата:
в 32-разрядных Windows встроенный в процессор механизм многозадачности не используется.
идет на основе все тех же нитей?
возможно не буду спорить, с реализацией в ОС(в ядре) оно может хорошо работать.
я же говорил про внутрипользовательскую реализацию, с ней уже есть напряг.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность alex0097 Общие вопросы Delphi 3 05.05.2011 22:46
Многопоточность WennY Общие вопросы Delphi 11 23.04.2011 00:46
многопоточность @lenk@ Помощь студентам 1 26.10.2010 20:50
многопоточность DeDoK Общие вопросы Delphi 6 01.08.2010 02:14
Многопоточность JakSon Общие вопросы Delphi 10 27.12.2009 03:19