Unix, базовые принципы и особенности

Unix, базовые принципы и особенности

 
  • Unix, базовые принципы и особенности.
  • Файловая система Unix.
  • Внутренняя структура файловой системы Unix.

  • Все системные действия выполняет ядро операционной системы Unix. Ядро - обычный выполняемый файл, расположен в файле /unix или /stand/unix или /vmunix или /vmlinuz (в зависимости от кон- кретной реализации). Можете посмотреть размер этого файла - не маленький. При начальной загрузке системы ядро целиком загружа- ется в оперативнную память и в дальнейшем резидентно находится в ней, выполняя все необходимые работы.

          Что входит в ядро.
    ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но могут быть, а также и такие, которые никогда вам не понадобятся.
    УПРАВЛЯЮЩИЕ ПОДПРОГРАММЫ: части кода, ответственные за обеспечение работы пользовательских программ - разделение времени и прочих ресурсов системы.
    СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, от- крытых файлов, управляющие структуры...
    СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание", можно считать некоторой аналогией/пародией на системные вызовы.) С точки зрения программиста это обычная си-шная функция, только выполняет она системно-зависимые действия, например: прочитать данные из файла, установить сетевое соединение, создать каталог, и т.д. и т.п. Все системные вызовы ( а всего их более 1500 штук ) вкомпилированы в тело ядра Unix. Пользовательские программы, вызывающие функции, являющиеся системными вызовами, на самом деле содержат только jump'ы на соответствующие адреса памяти в ядре. В пользовательскую программу системные вызовы не влинковываются.

          Что находится в оперативной памяти.
    ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.
    БУФЕРНЫЙ КЭШ. Часть оперативной памяти резервируется под кэши- рование чтения и записи на диск. Любая операция чтения с диска приводит к тому, что прочитанные блоки помещаются в буферный кэш, а из него уже передаются запросившим данные программам. Если блок попал в кэш, то все последующие обращения к нему бу- дут получать образ блока из кэша, причем независимо от того - та же самая программа обращается к блоку или какая-либо дру- гая. Кэшируется также и запись на диск, опять же, разделяемая между всеми выполняемыми программами.
    ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа.

          Средства экономии памяти. Виртуальная память.
    РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Когда одна и та же программа(выполня- емый файл) запущена в нескольких экземплярах, то в оперативную память загружается только одна копия выполняемого ассемблерного кода на всех. Каждый выполнямый процесс использует один и тот же текст программы, просто у каждого процесса имеется свой соб- ственный указатель на текущий оператор.
    РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В Windows есть похожее понятие DLL - динамически подгружаемая библиотека). Некоторое количество час- то выполняемых функций (например, printf, да и много других) оформляется в виде специальным образом подготовленной библиоте- ки (SHARED LIBRARY). При компиляции программы, использующей разделяемые библиотеки, эти функции не линкуются внутрь кода программы. Они "выдергиваются" из библиотеки на стадии выполнения программы. Этим мы экономим место на диске и в оперативной памяти: в программах отсутствует код разделяемых функций, а в оперативной памяти эта функция присутствует в одном экземпляре на всех.
    SWAPING. Каждый Unix-процесс функционирует в своем собственном 32-х битном виртуальном адресном пространстве, не пересекающем- ся с другими. Адресное пространство процесса может быть боль- шим, чем физическая оперативная память. Виртуальная память под- держивается с помощью PAGING'а - разрешения виртуальных адресов в физические "на лету", с подкачкой отсутствующих страниц памяти со swap-области на жестком диске.
    На самом деле SWAPING'а как такового в Unix'е нет, вместо него применяется гораздо более гибкий PAGING. (swaping - по опреде- лению, это ПОЛНАЯ выгрузка программы на swap-область с целью освобождения места в оперативной памяти).
    Область памяти, занятая программой, разделена на три части: TEXT (выполняемые коды программы), DATA (статические данные програм- мы), STACK (динамические данные). Когда операционка освобождает место в памяти за счет TEXT'а, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действи- тельно, когда потребуется загрузить TEXT обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет один побочный эффект. Файл программы, ко- торая в данный момент выполняется, невозможно уничтожить. Опе- рационная система сообщит в этом случае: "text file busy", и откажется выполнять удаление.
    БИТ НАВЯЗЧИВОСТИ. (sticky bit). Выполняемая программа может иметь дополнительный атрибут. Так называемый "бит навязчивос- ти". Когда такая программа заканчивает выполнение, операционка (по возможности) старается не занимать память, в которой нахо- дился текст программы. Соответственно, повторный ее запуск про- изойдет очень быстро - ведь программа все еще загружена в па- мять, ее не требуется зачитывать с диска. Нужно просто передать на нее управление.

    Файловая система Unix.


    Файловая система в Unix - "деревянная", состоит из файлов и каталогов. На каждом разделе диска создается собственная неза- висимая файловая система. Отдельные файловые системы "сцепляют- ся" вместе, в единое общее дерево директорий. Такая операция называется "монтированием". Выглядит это примерно так:

          mount -F ufs /dev/dsk/m197_c0d0s5 /home1
          mount -F ufs /dev/dsk/m197_c0d0s4 /usr
          df
    Получить доступ к файлам "несмонтированной" файловой системы невозможно. Порочная пракика MS-DOSа - сколько разделов, столь- ко и "дисков" ( a: b: c: d: e: ... k: l: m: n:) в Unix не при- меняется. В Unix всегда есть ровно одно общее дерево каталогов, и, по большому счету, пользователям совершенно все равно, на каком именно диске или разделе диска расположены его файлы /usr/spool/moshkow или /home1/moshkow/bin/mcopy ...
    Файловая система Unix кэшируется буферным кэшем. Операция запи- си на диск выполняется не тогда, когда это приказывает выполня- емый процесс, а когда операционная система сочтет нужным это сделать. Это резко поднимает эффективность и скорость работы с диском, и повышает опасность ее использования. Выключение питания на "горячей", работающей Unix-машине приводит к разрушениям структуры файловой системы.
    При каждой начальной загрузке Unix проверяет - корректно ли бы- ла выключена машина в прошлый раз, и если нет - автоматически запускает утилиту fsck (File System Check) - проверку и ремонт файловых систем..

    Внутренняя структура файловой системы Unix.


    Раздел диска, в котором создана файловая система, разбит на три части.
    СУПЕРБЛОК. Занимает 1 Kb.
          Содержит служебную информацию:
          Тип файловой системы,
          Размер
          Начало списка свободных блоков.
          . . . что-то еще
    ОБЛАСТЬ INOD-ов. Занимает примерно 8% общего размера раздела. inode - Index-node - описатель файла. Он содержит всю информа- цию о файле, за исключением имени файла, и собственно данных файла. В inod'е хранится:

          тип файла (файл, каталог, именованный канал, специальный файл)
          кто владелец
          права(атрибуты) файла
          время модификаци/создания файла
          адреса блоков, из которых состоит файл
          что-то еще ...
    ОБЛАСТЬ ДАННЫХ. В этой области расположенвИРТУАЛЬНАЯЯы блоки с данными фай-
          лов. Незанятые блоки провязаны в СПИСОК СВОБОД-
          НЫХ БЛОКОВ
    Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.
    ФАЙЛ - он и есть файл.
    КАТАЛОГ - файл фиксированного формата: состоит из строчек с именами файлов, входящих в каталог

          имя_файла1 Номер_Инода1
          имя_файла2 Номер_Инода2
          . . .
    Чтобы получить доступ к файлу по имени, операционная система
          1. находит это имя в каталоге, содержащем файл,
          2. берет Номер_Инода файла,
          3. по номеру находит inod в области inod'ов,
          4. из inod'а берет адреса блоков, в которых расположены данн-
          ые файла,
          5. по адресам блоков считывает блоки из области данных. Все.

          Формат индексного описателя файла.
    Область инодов разбита на 64-х байтные структуры - inod'ы. В inod'е хранится:

          Тип файла (файл/каталог/специальный файл/fifo/socket)
          Атрибуты (права доступа)
          Владелец файла
          Группа-владелец файла
          Времена создания, модификации, последнего доступа к файлу
          Длина файла
          Адрес 1-го блока файла
          Адрес 2-го блока файла
          ...
          Адрес 10-го блока файла
          Адрес блока косвенной адресации (блока с 256 адресами блоков)
          Адрес блока 2-й косвенной адресации
          (блока с 256 адресами блоков с адресами)
          Адрес блока 3-й косвенной адресации
          (блока с адресами блоков с адресами блоков с адресами)
    Точный формат структуры файловой системы см. man fs


    Home | UK Shop Center |Contact | Buy Domain | Directory | Web Hosting | Resell Domains


    Copyleft 2005 ruslib.us