beldmit: (Программизм)
[personal profile] beldmit
Из Changelog новой версии ядра Linux (3.11, "Linux for workgroups"):

В системные вызовы open() и openat() добавлена поддержка флага O_TMPFILE, позволяющего передать файловой системе информацию о создании временного файла, не видимого в иерархии ФС, что позволяет применить для данного типа файлов отдельные оптимизации. Создаваемые при помощи O_TMPFILE временные файлы не имеют имени, в качестве пути передаётся только директория. Создание невидимого временного файла без имени позволяет разработчикам приложений не задумываться о возможных уязвимостях, таких, как атака через символические ссылки;

В ряде мест такая возможность сильно упростит жизнь. Но до широкого распространения, боюсь, еще долго.

Date: 2013-09-04 07:35 am (UTC)
From: [identity profile] kouzdra.livejournal.com
О! RSX-11M повеяло (там каталожная система была вообще отделена от файловой).

Или RT-11, где создаваемый файл включался в FS при выполнении операции enter (обычно при закрытии) - ну а если ее не было - то и не включался

Date: 2013-09-04 08:08 am (UTC)
From: [identity profile] pukkallo.livejournal.com
Ну, и здесь идет именно о временных, которые никогда не станут постоянным. Что, кроме security, имеет и бонус в виде не засранного при обломавшихся форках и иных зомби /tmp. Впрочем, вопрос с чисткой мусора при таком подходе таки встает ненавязчиво.

И причина возникновения сильно разная. В RT-11 это было вызвано не security reasons, а тем, что файл писался целым куском (RT, итить), и до момента финализации его размер не был точно известен. С этим проблема с многозадачными мониторами была - если места мало и squeeze не делали, могло не хватить места при записи. Регулярно сталкивался на СМ-4 с TS-монитором с этим.

Date: 2013-09-04 08:17 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Вызвано было и в RSX и RT тем, что собственно совершенно непонятно, зачем вставлять файл в каталог при создании - и поэффективнее и проблем с изобретением уникальных имен нет (в RSX еще и тем, что идея разделить собственно файловую систему и каталожную довольно естественна - каталожная система сопоставляет тебе имени файла его ID, а собственно файловая работает только с плоским пространством ID)

PS: Проблемы с местом в RT к Enter отношения не имели - файл-то все равно писался на диск по ходу. Финализировалась именно запись в каталоге. Что кроме прочего позволяло безопасно овервратить файл новым с тем же именем (и вообще обеспечивало более естественную логику - без всех этих *~) - старый продолжал существовать до выполнения команды enter, а она емнимп была атомарная.
Edited Date: 2013-09-04 09:35 am (UTC)

Date: 2013-09-04 03:31 pm (UTC)
From: [identity profile] pukkallo.livejournal.com
По RSX-11 не скажу - прошла мимо. Однако, ЕМНИП, запись в каталоге в RT-11 имела в качестве своей составляющей ссылку на начало физического положения, а файл открывался в самом большом из доступных пустых мест (которые тоже писались в каталог наравне с файлами). Поэтому её финализация по close была естественной для модификации смежной пустой записи. Кроме того, в RT была какая-то команда (не помню точно) - некоторый аналог sync в UNIX, которая обновляла именно запись в каталоге на данный момент и позволяла не потерять сделанных изменений. Или мы это reopen делали ... давно было. Кстати, достоинство существования старого файла при любых сбоях была весьма приятственной особенностью. После смены религи мне этого регулярно не хватало.

Впрочем, я как-то больше пошел по прикладным, поэтому многих подробностей не помню. Надо поспрошать брата, который во времена оные написал на ассемблере аналог squeeze, который использовался на ... Откат был невозможен, при сбое умирало все, но работало раз в 5 быстрее :)

Date: 2013-09-05 12:47 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Поэтому её финализация по close была естественной для модификации смежной пустой записи.

Разумеется - так для close подобные функции естественны довольно таки



А в RSX каталог был просто файлом с записями по 16B емнимп, которые устанвливали соответствие имяфайла -> его ID - (ID - пара - порядковый номер, контрольное значение, потом появился третий - номер устройства кажется, или хоста).

Файловый процессор в принципе умел по отдельному каталогу искать (хотя я так и не очень понял зачем), а уже работа с вложенными каталогами делалась просто на уровне user space библиотеки (что забавно - хотя структура была формально двух уровневой - главный каталог - пользовательские - зашито было исключительно на уровне соглашений об именовании файлов и соответствующих функций. Уже утилита Verify (тамошний fsck) работала с произвольной вложенностью каталогов и произвольными же их именами.

А собственно файл с точки зрения системы представлялся именно ID.
Edited Date: 2013-09-05 12:47 am (UTC)

Date: 2013-09-04 04:50 pm (UTC)
From: [identity profile] gineer.livejournal.com
\\Впрочем, вопрос с чисткой мусора при таком подходе таки встает ненавязчиво.

ужо
http://beldmit.livejournal.com/402695.html?thread=4380167#t4380167

последний Дебиан, если че. :)

Date: 2013-09-05 12:41 am (UTC)
From: [identity profile] kouzdra.livejournal.com
fsck все равно гоняется регулярно.

Date: 2013-09-05 03:53 pm (UTC)
From: [identity profile] gineer.livejournal.com
вы из какого столетия?
счас все фсы с журналами ;)

Date: 2013-09-05 05:21 pm (UTC)
From: [identity profile] kouzdra.livejournal.com
Я знаю - тем не менее -"гоняется регулярно"

Date: 2013-09-05 03:50 pm (UTC)
From: [identity profile] gineer.livejournal.com
\\Впрочем, вопрос с чисткой мусора при таком подходе таки встает ненавязчиво.

ужо
http://beldmit.livejournal.com/402695.html?thread=4380167#t4380167

последний Дебиан, если че. :)

Date: 2013-09-05 10:36 pm (UTC)
From: [identity profile] oboguev.livejournal.com
Скорее это child of mmap(MAP_ANON), ну или для тех, кто помнит, что было раньше, SYS$CRMPSC(SEC$M_PAGFIL).

Date: 2013-09-06 03:30 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Там скорее поиски решения проблемы, которой в упомянутых системах не было by design - причем не по ошибке не было.

Ну да - само найденное решение - кривое. Но его источник - дурацкая идея привязать ресурс (файл) к записи в каталоге - в RSX оно кстати было отзеркалено на уровне процессов - там запуск задачи требовал ее обязательной регистрации - в результате была и команда RUN и всякие спецфункции которые автоматом выдумывали для процесса имя, его регистрировали, запускали, а по завершении - удаляли.

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 12th, 2026 02:54 pm
Powered by Dreamwidth Studios