LINUX.ORG.RU
ФорумTalks

«В [Windows]NT нет fork()» — миф.

 , ,


0

4

На самом деле есть, и даже COW.

https://groups.google.com/forum/#!topic/comp.os.ms-windows.programmer.nt.kernel-mode/hoN_RYtnp58

The most important parameter here is SectionHandle. If this parameter is NULL, the kernel will fork the current process. Otherwise, this parameter must be a handle of the SEC_IMAGE section object created on the EXE file before calling ZwCreateProcess().

NTSYSAPI
NTSTATUS
NTAPI
ZwCreateProcess(
    OUT PHANDLE ProcessHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
    IN HANDLE ParentProcess,
    IN BOOLEAN InheritObjectTable,
    IN HANDLE SectionHandle OPTIONAL,
    IN HANDLE DebugPort OPTIONAL,
    IN HANDLE ExceptionPort OPTIONAL
    );

Ещё вот: forknt.c

Перемещено tailgunner из development

★★★

Последнее исправление: utf8nowhere (всего исправлений: 1)

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

А так-то у них там в ядре получше чем в win32api, ага.

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

Да, я знаю, что Zw... — это всё недокументировано. Но тем не менее.

utf8nowhere ★★★
() автор топика

С помощью недокументированных интефейсов ядра NT можно реализовать fork. Значит, подсистема POSIX и OpenNT реально существовали! Ломающие новости.

tailgunner ★★★★★
()

Какая разница, когда есть WSL?

Deleted
()
Ответ на: комментарий от tailgunner

вообще, api NT гораздо прошареней posix. Другое дело, что нутро NT-ведра не было заточено под highload, а в наше время хайлоадом для NT стали даже обычные приложения

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

нутро NT-ведра не было заточено под highload

Поэтому там асинхронный IO для файлов был всегда, а в linux нет до сих пор?

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

вообще, api NT гораздо прошареней posix

Вероятно, ибо оно делалось для реализации POSIX как частного случая. Но недокументированнный интерфейс - это всё равно, что никакой.

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

Почему у меня на amd e450 проект собирается быстрее чем на ноуте жены с core i5 с виндой? Причем ни диск ни проц ни память не нагружены на 100% судя по диспетчеру задач

i36_zubov
()
Ответ на: комментарий от tailgunner

да оно тормозит просто напросто. Известно что винда сосет на маленьких файлах но почему? Я вот вижу что оно мало того что сливает так еще и проц не грузит. sleep()?

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

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

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

Я слышал байки, что тормознутость венды вызвана тем, что в ней якобы заложены алгоритмы, которые хорошо масштабируются

например алгоритм пожирания памяти

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

Энергосбережение сильно сажает быстродействие, по крайней мере на не самом новом железе.

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

Это не должно приводить к простоям которые видит планировщик. Алгоритмы могут тупить на busy wait-такие подходы используются иногда но тут 8ка, 4 ядра и 8-15% процентов загрузки

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

Опять же линукс не сажает производительность. Он просто тупо делает все збс

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

sleep()?

Один раз залез в тормозящий проприетарный (но бесплатный) код дизассемблером и... там действительно был тупо sleep(). Ответ был, что якобы отлаживали там что-то и... забыли удалить. Ну-ну.

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

Значит, подсистема POSIX и OpenNT реально существовали!

ага, в виде недописанного костыля кусками из BSD под названием Interix :-) (SUA)

а вот занафига там именно в .exe файлы её пихать, с особым заголовком? почему бы не эльфы грузить «как есть»?

в десяточке со встроенною убунтою как-то лучше оно всё :-) очень, очень плохая музыка.

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

то есть, вопросы:

1. зачем делать «подсистему» dll-ками в cygwin?

2. зачем делать «подсистему» модулем ядра в SUA?

3. почему «недокументированный»?

4. зачем эти танцы в гамаке и стоя?

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

а вот занафига там именно в .exe файлы её пихать, с особым заголовком? почему бы не эльфы грузить «как есть»?

  1. Подсистема POSIX была уже тогда, когда никаких эльфов не было.
  2. Даже если бы они были, эльфы какой системы нужно было грузить «как есть»? И почему.
utf8nowhere ★★★
() автор топика
Ответ на: комментарий от utf8nowhere

ну грузили бы a.out, тоже мне — проблема.

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

в линуксе вон «загрузчик модулей» заменяемый, а тут — костылями прикручены только .exe-шники.

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

Подсистема POSIX была уже тогда, когда никаких эльфов не было.

4.2 они появились в один год

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

И работоспособность куска кода, который ты привел, как минимум сомнительна.

Хорошо.

Кому как.

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

А как же «в спорах рождается истина»?

Я ведь уже приготовился к девяти страницам отборнейшего технического флейма, а ты пришёл и испортил мне настроение.

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

Тема не ради флейма, а ради просвещения.

Местным модераторам стоит полечить флеймофобию. Они провокацию флейма в каждой теме видят.

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

Местным модераторам стоит полечить флеймофобию

Флейм о fork в NT - это было бы неплохо, но ты неспособен его поддержать (или даже начать).

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от utf8nowhere

Это не совсем fork, его крайне не рекомендуется использовать, а про Microsoft UNIX Services for Windows все знают, так что fork (настоящий) там точно был.

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

Они провокацию флейма в каждой теме видят.

сказал пользователь, у которого сам ник — уже провокация флейма.

i-rinat ★★★★★
()
Ответ на: комментарий от svr4

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

Ты, видимо, не читал ман.

The current Linux POSIX AIO implementation is provided in user space by glibc. This has a number of limitations, most notably that maintaining multiple threads to perform I/O operations is expensive and scales poorly.

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