OSDev

для всех
Текущее время: 22 окт 2017, 03:40

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




Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 23 фев 2015, 17:31 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Bargest писал(а):
Цитата:
хорошо что это не обо мне

А вспомните один из своих предыдущих постов.;-)

дык это ж не моё - эт павии :)


Цитата:
Ага, и мы получаем 900 отдельных задач (по числу потоков в системе, например, у меня), под каждую создаем свои таблицы преобразования адресов и бодаемся с межпроцессным взаимодействием, вместо того, чтобы просто запускать составные части одной задачи в одном ВАП.

так, давайте отделять мух от котлет

задача = приложение
поток = подзадача внутри задачи

на поток создается отдельная TSS ?
что вааще создается для потока ?


Цитата:
Скрин чего конкретно?
Код:
adb shell
su
ps
ls /proc/<pid>/task

И будет выведен список потоков процесса <pid>. Вы увидите пачку разных ID-шников. Скрин этого хотите или чего-то другого? Вот:
Изображение


pid - процесс ид - то есть индитификатор задачи, в линуксе каждому новому процессу (задаче) дается уникальный ид, который может только увеличиваться
использованный ид НИКОГДА больше не используется
так что реально у вас там 24 задачи
а скока потоков - не видно


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 17:52 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1056
imsushka
Вот не надо ко мне приписывать, то что я не говорил. Это вы у нас терминологией не владеите.
imsushka писал(а):
поток = подпрограмме
мне плювать что делает задача в своем адресном пространстве и когда
пусть задача свой шедулер организует


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:01 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Yoda писал(а):
pavia писал(а):
Зачем нужны потоки? Да потому что ...
А вообще да не нужны. Можно и процессами обойтись.

Да конечно можно. Но до тех пор, пока не возникла задача сообща обрабатывать один набор данных. Или (в рамках одного приложения) асинхронно реагировать на разные внешние раздражители.

pavia писал(а):
Программисту нужны простые инструменты. Потоки это один из них. Мы имеем параллельность при этом у нас нет защиты.

Потоки нужны не для защиты, вы неправильно понимаете предназначение потоков.


сори не павии, а мастера йоды

вот почему я не люблю сишные ссылки
можно не туда сослаться и система в бсоде


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:23 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
задача = приложение
поток = подзадача внутри задачи

на поток создается отдельная TSS ?
что вааще создается для потока ?

Для потока создается место для сохранения состояния (все регистры), а также некоторые доп параметры (принадлежность какому-то процессу, приоритет и т.д.). Потоками оперирует диспетчер, вставляя их в очередь планирования на соответствующий процессор/ядро, следовательно, создается еще структурка для очереди, + какие-то поля, необходимые для синхронизации и ожидания событий. Вероятно, очередь сообщений (от системы зависит). Короче, много всего.

Цитата:
так что реально у вас там 24 задачи
а скока потоков - не видно

Как раз-таки прекрасно видно, что запущено 42 процесса, в одном случайно взятом из них 24 потока (и там dalvik-код, т.к. процесс с именем java-пакета). Скриншот как раз иллюстрирует, что java-потоки в android есть лишь обертки над понятием системного потока в linux, и приведен специально по вашей просьбе, ведь ссылке на исходный код libdvm (dalvik) вы не поверили.

И кстати, по поводу "использованный ид НИКОГДА больше не используется" - ошибаетесь. Рано или поздно ID в линуксе начинают повторяться. Причем механизм выделения, насколько я помню, довольно простецкий, и этого "когда-нибудь" вполне реально дождаться, если создавать много коротких процессов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:43 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
pavia писал(а):

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

термин задача (task) стандартен для х86 и сделана аппаратно
поток (thread) отсутсвует в х86, он появляется только в ОСи

микроконтролер был приплетен в связи с объяснением возможности использования многопоточности програмно


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:52 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
термин задача (task) стандартен для х86 и сделана аппаратно

Я уже говорил - аппаратное переключение выкинули в x64, потому что выяснилось, что это сложно, медленно, дорого и вообще не нужно. Под x86 почти никто этот механизм не использует.


Последний раз редактировалось Bargest 23 фев 2015, 18:52, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:52 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Bargest писал(а):
Для потока создается место для сохранения состояния (все регистры), а также некоторые доп параметры (принадлежность какому-то процессу, приоритет и т.д.). Потоками оперирует диспетчер, вставляя их в очередь планирования на соответствующий процессор/ядро, следовательно, создается еще структурка для очереди, + какие-то поля, необходимые для синхронизации и ожидания событий. Вероятно, очередь сообщений (от системы зависит). Короче, много всего.

то есть клонируется задача, с общим сегментом (регионом) кода, возможно с общим сегментом (регионом) данных
так ?


Цитата:
Как раз-таки прекрасно видно, что запущено 42 процесса, в одном случайно взятом из них 24 потока (и там dalvik-код, т.к. процесс с именем java-пакета). Скриншот как раз иллюстрирует, что java-потоки в android есть лишь обертки над понятием системного потока в linux, и приведен специально по вашей просьбе, ведь ссылке на исходный код libdvm (dalvik) вы не поверили.

хоп, уговорил
поток = задаче

Цитата:
И кстати, по поводу "использованный ид НИКОГДА больше не используется" - ошибаетесь. Рано или поздно ID в линуксе начинают повторяться. Причем механизм выделения, насколько я помню, довольно простецкий, и этого "когда-нибудь" вполне реально дождаться, если создавать много коротких процессов.


да действительно, использутся, по циклу с 300 повторяется


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:55 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
то есть клонируется задача, с общим сегментом (регионом) кода, возможно с общим сегментом (регионом) данных
так ?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 18:57 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Bargest писал(а):
Цитата:
термин задача (task) стандартен для х86 и сделана аппаратно

Я уже говорил - аппаратное переключение выкинули в x64, потому что выяснилось, что это сложно, медленно, дорого и вообще не нужно. Под x86 почти никто этот механизм не использует.

ага 25 лет было, а тут раз и пропало
у меня ВыньХП - так что у меня есть

в линуксе тоже давно отказались от TSS. из за ограничения в 8000 задач

счас просто переключают корневую таблицу страниц
я тоже вроде так переключал


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 фев 2015, 19:00 

Зарегистрирован: 21 фев 2015, 10:39
Сообщения: 50
Bargest писал(а):
Цитата:
то есть клонируется задача, с общим сегментом (регионом) кода, возможно с общим сегментом (регионом) данных
так ?

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


клонирование - создание
какая разница
смысл в том что создается новая задача у которой часть или все АП общее с другой задачей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

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


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

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