В UNIX реализована виртуальная память процессов. Каждый процесс исполняется в собственном адресном пространстве и не может непосредственно обращаться к памяти других процессоров. Такая изоляция процессов друг от друга обеспечивается механизмами операционной системы и поддерживается на аппаратном уровне в современных процессорах.
Разделение виртуальной памяти отдельных процессов необходимо в целях безопасности — процессы не должны иметь возможность по собственной инициативе менять данные других процессов — не только из-за потенциальных возможностей злоумышленников, но и потому, что программы могут совершать ошибки, и аварийное завершение одного процесса не должно отражаться на ходе работы других процессов и операционной системы в целом.
В современных реализациях UNIX для большинства аппаратных архитектур используется страничная организация виртуальной памяти. В этом случае всё адресное пространство процесса разбивается на участки одинакового размера (страницы), аналогичным образом разбивается вся физическая память. Каждая станица адресного пространства процесса может отображаться на какую-то страницу физической памяти. Это обеспечивается специальной таблицей преобразования адресов, которую операционная система поддерживает в адекватном состоянии. Таким образом, физическая память разделяется между множеством процессов, причём каждый из процессов имеет доступ только к «своим» страницам, что гарантируется операционной системой и аппаратными возможностями процессора.
В 32-разрядной архитектуре объём адресного пространства процесса равен 4 гигабайтам. Так как число процессов в системе потенциально не ограничено, очевидно, что суммарный размер адресного пространства, необходимого всем процессам, вполне может превысить размеры физической памяти. Конечно, большая часть программ оперирует довольно небольшим объёмом памяти. Однако страничное преобразование позволяет решить проблему недостатка физической памяти: неиспользуемые страницы могут копироваться из физической памяти на диск в специальную область подкачки и храниться там до момента, когда они вновь потребуются для исполнения процесса.
|
Ещё один мощный механизм, возможный благодаря страничному преобразованию, — это файлы, проецируемые в память. Процесс может «присоединить» файл к своему виртуальному адресному пространству. Это означает, что при обращении к файлу или изменении данных в нем операционная система будет автоматически выполнять отображение содержимого файла в страницы памяти процесса и обратно. Фактически операционная система здесь использует тот же механизм, что и при работе с областью подкачки, когда данные перемещаются с внешнего носителя в память при обращении к соответствующему адресу виртуальной памяти. Отображаемые в память файлы используются в тех случаях, когда необходимо с минимальными временными затратами многократно модифицировать содержимое файла, например, в базах данных или редакторах.
Файловые системы Unix.
Файл в ОС UNIX - множество символов с произвольным доступом. В файле содержатся произвольные данные, помещенные туда пользователем и ничего более. Информация на дисках размещается поблочно, по 512 байт в каждом блоке, блок равен сектору. Диск разбивается на следующие области:
|
• неиспользуемый блок;
• управляющий блок или суперблок, в котором содержится размер диска и границы других областей;
• i-список, состоящий из описаний файлов, называемых i-узлами;
• область для хранения содержимого файлов.
Каждый i-узел содержит:
- идентификационный номер владельца;
- идентификационный номер группы владельцев;
- права доступа;
- физические адреса на диске, где находится содержимое файла;
- размер файла;
- время создания файла;
- время последней модификации файла;
- время последнего изменения атрибутов;
- число ссылок на файл;
- тип файла: каталог, обычный файл или специальный файл.
Следом за i-списком идут блоки, предназначенные для хранения файлов. Пространство на диске, оставшееся свободным от файлов, образует связанный список свободных блоков.
Защита файлов осуществляется при помощи идентификатора пользователя и десяти битов защиты - прав доступа. Права доступа подразделяются на три типа:
• чтение (read);
• запись (write);
• исполнение (execute).
Эти права доступа могут быть предоставлены трем классам пользователей:
- владельцу файла;
- группе, в которую входит владелец;
- всем прочим пользователям.
Атрибуты доступа определяют, что разрешено делать с данным файлом данной категории пользователей. При создании файла модифицируется не сам файл, а каталог, в котором появляются новые ссылки на узлы. Удаление файла заключается в удалении ссылки. Право на создание и удаление файла - это право на запись в каталог. Право на выполнение каталога интерпретируется как право на поиск в нем, прохождение через него. Оно позволяет обратиться к файлу по пути, содержащему данный каталог, даже тогда, когда каталог не разрешено читать и список всех его файлов недоступен.
Файловая система UNIX характеризуется:
• иерархической структурой;
• возможностью создания и удаления файлов;
• защитой информации в файлах;
• трактовкой периферийных устройств как файлов и так далее.