Обзор функций ОС: управление памятью, файлами, процессами, сетями, командными интерпретаторами, сервисы ОС, системные вызовы. Уровни абстракции ОС. Архитектура UNIX и MS-DOS
Структура системы UNIX
Хотя система UNIX и имеет более модульную структуру, чем MS DOS, ее архитектура ограничена функциональностью аппаратуры, для которой она были первоначально разработана, - миникомпьютеров. Поэтому первые версии UNIX имели ограниченное структурирование.
Система UNIX состоит из двух частей: системные программы и ядро.
Ядро содержит все модули, уровень абстракции которых ниже системных вызовов, но выше непосредственно аппаратных модулей.
UNIX обеспечивает поддержку файловой системы, диспетчеризацию процессора, управление памятью и другие основные функции ОС.
Архитектура UNIX изображена на рис. 6.6.
В архитектуре UNIX уже четко прослеживаются три уровня абстракции – пользовательский (системные программы), системных вызовов и низкоуровневых модулей взаимодействия с аппаратурой.
Уровни абстракции
В конце 1960-х гг., при разработке операционной системы THE (название – аббревиатура, означающая "Технический университет Эйндховена"), Э. Дейкстра предложил для своего времени весьма новый и прогрессивный принцип уровней абстракции, полезный при разработке любой сложной программной системы, в том числе – столь сложной, как операционная система. Согласно этому принципу, ОС (или другая сложная программа) реализуется в виде набора (иерархии) уровней абстракции (abstraction layers),каждый из которых реализован на основе предыдущего уровня. Уровень 0 (layer 0) образует аппаратура ( hardware ); самый высокий уровень N (layer N) является пользовательским интерфейсом с операционной системой. Каждый уровень абстракции N > 0 – это группа модулей, при реализации которого, согласно принципам модульного программирования, используются только модули предшествующего уровня (N-1).
"Перескакивание" через уровень (т.е., например, использование при реализации модуля уровня N вызовов модулей уровня N – 2) не рекомендуется и является нарушением технологии, которое может привести к ошибкам.
Подобный подход позволяет проектировать сложную программную систему шаг за шагом, снизу вверх, причем на каждом шаге (уровне K) используется все более и более удобная система обозначений уровня K-1. Это позволяет абстрагироваться от лишних деталей, что и является объяснением названия данного метода.
Заметим, что, по сути дела, уровни абстракции – движущая сила и принцип развития всего программного обеспечения в целом, а не только операционных систем. Каждая новая программа разрабатывается не с нуля, а на некотором достаточно высоком уровне абстракции, используя другие уже разработанные системы.
Ключевые термины
Big endian – архитектура памяти компьютера, при которой нумерация байтов в каждом слове памяти начинается слева, т.е. начиная со старших битов.
Little endian – архитектура памяти компьютера, при которой нумерация байтов в каждом слове памяти начинается справа, т.е. начиная с младших битов.
ROM BIOS (Read-Only Memory of the Basic Input-Output System) – постоянная память, входящая в состав BIOS, системного модуля компьютера, которому передается управление непосредственно после его включения; содержит часть драйверов для модулей аппаратуры.
Авторизация - предоставление операционной системой пользователю или программе какого-либо определенного набора полномочий (permissions),например, возможности чтения или изменения файлов в файловой системе с общим доступом.
Атрибут файла – его характеристика, например, длина и начальный адрес во внешней памяти.
Блок – смежная область внешней памяти файла, как правило, считываемая или записываемая одной операцией ввода-вывода.
Виртуальная память – расширение основной памяти путем хранения ее образа на диске и организации подкачки в основную память фрагментов (страниц или сегментов) памяти процесса и ее откачки на диск по мере необходимости.
Директория (directory) – каталог ссылок на группу файлов или других директорий, каждый (каждая) из которых имеет в данной директории свое уникальное символьное имя.
Заглушка для исполнения (execution stub) – область файла исполняемого двоичного кода, содержащая ссылку на код головного метода (процедуры), обычно – main.
Заголовок файла – начальная часть файла, в которой хранятся его атрибуты.
Закрытие файла – операция, обратная открытию файла: сброс всех копий блоков файла на внешнюю память и освобождение всех областей основной памяти, занятых открытым файлом.
Защита (protection) - механизм управления доступом программ, процессов и пользователей к системным и пользовательским ресурсам.
Командный интерпретатор - программа, читающая и интерпретирующая операторы управления операционной системы, задаваемые пользователем с терминала или в виде командного файла.
Набор данных (data set) – то же, что и файл (в терминологии фирмы IBM).
Неустойчивое ( volatile ) - устройство памяти, типичное для основной памяти компьютеров, при котором ее содержимое теряется при сбое системы или при выключении питания.
Оверлейная структура (overlay) – разбиение программы на группы взаимосвязанных модулей, таких, что различные группы одновременно в памяти не нужны, с целью их поочередной загрузки в выделенную для программы область памяти.
Открытие файла – считывание в основную память его заголовка и, возможно, одного или нескольких соседних блоков перед выполнением операций ввода-вывода.
Память файла – совокупность его элементов, хранящихся во внешней памяти (например, на диске).
Переменные окружения – набор системных переменных с символьными значениями, например, PATH, задающих окружение исполняемого процесса.
Протокол – интерфейс, набор операций (например, для работы в локальной сети).
Путь ( path ) – символьная строка для поиска файла по имени в иерархии директорий.
Раздел (partition) – смежная область внешней памяти, имеющая в ОС определенное символьное обозначение (например, D: ).
Сброс, или резервное копирование (backup) – копирование файлов на устойчивые носители (флэш-память, компакт-диск, ленточный стример и др.), с целью их последующего восстановления при сбое или при ошибке пользователя.
Сборка мусора – поиск не используемых фрагментов в памяти, на которые потеряны ссылки, и уплотнение (компактировка) памяти – сдвиг всех используемых фрагментов по меньшим адресам, с корректировкой всех адресов.
Системный вызов (system call) - интерфейс между выполняемой программой и операционной системой в виде явного вызова процедуры, метода или макроса, являющегося частью ОС.
Сокет (socket) – системная структура для обмена информацией клиента с сервером через TCP/IP – сеть.
Удаленный запуск программ (на другом компьютере сети) – возможность входа на другой компьютер сети и работы на нем, с использованием памяти, процессора и диска удаленной (как правило, более мощной) машины и использованием клиентского компьютера в качестве терминала.
Уплотнение (компактировка) памяти – сдвиг всех используемых фрагментов по меньшим адресам, с корректировкой всех адресов, при сборке мусора.
Уровень абстракции (abstraction layer) - группа модулей, при реализации которых используются только модули предшествующего уровня.
Файл (file) – совокупность логически взаимосвязанной информации, расположенная во внешней памяти.
Фрагментация – дробление памяти на мелкие свободные части, вследствие неточного совпадения длин имеющихся свободных и требуемых пользовательскому процессу областей памяти.