> В bsd нет clone(), поэтому не может быть никаких клонов-суперсетов. :D А вот это уже проблемы бсдей. В лине же за счет наличия такого сискола появилась куча инструментов для создания контейнеров достаточно просто и без гимора. И нормальный трединг тоже.
В терминах clone() и линуха это так: у thread unshare()'d еще меньше чем у process. А у контейнера unshare()'d больше чем у процесса. Так что технически fork() это clone() с конкретной комбинацией флагов ведущей к тому что новый entity будет "процессом". А мог бы и тредом или контейнером быть, с другими флагами. Это не они придумали, это из Plan9 вроде.
В стандартном posix вообще нет этой семантики. Но ее можно вызвать из юзермода, запилив свой контейнеризатор или какой-то низкоуровневый диспетчер тредов если это вдруг стало надо.
Более того - это самые "типовые" комбинации того что unshare'ится. В принципе возможны и иные. А само ядро так то уже давно может отращивать себе "ядерные треды". И даже обзавелось всякими инфраструктурами воркеров и проч. А в контейнерах можно unshare'ить лишь часть инфраструктуры. Вот так оно видит системных юзеров. А так считает себя отдельным нечто с своими юзерами. И так для ряда системных ресурсов. Типа маунтов или сети. И да, в сети контейнера свои правила фаера, шедулинг, ифейсы и проч. У ифейса есть принадлежность к namespace.
> Клон оставьте для ядра-клона.
Клон пошел очень сильно дальше примитивного fork() и сделал довольно крутые и логичные вещи. В целом имхо вышло круто и гибко.
> Вы попробуйте внимательно прочитать глазами что написал Аноним(96).
> fork() - не subset фич clone(), нет в бсд никакого clone().
Я сказал как это в линухе. Там это уже точно не ripoff вон того - у них инфраструктура чисто технически сильно превосходит fork() и никак не может быть на нем базирована, в нем такого не было. Нельзя скопировать фичи которых нет.
> Найди мне в бсд и маке clone().
Это их проблемы. Я их вижу в linux и понимаю что его fork это надстройка над вот этим вот. Частный случай дерга куда более мощного системного вызова с конкретным набором флагов. А если другие флаги указать - это будет тредом или тем или иным вариантом контейнера, смотря что unshare'нуто. Кстати да, до некоторой степени можно передумать и опосля - вызвав уже unshare(). И процесс может стать контейнером, если правов хватает.
> Чтобы не писать AFAIK, открой маны да посмотри сам.
Мне не интересны системные кишки *bsd. Это напрасная трата времени. Факт в том что актуальная линуксная реализация fork() базирована на линуксном же clone() и вообще совсем никак не может быть базирована на вот этсамом из бзды! Вот как раз потому что в оных clone() и нету. Л - логика.
> Да ещё подумай, почему всегда была рекомендация для совместимости вызывать fork, вместо
> clone. И почему она не связана с plan9.
Эта рекомендация актуальна для портабельных программ. Однако в POSIX вообще нет такого термина как контейнер, поэтому менеджер контейнеров вы вообще по нему не напишете допустим.
Можете кстати блеснуть эрудицией и рассказать как jail контейнеры делает и насколько сложно создавалку контейнеров в бсде сделать. Я вот могу простенькую создавалку контейнеров для линуха и сам забацать. А вы так для бсды сможете? :). Не, портабельно оно не будет - posix такие вещи не регламентирует.