Andrii
А что за прекол с решеткой ю
Хэштеги, надо, наверное, так писать #if
Vladislav
во прикол, я получается все основы знаю)
Борисов
А вот как осуществляется системный вызов?
Хороший вопрос ) Вот в ассемблере помню немного ) Складываешь в регистры нужные параметры, потом типа прерывание int $0x80
Avazart
Я вот тебя спрашиваю.
Andrii
Хороший вопрос ) Вот в ассемблере помню немного ) Складываешь в регистры нужные параметры, потом типа прерывание int $0x80
Ну... это от архитектуры зависит, практика показала, что это, конечно, не настолько тормознутый путь как специальные инструкции ENTER и LEAVE, но можно быстрее
Andrii
Ты же писал это
Наверное... Правильный ответ: в Linux потоки и процессы ничем не отливаются.
Avazart
Разве?
Борисов
Ну как - а адресация памяти ?
Avazart
А тяжеловесность контекста?
Avazart
А права?
Avazart
приоритет?
Andrii
Хороший вопрос ) Вот в ассемблере помню немного ) Складываешь в регистры нужные параметры, потом типа прерывание int $0x80
Обычно в Linux просто делается обращение в адресу, которое вызывает SEGFAULT и по адресу определяется системный выхов
Avazart
Разве это не также примерно как в виндовс?
Andrii
Разве это не также примерно как в виндовс?
Нет, с точки зрения ядра всё task.
Avazart
Ну и область памяти
Сергей
А у процесса память своя и посмотреть в память другой он не может
Andrii
Поток может и читать и писать из одной области памяти
Ну... это флаги при создании task, что разделять: директорию, обработчики сигналов, память, корневую директорию и т. п. А всё это отдельно потом
Andrii
А у процесса память своя и посмотреть в память другой он не может
Это уже так настраивает pthreads или какая-нить другая библиотека.
Сергей
Ну... это флаги при создании task, что разделять: директорию, обработчики сигналов, память, корневую директорию и т. п. А всё это отдельно потом
Ну так правильно или нет? Я недавно в книжке по CS читал про то, что у Linux это одно и тоже, и хавает он это всё чудесно
Avazart
Типа у двух потоком может быть разная директория и память?
Avazart
куча всмысле
Andrii
Ну так правильно или нет? Я недавно в книжке по CS читал про то, что у Linux это одно и тоже, и хавает он это всё чудесно
https://linux.die.net/man/2/clone Да, вот один системный вывод, и отличия потока от процесс просто разные предопределённые флаги. А там можно создавать и чудных гибридов, у которых одни свойства будут от процесса, другие от потока. Например, поток, у которого будет отдельная рабочая директория.
Andrii
Типа у двух потоком может быть разная директория и память?
Нету вообще я ядре такого понятия как поток. Это всё свойства, которые в юзермоде устанавливаются. Хотим мы отдельное адресное пространство или нам сделать копию.
Avazart
Ну наверное тут имелось ввиду со стороны программиста
Avazart
т.е. имелось ввиду многозадачность на основе потоков vs многозадачность на процессах
Andrii
Ну наверное тут имелось ввиду со стороны программиста
Это со стороны библиотеки. Или со стороны какого-нить POSIX
Vladislav
какие граф либы есть для Си хорошие? Вот типо sfml для С++
Борисов
Ну наверное тут имелось ввиду со стороны программиста
Вот тут соглашусь. С точки зрения 'прикладника' важно не столько как оно работает (уж простите), а как с ним работать
Andrii
OpenGL для джедаев
Шаман Каган
ну то есть разницы не видно?
ну а это сильная разница между верстальщиком и джуном типа фронтэндером: Как узнать, что ты нам подходишь? Профессионально владеешь CSS и jQuery, умеешь делать адаптивный дизайн; Умеешь обосновывать свои решения, открыт к конструктивной критике; Умеешь совмещать несколько задач одновременно, реалистично оцениваешь свои силы и успеваешь в дедлайны; Работал с препроцессорами, умеешь оптимизировать свой код и переиспользовать в новых проектах; Постоянно находишься в информационном поле Frontend-разработки, интересуешься новыми технологиями и ищешь способы быть эффективнее.
Vladislav
DSL какой-нить
не нашел такого
Avazart
Ну в винде нужно знать перечисленно выше из чего нужно сделать вывод что процессы использовать дороже
Vladislav
OpenGL для джедаев
а мне для динозаврика
Борисов
С точки зрения написания программ под user-space наиболее важное отличие процесса от потока - это отличие в адресации памяти. В случае потоков (при соблюдении определенных условий) это может быть проще, так как единое адресное пространство
Andrii
Вот тут соглашусь. С точки зрения 'прикладника' важно не столько как оно работает (уж простите), а как с ним работать
Ну... это уже не знания Linux, а знание кроссплатформенной библиотеки pthread. Ну а так... в целом полезно представлять, чтобы для Linux можно делать гибриды, что можно создать типо поток, но со своей отдельной рабочей директорией, и т. п. Ну и в целом потом со знанием общей концепции легче опускаться до делателй, которые не россыпь фактов, в цельня концепция
Vladislav
SDL
а что будет логичней и приятней? Для динозаврика
Шаман Каган
Я вообще считаю, что верстальщик это человек который и дизайны пилит и сразу их верстает, по другому, без дизайнов он и нафиг не нужен
ну это ерунда, для того чтобы делать дизайн надо иметь вкус и худ образование желательно. А верстка это вообще про другое.
Сергей
ну это ерунда, для того чтобы делать дизайн надо иметь вкус и худ образование желательно. А верстка это вообще про другое.
та ну, ну кому нужны просто верстальщики? ну блин, 21й век на дворе, пусть сразу во фронтов растут
Andrii
а что будет логичней и приятней? Для динозаврика
От человека зависит... Кому-то OpenGL может лучше зайти чисто поразбираться и получить кайф. Кому-то SDL, если надо написать игру и не особо не вникать. Люди разные
Andrii
Процесс может содержать несколько потоков, не?
А процесс не может содержать другие процессы? Есть такое понятие, как группа процессов...
Vadim
Я не спец в этой области.
Avazart
Скорее нет чем да.
Andrii
Скорее нет чем да.
Есть понятие дерева процессов. Его нарисует ProcessExplorer, или вот $ pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─accounts-daemon───2*[{accounts-daemon}] ├─acpid ├─at-spi-bus-laun─┬─dbus-daemon │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───2*[{at-spi2-registr}] ├─avahi-daemon───avahi-daemon ├─bluetoothd ├─colord───2*[{colord}] ├─cron ├─cups-browsed───2*[{cups-browsed}] ├─cupsd ├─dbus-daemon ├─gdm3─┬─gdm-session-wor─┬─gdm-x-session─┬─Xorg───{Xorg} │ │ │ ├─dbus-run-sessio─┬─dbus-daemon │ │ │ │ └─gnome-session-b─┬─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}] │ │ │ │ │ │ ├─ibus-engine-sim───2*[{ibus-engine-sim}] │ │ │ │ │ │ └─2*[{ibus-daemon}] │ │ │ │ │ └─11*[{gnome-shell}] │ │ │ │ ├─gsd-a11y-settin───3*[{gsd-a11y-settin}] │ │ │ │ ├─gsd-color───3*[{gsd-color}] │ │ │ │ ├─gsd-datetime───3*[{gsd-datetime}] │ │ │ │ ├─gsd-housekeepin───3*[{gsd-housekeepin}] │ │ │ │ ├─gsd-keyboard───3*[{gsd-keyboard}] │ │ │ │ ├─gsd-media-keys───3*[{gsd-media-keys}]
Avazart
Ну родительский процесс/дочерний
Andrii
Ну родительский процесс/дочерний
Ну вот, получается что процесс может сожержать другие процессы.
Avazart
Ну не содержать
Avazart
Скорее владеть/наследовать
Avazart
Подразумевается что потоки работаю внутри процесса а именно внутри "его памяти" точнее сказать используют ее
Andrii
Скорее владеть/наследовать
bash запустил python, который вызвал system("cat /dev/urandom"). Если мы сделаем killall bash то все процессы кильнуться, не только bash, но и python и cat
Avazart
Ну так не всегда.
Avazart
По крайней мере в винде можно сделать detach и все продолжит работать
Andrii
Подразумевается что потоки работаю внутри процесса а именно внутри "его памяти" точнее сказать используют ее
Память это один из атрибутов процесса. При создании можно создать свою копию адресов, можно создать так, чтобы использовать память процесса-владельца
Avazart
Хотя при именно кил не пробовал
Andrii
Ну вроде как винда вот это не позволяет делать. Но это не точно.
В винде на уровня ядра процесс и поток это разное. Ядро знает, что это процесс, а это поток в этом процессе. В ядре Linux способа отличить процесс от потока нету, это одна структура.
Avazart
Ну а контекст одинаковый? Переключение между контекстами одинакого происходит получается?
Avazart
одно время занимает
Andrii
одно время занимает
Ну да, и я не думаю, что в Window оно сильно отличается, там на загрузку регистров всё уходит.
Avazart
Отличается