А. Робачевский - Операционная система UNIX (1114671), страница 54
Текст из файла (страница 54)
Разделяемая память является частью адресного пространства длякаждого из взаимодействующих процессов, поэтому чтение и запись в этуобласть неотличимы, например, от чтения и записи в область собственныхданных процесса. Однако при использовании разделяемой памяти необхо!www.books-shop.com278Глава 3.управления процессамидимо обеспечить синхронизацию процессов. При использовании семафо!ров, необходимо иметь в виду следующие обстоятельства:Применение семафоров может увеличить число процессов в очередина выполнение, поскольку несколько процессов, ожидающих разре!шающего сигнала семафора, будут одновременно разбужены и пере!ведены в очередь на выполнение.Применение семафоров увеличивает число переключений контекста,что, в свою очередь, увеличивает нагрузку на систему.В то же время, использование семафоров является наиболее стан!дартным (POSIX.хотя и неэффективным способом обеспечениясинхронизации.Очереди сообщений предназначены для обмена короткими (обычно менее1 Кбайт) структурами данных.
Если объем данных превышает эту величи!ну, использование сообщений может значительно увеличить число сис!темных вызовов и уменьшить производительность операционной системы.Интенсивность межпроцессного взаимодействия в системе можно опреде!лить с помощью команды!т. Вывод команды показывает число ис!пользования объектов IPC в секунду:17171717171753081318Average0.200.602.200.800.000.76sema/s20.0012.2010.4025.1015.6016.66ЗаключениеВ этой главе начато обсуждение внутренней архитектуры ядра UNIX, ко!торое будет продолжено в следующих главах.
Поскольку процессы являют!ся движущей силой операционной системы, мы начали обсуждение имен!но с этого вопроса. Действительно, не считая нескольких системных про!цессов, являющихся частью ядра и выполняющих узкосистемные функ!ции, основная работа операционной системы происходит по запросам и вконтексте прикладных процессов.В главе обсуждается, каким образом прикладной процесс взаимодействуетс ядром операционной системы, как происходит справедливое распределе!ние системных ресурсов между задачами, и тем самым обеспечиваетсямногозадачность UNIX. Также рассматриваются принципы организациивиртуальной памяти, когда каждый процесс имеет независимое адресноепространство, размер которого в ряде случаев значительно превышает объ!ем оперативной памяти компьютера.
Наконец, здесь представлены струк!туры данных ядра, связанные с управлением процессами и памятью.www.books-shop.comФайловаяБОЛЬШИНСТВО данных в операционной системе UNIX хранится в файлах,организованных в виде дерева и расположенных на некотором носителеданных. Обычно это локальный (т. е. расположенный на том же компью!тере, что и сама операционная система) жесткий диск, хотя специальныйтип файловой системы — NFS (Network File System) обеспечивает хране!ние файлов на удаленном компьютере. Файловая система также можетрасполагаться на CD!ROM, дискетах и других типах носителей, однакодля простоты изложения сначала мы рассмотрим традиционную файловуюсистему UNIX, расположенную на обычном жестком диске компьютера.Исконной файловой системой UNIX System V является s5fs. Файловаясистема, разработанная в Беркли, FFS, появилась позже, в версииUNIX.
По сравнению с s5fs она обладает лучшей производительностью,функциональностью и надежностью. Файловые системы современных вер!сий UNIX имеют весьма сложную архитектуру, различную для разных вер!сий. Несмотря на это все они используют базовые идеи, заложенныеработчиками UNIX в AT&T и Калифорнийском университете в Беркли.Поэтому мы проиллюстрируем основные принципы организации файло!вой системы UNIX на примере базовых систем System V (s5fs) и BSD(FFS), которые, кстати, и сегодня поддерживаются в большинстве версийUNIX.Когда появилась файловая система FFS, архитектура UNIX поддерживалаработу только с одним типом файловой системы. Таким образом, создате!ли различных версий операционной системы UNIX вынуждены были вы!бирать одну файловую систему из нескольких возможных.
Это неудобствобыло преодолено введением независимой или виртуальной файловой систе!мы — архитектуры, позволяющей обеспечивать работу с несколькими"физическими" файловыми системами различных типов. В этой главе мырассмотрим реализацию виртуальной файловой системы, разработаннуюфирмой Sun Microsystems.
Данная архитектура является стандартом дляSVR4, однако и другие версии UNIX используют подобные подходы. Вкачестве примера можно привести независимую файловую систему SCOUNIX.Ⱦɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.com280Глава 4. ФайловаяДалее мы рассмотрим схему доступа прикладных процессов к файлам —всю цепочку структур данных от файловых дескрипторов процесса до фак!тических дисковых данных, которую операционная система создает в ре!зультате открытия процессом файла и которая затем используется для об!мена данными.В заключение мы рассмотрим буферный кэш — подсистему, которая по!зволяет значительно увеличить производительность работы с дисковымиданными.Базовая файловая система System VКаждый жесткий диск состоит из одной или нескольких логических час!тей, называемых разделами (partitions).
Расположение и размер раздела оп!ределяются при форматировании диска. В UNIX разделы выступают в ка!честве независимых устройств, доступ к которым осуществляется как кразличным носителям данных.Например, диск может состоять из четырех разделов, каждый из которыхсодержит свою файловую систему.
Заметим, что в разделе может распола!гаться только одна файловая система, которая не может занимать несколь!ко разделов. В другой конфигурации диск может состоять только из од!ного раздела, позволяя создание весьма емких файловых систем.Файловая система s5fs занимает раздел диска и состоит из трех основныхкомпонентов, как показано на рис.Рис. 4.1. Структура файловой системы s5fswww.books-shop.comфайловая системаVСуперблокСодержит общую информацию о файловойсистеме, например, об ее архитектуре, общем числе блоков и ин!дексных дескрипторов, или метаданныхП Массив индексныхСодержит метаданные всехфайлов файловой системы. Индексный дескриптор содержит статус!ную информацию о файле и указывает на расположение данныхэтого файла.
Ядро обращается к inode по индексу в массиве ilist.Один inode является корневым (root) inode файловой системы, черезнего обеспечивается доступ к структуре каталогов и файлов послемонтирования файловой системы. Размер массива ilist является фик!сированным и задается при создании файловой системы. Таким об!разом, файловая система s5fs имеет ограничение по числу файлов,которые могут храниться в ней, независимо от размера этих файлов.ПБлоки хранения данных. Данные обычных файлов и каталогов хранят!ся в блоках.
Обработка файла осуществляется через inode, содержа!щего ссылки на блоки данных. Блоки хранения данных занимаютбольшую часть дискового раздела, и их число определяет макси!мальный суммарный объем файлов данной файловой системы. Раз!мер блока кратен 512 байтам, например файловая системаSCOUNIX использует размер блока в 1 Кбайт (отсюда и название).Рассмотрим подробнее каждый из перечисленных компонентов.СуперблокСуперблок содержит информацию, необходимую для монтирования иуправления работой файловой системы в целом (например, для размеще!ния новых файлов). В каждой файловой системе существует только одинсуперблок, который располагается в начале раздела.
Суперблок считывает!ся в память при монтировании файловой системы и находится там до ееотключения (размонтирования).Суперблок содержит следующую информацию:П Типсистемы (s_type)П Размер файловой системы в логических блоках, включая сам супер!блок, ilist и блоки хранения данныхП Размер массива индексных дескрипторов (s_isize)П Число свободных блоков, доступных для размещенияП Число свободных inode, доступных для размещенияП Флаги (флаг модификациифлаг режима монтированияПППРазмер логического блока (512, 1024, 2048)Список номеров свободных inodeСписок адресов свободных блоковwww.books-shop.com282Глава 4.
ФайловаяПоскольку число свободных inode и блоков хранения данных может бытьзначительным, хранение двух последних списков целиком в суперблокенепрактично. Например, для индексных дескрипторов хранится толькочасть списка. Когда число свободных inode в этом списке приближается кО, ядро просматриваети вновь формирует список свободных inode.Для этого ядро анализирует полеиндексного дескриптора, кото!рое равно 0 у свободных inode.К сожалению, такой подход неприменим в отношении свободных блоковхранения данных, поскольку по содержимому блока нельзя определить,свободен он или нет.