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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

icq: 446843180
skype: phoenix_proger
По умолчанию

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

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

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

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

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

icq: 446843180
skype: phoenix_proger
По умолчанию

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

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

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
процессор предоставляем механизм многозадачности.
на основе этого и работает многопоточность.
Наоборот. Многозадачность - это чисто осевое понятие, а многопоточность относится как к софту, так и к процессору. Например, 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
Адрес: Москва
Сообщений: 20,995
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
Наоборот. Многозадачность - это чисто осевое понятие, а многопоточность относится как к софту, так и к процессору.
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,806
Репутация: 2006
По умолчанию

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

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
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,806
Репутация: 2006
По умолчанию

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

icq: 446843180
skype: phoenix_proger
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность 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


03:45.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.