Перейти до змісту
  • Gentoo Way..
  • Эпизод 1 (Gentoo Way)


    Yuriy

    Рекомендовані повідомлення

    Три "кита" на которых стоят *nix системы:

    1) Файловая подсистема

    2) Подсистема управления процессами

    3) Подсистема ввода/вывода.

    Эти три "кита" образуют ядро линукс.

     

    В данной статье разберём первого "кита" и распотрошим его.

     

    Итак 1)

    Файловая подсистема (ФП) обеспечивает унифицированный интерфейс доступа к данным (расположенных на, допустим, винтах) и к периферийным устройствам.

     

    Одни и те-же системные вызовы, допустим read и write могут использоваться как при чтении или записи данных на диск, так и при выводе текста на принтер или терминал.

    На самом деле в *nix системах все устройства - это файлы (то есть, если вы запишете в файл принтера слово "ЗДАРОВА!", то принтер вам его распечатает). И вообще свыкнитесь, что в линуксе почти всё является файлами (даже каталоги это 100% - ные файлы :) ).

     

    Файловая система, также, контролирует права доступа к файлам, выполняет операции размещения и удаления файла, а также выполняет запись/чтение данных файла. Таким образом права доступа к файлам определяют привилегии пользователя в системе.

    Поскольку права доступа к файлам (запрет/разрешение на запись/чтение/выполнение) контролирует ФС, и поскольку устройства это тоже файлы, то выставив определённые права на файлы устройств вы будете контролировать доступ/привилегии к устройствам (напр. принтер). Для приложений *nix - доступ к файлу на винте неотличим от доступа к тому же прнтеру. Это называется гибкостью. И наконец, ВСЕ программы, которые выполняются в системе, включая прикладные задачи пользователей, системные процессы и ДАЖЕ ЯДРО *nix, являются ФАЙЛАМИ.

    Надеюсь с этим разобрались. :)

     

    Как и в почти всех ОСях, в *nix файлы организованы в виде древовидной структуры (дерева), называемой файловой системой. Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог имеющий имя "/". Имена всех остальных файлов содержат путь - список каталогов (ветвей), которые необходимо пройти, что-бы достичь файла.

     

    В *nix всё доступное пользователям файловое пространство (и неважно сколько у вас винтов или каких нить других накопителей - возможно и по сети :) ) объединено в единое дерево каталогов, корнем которого является "/". Таким образом, полное имя любого файла начинается с "/" и НЕ содержит ИДЕНТИФИКАТОРА УСТРОЙСТВА (аля диск С:\ и т.д.).

     

    Однако это не означает что в системе присутствует только одна файловая система. В большинстве случаев единое дерево, такое каким его видит юзер, составлено из нескольких файловых систем, которые могут иметь различную внутреннюю структуру, а файлы принадлежащие этим файловым системам, могут быть расположены на различных устройствах и даже на разных ПК.

     

    Примеры:

    Вот несколько обычных путей к файлам Винды

    С:\Windows\System\Kill_Me.dll

    к CDROM

    E:\autorun.ini

     

    Теперь как пути выглядят в *nix:

    /home/yuriy/MyDocument.txt

    /boot/bzImage

    к CDROM

    /mnt/cdrom/autorun.ini (у вас СD может находится в другой папке напр: /cdrom/...)

     

    И пара слов о файлах (упростил как мог :( ).

     

    Файл - это именованная область данных на винте. Представьте... Вы создали файл с текстом, сохранили и назвали как нить, а теперь уберите имя файла, но оставьте содержимое (мысленно :) ), что получится? Получится занятый участок винта, но его никто не увидит, потому что нету имени в файловой системе, которое бы указало на эту область винта с вашим текстом. Мы подошли к тому что данные без имени в файловой системе существовать не могут (кстати это самая распространенная ошибке fat16(32), там могут :) ).

    Таким образом, имя файла является атрибутом файловой системы, а не набора некоторых данных на винте, который не имеет имени как такового.

     

    Каждый файл(данные на диске) имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах - inode - это так на заметку), содержащие все характеристики файла (и права доступа) и позволяющие ОС выполнять операции, заказанные каким нить приложением (открыть/прочитать/записать/удалить файл). Также метаданные содержат указатели на дисковые блоки хранения данных файла (где на винте лежат ваши данные).

     

    ИМЯ ФАЙЛА в файловой системе является указателем на его метаданные, в то время как метаданные не содержат указателя на имя файла.

    Таким образом, некоторые данные на винте могут иметь несколько имён (имена в файловой системе просто ссылаются на одни и те-же метаданные (участки памяти на винте)). То есто файл один, а имён много. Если открыть этот файл под одним именем и изменить, то открыв его под другим именем вы увидите изменения :). Такая связь имен файлов с его данными называется ЖЁСТКОЙ СВЯЗЬЮ (hard link).

     

    Жёсткие связи абсолютно равноправны. С точки зрения юзера - жёсткие связи это разные файлы, но напомню, изменения внесённые в любой из них, затронут и остальные, поскольку имена ссылаются на одни и те же данные файла. Вы можете переместить один из файлов в другой каталог - всё равно эти имена будут связаны жесткой связью с данными файла.

     

    Кстати, удаление одного из файлов ссылающихся на одни метаданные, не приведёт к удалению данных и метаданных файла на винте. Почему? Всё просто, в метаданных есть счётчик жестких связей. Поэтому только если счетчик будет равнятся НУЛЮ, файловая система удалит данные и метаданные файла. Другими словами, пока не переудаляеш все жесткие связи имена файла, файл не удалится.

    И на последок...

     

    Жесткая связь является естественной формой связи имени файла с его метаданными и не пренадлежит к особому типу файла.

     

    О других типах файла в следующей статье -это "каталог", "файл устройства", "именованный канал", "Символическая ссылка", "Сокет".

    Не верьте Торвальдсу - это я написал ядро Linux!

    А не оскорбляют ли верующие религиозные чувства атеистов?

    Если вы прибором будете мерить кое-как, то он вам кое-что и покажет.

    Посилання на коментар
    Поділитись на інші сайти

    Мне было все понятно так и продолжай! :)

    Хочешь услышать умный ответ - задавай вопрос по умному Л. Да Винчи

     

    Если у тебя много денег, нет

    проблем с властями если у тебя красивая жена и обалденная любовница ,если дома уют,а когда ты выходишь на улицу всегда светит солнце, то пошел ты н***й!!!

    Посилання на коментар
    Поділитись на інші сайти

        Жёсткие связи абсолютно равноправны. С точки зрения юзера - жёсткие связи это разные файлы, но напомню, изменения внесённые в любой из них, затронут и остальные, поскольку имена ссылаются на одни и те же данные файла. Вы можете переместить один из файлов в другой каталог - всё равно эти имена будут связаны жесткой связью с данными файла.

    32326[/snapback]

    В конце не понял. Имеется ввиду, что мы переместим, фактически, не "один из файлов", а одно из его имен?

    Я не знаю как жить, если смерть станет вдруг невозможной. (с) ДДТ

    А я люблю свою страну, и ненавижу государство! (с) Lumen

    Посилання на коментар
    Поділитись на інші сайти

    В конце не понял. Имеется ввиду, что мы переместим, фактически, не "один из файлов", а одно из его имен?

    32337[/snapback]

    Точно :D

    Ведь зачем грузить винт операциями копирования (в данном случае). Кругом оптимизация :)

    Не верьте Торвальдсу - это я написал ядро Linux!

    А не оскорбляют ли верующие религиозные чувства атеистов?

    Если вы прибором будете мерить кое-как, то он вам кое-что и покажет.

    Посилання на коментар
    Поділитись на інші сайти

    Во-во. А то вродь все понятно, а толку мало. Вот я не понял, как вообще можно создать несколько имен. Или это типа аналог ярлыков винды? Хотя, скорее аналог указателей в программировании :)

     

    ЗЫ: пасиб, интересная статья, ждем еще.

     

    ЗЗЫ: а где бы этот генту скачать в сети?

    Я не знаю как жить, если смерть станет вдруг невозможной. (с) ДДТ

    А я люблю свою страну, и ненавижу государство! (с) Lumen

    Посилання на коментар
    Поділитись на інші сайти

    Еще вопросик: реально ли юзать генту на виртуалке, т.е. ВМВаре?

    ЗЫ: XP SP2, Sempron 2800, 1024 ОЗУ.

    Я не знаю как жить, если смерть станет вдруг невозможной. (с) ДДТ

    А я люблю свою страну, и ненавижу государство! (с) Lumen

    Посилання на коментар
    Поділитись на інші сайти

    Во-во. А то вродь все понятно, а толку мало. Вот я не понял, как вообще можно создать несколько имен. Или это типа аналог ярлыков винды? Хотя, скорее аналог указателей в программировании  :)

    32343[/snapback]

    Люди должны знать особенности таких вещей как файлы.

    Как они создаются? Объясню на примерах... Не могу я всё сразу...

    А толку мало? Это ты скажеш мне потом :)

    Всему своё время...

     

    ЗЫ: пасиб, интересная статья, ждем еще.

    32343[/snapback]

    Будет вам ещё....

     

    Насчёт генты ... всему своё время.

    Тут главное не спугнуть вас раньше времени :)

    2 - 3 статьи и поставиш. :)

    Не верьте Торвальдсу - это я написал ядро Linux!

    А не оскорбляют ли верующие религиозные чувства атеистов?

    Если вы прибором будете мерить кое-как, то он вам кое-что и покажет.

    Посилання на коментар
    Поділитись на інші сайти

    Еще вопросик: реально ли юзать генту на виртуалке, т.е. ВМВаре?

    ЗЫ: XP SP2, Sempron 2800, 1024 ОЗУ.

    32347[/snapback]

    Реально конечно, но я бы этого не делал :) :) :)

    Не верьте Торвальдсу - это я написал ядро Linux!

    А не оскорбляют ли верующие религиозные чувства атеистов?

    Если вы прибором будете мерить кое-как, то он вам кое-что и покажет.

    Посилання на коментар
    Поділитись на інші сайти

    Лутчего модера чем DART@UA я не знаю! :D :D :D

    Хочешь услышать умный ответ - задавай вопрос по умному Л. Да Винчи

     

    Если у тебя много денег, нет

    проблем с властями если у тебя красивая жена и обалденная любовница ,если дома уют,а когда ты выходишь на улицу всегда светит солнце, то пошел ты н***й!!!

    Посилання на коментар
    Поділитись на інші сайти

    • 7 місяців через...

    Лутчего модера чем DART@UA я не знаю! :D :D :D

     

    ти чо написал? совсем не втему.
    Посилання на коментар
    Поділитись на інші сайти

    Приведи пример для чего нужно иметь несколько имен файла для одних и тех же данних.
    Посилання на коментар
    Поділитись на інші сайти

    схематичний приклад:

    shared бібліотека openssl.so версії 15.3.9, але вона надає інтерфейс зворотньої сумісності для програм, яким потрібні старші версії. таким чином набір сімлінків (нижче) визначає ряд версій, для яких підтримується зворотня сумісність

    openssl-14.1.2.so -> openssl.so

    openssl-10.3.4 -> openssl.so

    ....

     

    ps. придумав ще приклади, але влом тицяти кнопки

    одним словом, лінки - рулєз :)

    А жизнь - только слово.

    Есть лишь любовь и есть смерть...

    Посилання на коментар
    Поділитись на інші сайти

    Еще вопросик: реально ли юзать генту на виртуалке, т.е. ВМВаре?

    ЗЫ: XP SP2, Sempron 2800, 1024 ОЗУ.

     

    реально, юзал на в два раза послабее тачке, Athlon 1700+, 256Mb, правда без иксов!!! Но для обучения с головой хватало! Змінено користувачем shrikes

    http://www.weblancer.net/users/shrikes/

    - мое портфолио

    Посилання на коментар
    Поділитись на інші сайти

    ×
    ×
    • Створити...

    Важлива інформація

    Використовуючи цей сайт, Ви погоджуєтеся з нашими Умови використання, Політика конфіденційності, Правила, Ми розмістили cookie-файлы на ваш пристрій, щоб допомогти зробити цей сайт кращим. Ви можете змінити налаштування cookie-файлів, або продовжити без зміни налаштувань..