Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек_1_2_Архитектура UNIX.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
92.16 Кб
Скачать

Структура и основные функции ядра

Ядро состоит из трех основных подсистем (рис. 2):

  • Файловая подсистема

  • Подсистема управления процессами и памятью

  • Подсистема ввода/вывода.

Рис. 2.

К основным функциям ядра ОС UNIX принято относить следующие:

  1. Инициализация системы − функция запуска и раскрутки. Ядро системы обеспечивает средство раскрутки (bootstrap), которое обеспечивает загрузку полного ядра в память компьютера и запускает ядро.

  2. Управление файлами − функция, реализующая абстракцию файловой системы, - иерархии каталогов и файлов. Файловые системы ОС UNIX поддерживают несколько типов файлов. Некоторые файлы могут содержать данные в формате ASCII, другие будут соответствовать внешним устройствам. В файловой системе хранятся объектные файлы, выполняемые файлы и т.д. Файлы обычно хранятся на устройствах внешней памяти; доступ к ним обеспечивается средствами ядра. В мире UNIX существует несколько типов организации файловых систем. Современные варианты ОС UNIX одновременно поддерживают большинство типов файловых систем.

  3. Управление процессами и нитями − функция создания, завершения и отслеживания существующих процессов и нитей. Поскольку ОС UNIX является мультипроцессной (многозадачной) операционной системой, ядро обеспечивает разделение между запущенными процессами времени процессора (или процессоров в мультипроцессорных системах) и других ресурсов компьютера для создания внешнего ощущения того, что процессы реально выполняются параллельно.

  4. Обмен данными (коммуникационные средства) − функция, обеспечивающая возможности обмена данными между процессами, выполняющимися внутри одного компьютера (IPC - Inter-Process Communications), между процессами, выполняющимися в разных узлах локальной или глобальной сети передачи данных, а также между процессами и драйверами внешних устройств.

  5. Управление памятью − функция отображения практически неограниченной вирту-альной памяти процессов в физическую оперативную память компьютера, которая имеет ограниченные размеры. Соответствующий компонент ядра обеспечивает разделяемое использование одних и тех же областей оперативной памяти несколькими процессами с использованием внешней памяти.

  6. Программный интерфейс − функция, обеспечивающая доступ к возможностям ядра со стороны пользовательских процессов на основе механизма системных вызовов, оформленных в виде библиотеки функций.

Файловая подсистема управляет файлами, размещает записи файлов, управляет свободным пространством, доступом к файлам и поиском данных для пользователей.

Процессы взаимодействуют с подсистемой управления файлами, используя при этом совокупность специальных обращений к операционной системе, таких как open(2) (для того, чтобы открыть файл на чтение или запись), close(2), read(2), write(2), stat(2) (запросить атрибуты файла), chown(2) (изменить запись с информацией о владельце файла) и chmod(2) (изменить права доступа к файлу).

Забегая вперед, отметим, что в UNIX поддерживается шесть типов файлов. «Обычными», т.е. файлами на диске, с которыми Вы уже имели дело, являются только первый из этих типов:

  • обыкновенным файлом (regular file)

  • каталогом (directory)

  • специальным файлом устройства (speshial device file)

  • именованным (имеющим имя) каналом связи (named pipe или FIFO)

  • связью (link)

  • сокетом (socket).

Благодаря этому файловая подсистема обеспечивает унифицированный (единый, единообразный) интерфейс доступа к данным, расположенным на дисковых накопителях, и к периферийным устройствам. Одни и те же функции open (2) , read(2), write(2) могут использоваться как при чтении или записи данных на диск, так и при выводе текста на принтер или терминал. Файловая подсистема обеспечивает перенаправление запросов, адресован­ных периферийным устройствам, соответствующим модулям подсистемы вода/вывода

Важной функцией файловой подсистемы в UNIX является контроль прав доступа к файлам и каталогам. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы (в том числе и доступ к периферийным устройствам), права доступа к файлам определяют привилегии пользоателя в системе.

Подсистема управления процессами отвечает за синхронизацию процессов, взаимодействие процессов, распределение памяти и планирование выполнения процессов. Подсистема управления файлами и подсистема управления процессами взаимодействуют между собой, когда файл загружается в память на выполнение: подсистема управления процессами читает в память исполняемые файлы перед тем, как их выполнить.

Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:

  • Создание и удаление процессов.

  • Распределение системных ресурсов (памяти, вычислительных ресур­сов) между процессами.

  • Синхронизацию процессов.

  • Межпроцессное взаимодействие.

Очевидно, что в общем случае число активных процессов превышает чис­ло процессоров компьютера, но в каждый конкретный момент времени на каждом процессоре может выполняться только один процесс. Операцион­ная система управляет доступом процессов к вычислительным ресурсам, создавая ощущение одновременного выполнения нескольких задач.

Специальная задача ядра, называемая «распорядителем» или «планировщиком» процессов (scheduler), разрешает конфликты между процессами в конкуренции за системные ресурсы (процессор, память, устройства ввода/вывода). Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые системные ресурсы. Процесс освобождает процессор, ожидая длительной операции вво­да/вывода, или по прошествии кванта времени. В этом случае планировщик выбирает следующий процесс с наивысшим приоритетом и запускает его на выполнение.

Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. Оперативная память является дорогостоящим ре­сурсом, и, как правило, ее редко бывает "слишком много". В случае если для всех процессов недостаточно памяти, ядро перемещает части процесса или нескольких процессов во вторичную память (как правило, в специальную область жесткого диска), освобождая ресурсы для выполняющегося процесса. Все современные системы реализуют так называемую виртуальную память: процесс выполняется в собственном логическом адресном пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в задачи модуля управления памятью.

Модуль межпроцессного взассмодействия отвечает за уведомление процессов o событиях c помощью сигнaлов и обеспечивает возможность пеpедачи данных между pазличными процессами.

Примерами обращений к операционной системе, используемых при управлении процессами, могут служить fork(2) (создание нового процесса), exec(2) (наложение образа программы на выполняемый процесс), exit(2) (завершение выполнения процесса), wait(2) (синхронизация продолжения выполнения основного процесса с моментом выхода из порожденного процесса), brk(2) (управление размером памяти, выделенной процессу) и signal(2) (управление реакцией процесса на возникновение экстраординарных событий).

Подсистема ввода-вывода выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам (дискам, магнитным лентам, принтерам, терминалам,…). Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств – специальными модулями ядра, непосредственно обслуживающими внешние периферийные устройства.