SII писал(а):
Ну, технически там не копирование, а разделение общей области памяти, доступной только для чтения
Да я в курсе, как это делается в современных *nix-ах, просто беда в том, что подобный финт без поддержки со стороны ядра не сделать.
phantom-84 писал(а):
если делать прослойку на уровне ядра, а не на уровне прикладных библиотек, то реализовать fork не так уж и сложно.
Я, видимо, не очень чётко выразил свою мысль:
Yoda писал(а):
АПИ имеющихся систем может иметь такую кривизну, которую не сэмулируешь (по крайней мере, разумными средствами), а тащить это гуано в свой АПИ не хочется.
И ещё, под эмуляцией обычно подразумевается реализация какого-то чужого АПИ через библиотечный код, чтобы это работало на родном АПИ. Т.е. эмуляция, это когда родной АПИ не имеет поддержки fork, а я его пытаюсь сделать на уровне [опциональных] библиотек. А если я его сделал в ядре, то это будет уже не эмуляция, а
реализация.
Объясню, почему не хочу тащить чужую кривизну в свой АПИ. Если в ядре ОС появился какой-то системный вызов, то он, можно сказать, высечен в камне. На него опирается прикладной софт, специально разработанный под эту ОС и уже так просто от него не избавиться. Эмуляция слоя POSIX, например, - да, пожалуйста, на переходный период, пока нет родной начинки. Потому что от эмуляции впоследствии можно отказаться.