OSDev

для всех
Текущее время: 03 май 2024, 21:40

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 31 май 2007, 17:49 

Зарегистрирован: 02 май 2007, 14:25
Сообщения: 126
Я считаю, что надо непосредственно в ядре поддерживать потоки. Имхо потоки программным способом - это костыль :).
Что касается системных вызовов, то набор их по работе с потоками надо сделать минимальным (создание, уничтожение, останов). Остальное всё вынести в прикладную библиотеку.
При этом ещё планировщику надо будет выбирать, какому из потоков давать возможность обрабатывать приходящий извне сигнал. Обычно это поток, который был создан первым :).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 31 май 2007, 18:57 
А я думаю есть два взгляда на единицы выполнения...
Вернее три взгляда, но третий - это взгляд майкрософт, о нем позже...

Первый взгляд - это процессы...
Системы организовывались на основе процессов, и даже ядерные нити в таких системах - суть костыли. В линуксе каждая нить - это как-бы отдельный процесс. но они там как бы шарятся между собой, и получается общее адресное пространство. там какие-то объединяющие сущности применяются...
То есть получается Процесс - это все, а нить - это условность, данная нам в ощущениях через АПИ. :)

Теперь про нитиевую архитектуру. первичными здесь являются нити... нити планируются и выполняются... а процесс - это нечто трудно формализуемое, которое несет только объединяющие нити функции. типа виртуальная объединяющая сущность.

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

Последним путем движется MDF.

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

А что касается pthreads - то это обычно расшифровывается как POSIX Threads, то есть некий стандарт API...
legos, если ты говоришь про нити вообще то употребление этого термина некорректно.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 31 май 2007, 20:30 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Мне больше нравятся потоки внутри процесса. Хотя межпроцессное планирование, естественно, нужно выполнять с учетом состояния потоков процессов. POSIX-модель с клонированием адресных пространств от предка потомку, а также реализация потоков как процессов с общим адресным пространством мне не нравится. Поддержка потоков должна быть в ядре, потому что во-первых так эффективнее выполнять планирование в целом в системе, а во-вторых не всем прикладникам захочется вникать в многопоточность, реализованную кем-то другим на прикладном уровне, и тем более реализовывать ее самостоятельно. Просто нужно позаботиться о том, чтобы возможностей ядра хватало и на тот случай, когда кто-то все-таки захочет реализовать многопоточность в обход специализированных функций ядра, т.к. допускаю, что для решения определенных задач данный вид многопоточности может оказаться менее ресурсоемким.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 31 май 2007, 20:37 
Phantom-84, Слишком много возможностей - это плохо ИМХО... :) Нужна одна система планирования - единственно правильная! :)

Хотя алгоритмы планирования можно менять. :)


Вернуться к началу
  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 31 май 2007, 21:05 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Dron, система планирования в рамках ядра одна. Она обычно выбирается так, чтобы быть, повторяю, эффективной в целом. А облегченные варианты многопоточности для решения частных задач могут быть выполнены и на прикладном уровне с помощью тех средств ядра, которые в общем-то предназначены для других целей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 31 май 2007, 21:21 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Не все виды многопоточности можно реализовать исключительно на прикладном уровне, например, осуществить файловый ввод-вывод и при этом постоянно контролировать отклик наврядли получится без системной поддержки многопоточности (хотя здесь все зависит от уровня сложности реализации обрабортки сигналов). Надеюсь, основной вопрос топика снят?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 01 июн 2007, 15:56 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Цитата:
Насчет первого пункта наверное согласен, а вот со вторым -- не очень, если "прикладники" будут использовать многопоточность, им в любом случае придется в неё вникать. Для них реализация в ядре или в библиотеке - не будет иметь разницы, всё одинаково скрывается библиотеками.

//legos
Я почти уверен, что ты с большим энтузиазмом станешь использовать стандартную, нежели стороннюю библиотеку при условии, что они предоставляют одни и те же возможности. Я, например, точно стану : - ) Смысл сказанного мной ранее заключается именно в этом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 01 июн 2007, 16:13 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
[ontop]
Цитата:
не всем прикладникам захочется вникать в многопоточность, реализованную кем-то другим на прикладном уровне, и тем более реализовывать ее самостоятельно.

//Я

[/ontop] :mrgreen:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация многопоточности
СообщениеДобавлено: 01 июн 2007, 16:20 
В многопоточность не надо вникать... ее надо понимать! :)

А в остальном - чем прозрачнее и проще это реализовано - тем лучше.


Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB