OSDev
http://osdev.su/

давай новые архитектуды двигать
http://osdev.su/viewtopic.php?f=18&t=1056
Страница 4 из 5

Автор:  imsushka [ 23 фев 2015, 17:31 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

Bargest писал(а):
Цитата:
хорошо что это не обо мне

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

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


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

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

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

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


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

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


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

Автор:  pavia [ 23 фев 2015, 17:52 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

imsushka
Вот не надо ко мне приписывать, то что я не говорил. Это вы у нас терминологией не владеите.
imsushka писал(а):
поток = подпрограмме
мне плювать что делает задача в своем адресном пространстве и когда
пусть задача свой шедулер организует


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

Автор:  imsushka [ 23 фев 2015, 18:01 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

Yoda писал(а):
pavia писал(а):
Зачем нужны потоки? Да потому что ...
А вообще да не нужны. Можно и процессами обойтись.

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

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

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


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

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

Автор:  Bargest [ 23 фев 2015, 18:23 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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

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

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

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

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

Автор:  imsushka [ 23 фев 2015, 18:43 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

pavia писал(а):

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

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

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

Автор:  Bargest [ 23 фев 2015, 18:52 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

Цитата:
термин задача (task) стандартен для х86 и сделана аппаратно

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

Автор:  imsushka [ 23 фев 2015, 18:52 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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


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

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

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


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

Автор:  Bargest [ 23 фев 2015, 18:55 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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

Автор:  imsushka [ 23 фев 2015, 18:57 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

Bargest писал(а):
Цитата:
термин задача (task) стандартен для х86 и сделана аппаратно

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

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

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

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

Автор:  imsushka [ 23 фев 2015, 19:00 ]
Заголовок сообщения:  Re: давай новые архитектуды двигать

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

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


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

Страница 4 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/