На главную | Поиск
Вы находитесь в Хранилище файлов Белорусской цифровой библиотеки

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

Last-modified: Wed, 12 Jul 2000 15:24:48 GMT
World LibraryРеклама в библиотекеБиблиотека не предназначена для детей! Проект Либмонстра, партнеры БЦБ - Украинская цифровая библиотека и Либмонстр Россия https://database.library.by