LINUX.ORG.RU

Ответ на: комментарий от LamerOk

В моём понимании этот термин описывает все существующие многозадачные операционные системы - от IBM System/360 Model 67 и VAX/VMS до десяточки максимальной и даже, прости г-ди, Plan 9.

А в моём ещё Windows 1.0 - 3.11, Mac OS classic, Amiga, Oberon (защиты памяти в оригинальном Обероне нет, она заменена защитой на уровне языка программирования).

X512 ★★★★★
()
Ответ на: комментарий от anonymous

Нет, но при желании думаю можно найти браузер, который будет открывать ЛОР в Windows 3.11. И многозадачность будет работать (GIF анимации и т.п.).

X512 ★★★★★
()
Ответ на: комментарий от LamerOk

Давай, до свидания.

403 Forbidden

У вас нет модераторских полномочий чтобы меня прогонять.

X512 ★★★★★
()
Ответ на: комментарий от X512

Нет

что и требовалось доказать

anonymous
()
Ответ на: комментарий от WatchCat

Тебе не надо. А моему приложению надо правила iptables прочитать. Я вызываю popen("iptables-save", "re"), а он делает fork.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

а он делает fork.

А может делать posix_spawn(), это деталь реализации.

X512 ★★★★★
()
Ответ на: комментарий от X512

думаю можно найти браузер, который будет открывать ЛОР в Windows 3.11

Разобьешься об TLS, придётся его терминировать на другом хосте.

t184256 ★★★★★
()
Ответ на: комментарий от X512

Да. Создать процесс без потоков. Затем выделить и инициализировать память внутри него. Затем запустить первый поток, указав ему точку входа. В чём проблема?

Нужны ровно четыре системных вызова:

- Создание пустого процесса (фактически выделение нескольких килобайт структур, очень быстро)

- Аллокация страниц памяти в другом процессе (из пространства ядра по эффективности можно сделать одинаково с аллокацией памяти в текущем процессе)

- Копирование страниц памяти в другой процесс. Скорее всего не очень эффективно. Можно оптимизировать, разрешив предыдущему вызову не выделять новую физическую память, а забирать указанный блок из текущего процесса, тогда будет очень быстро

- Создание тредов в других процессах. Тут опять всего лишь создание небольшой структуры в пространстве ядра, очень быстро

Двойной профит в том, что с небольшими доработками мы получаем мощные примитивы для отладки (добавить методы для создания точек останова и копирования памяти в обе стороны, а не в одну).

Касательно безопасности, правило простое - дочерний процесс в полном доступе для родительского (во всяком случае, пока не сменит uid).

Никогда не понимал, как fork может быть быстрее подхода выше с учётом того, что он сначала копирует всё, потом освобождает ненужную память, а затем выполняет те же самые операции (выделение и инициализация памяти нового процесса). Разработчики unix не осилили эффективную реализацию удаленного маппинга страниц в чужом процессе? Так fork точно также требует манипуляции чужим адресном пространством. CoW нифига не бесплатен - надо всем страницам проставить флаг RO и ловить кучу page fault потом.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от byko3y

Ну, по большому счёту, да. Ни разу не сталкивался с задачами где мне бы понадобился fork().

WatchCat ★★★★★
()
Ответ на: комментарий от LamerOk

У тебя в голове насрано, петрушка. как это произошло?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.