Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Рисунок 2. Установка captive с помощью captive-install-acquire

К нашей удаче существует возможность установить только драйвер. В Gentoo это делается с помощью USE-флага -gtk, а если вы собираете пакет из исходников, то нужно задать опцию -enable-install-pkg=no для скрипта configure. Но даже в этом случае вам придется установить gnomevfs, libonobo и orbit. Давайте разберемся, для чего это нужно (см. рис. 3).

Рисунок 3. Принцип работы captive

Рисунок 4. Captive API

При монтировании файловой системы FUSE подгружает sandbox master – компонент captive, который постоянно находится в памяти. Sandbox master контролирует работу sandbox slave. Этот slave выполняется в отдельном процессе. В адресное пространство этого процесса подгружаются ntosknl.exe и ntfs.sys прямо, как в Wine. Этот процесс и называется sandbox – песочница. Внутри песочницы captive делает вызовы бинарного кода, предназначенного для выполнения в адресном пространстве несколько иной структуры. Кроме того, этот код предназначен для выполнения в более богатом разными компонентами окружении. Конечно, этот код должен выполняться на нулевом кольце, а не на третьем. В силу сказанного ассемблерный код из ntoskrnl.exe и *.sys довольно часто приводит к аварийному завершению процесса. Segmentation, как говорится, fault. В ходе поставленных мною экспериментов такое падение мне удавалось наблюдать до десяти раз за время распаковки архива с исходниками captive (2,9 Мб). Когда песочница ломается, sandbox master перезапускает песочницу повторно и продолжает выполнение сначала неудачной транзакции, поэтому для конечного пользователя этот крах остается незамеченным и не приводит к потере данных.

Также мне хотелось бы отметить, что все компоненты captive реализованы на языке C. Это положительно влияет на производительность. IPC при управлении песочницей реализован на основе CORBA (вот для чего нужны libonobo и orbit). А для чего же gnome-vfs? Если взглянуть в ChangeLog, то становится ясно, что изначально captive разрабатывался исключительно для gnome-vfs. Проект стартовал в октябре 2002 года. В августе 2003 была добавлена поддержка LUFS, a в декабре 2005 LUFS была заменена на FUSE. Проекты gnome-vfs, fuse и lufs стартовали соответственно в августе 1999, ноябре 2001 и августе 2002 годов.

Скорее всего разработчики думали, что captive не только никогда не войдет в официальное ядро, но и вообще за пределами Gnome использоваться не будет. Как мы увидим далее, возможность использования gnome-vfs вместо FUSE следует рассматривать всерьёз, если вы уделяете внимание быстродействию файловой системы, так как при использовании gnome-vfs приходится вместо трех переключений в/из режим(а) ядра делать всего одно.

Производительность

Думаю, вам будет интересно оценить производительность captive. Для этого я проделал всего два теста. Я засекал с помощью команды time время копирования одного большого файла и время распаковки архива с большим количеством маленьких файлов.


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100