Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOS.doc
Скачиваний:
12
Добавлен:
21.12.2018
Размер:
1.25 Mб
Скачать

Вопрос 49. Архитектура ос unix. Ядро ос. Основные функции. Принципы взаимодействия с ядром.

Основные функции ядра:

  • выполнение и управление процессов посредством их создания, завершения, оста­новки, и организа­ция взаимодействия между ними.

  • планирование очередности предоставления выполнения процессами и процессор­ным временем.

  • выделение процессам оперативной памяти (ОП) и других ресурсов.

Ядро:

  • управление процессами

  • выделение памяти

  • программный интерфейс и т.д. (найти ещё функции)

Система обладает высокой мобильностью, все части системы, кроме ядра, напи­саны на Си. Для пе­рен6оса требуется лишь компиляция. Все машины, зависящие от ядра, напи­саны на ASSEMBLER.

В их задачу входит:

  • Инициализация систем на низком уровне.

  • Первичная обработка внутренних и внешних прерываний.

  • Управление памятью, той частью, которая относится к особенностям аппаратной под­держки виртуаль­ной памяти.

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

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

Приложения в двух режимах:

  • Режим задачи (процессы имеют доступ только к своим собственным инструк­циям и данным)

  • Режим ядра (процессам доступны адресные пространства ядра и пользователя)

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

Ядро располагается в ОЗУ и не выгружаемо. Большинство информационных струк­тур данных ядра в таблицах фиксированного раздела (например, таблица процессора – размер ограничен).

Система управления файлами:

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

Ядро поддерживает две информационные структуры:

Таблицу файлов (глобальная структура ядра)

Пользовательская таблица дескрипторов файлов (для пользовательского про­цесса)

Файловая система:

блок загрузки

суперблок (состояние файловой системы: размер файлов, сколько файлов мо­жет находиться и т.д.)

список индексов (расположение файлов на диске)

информационные блоки

Для создания нового процесса используется команда fork. Процесс, использующий эту команду, – родительский. Все остальные – дочерние процессы. Ядро системы иденти­фи­цирует процесс по его номеру, названный идентификатором процесса.

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

Исполняемый файл после выполнения системой операции exec (­«_»). Отличитель­ная черта состоит в том, что процесс создается в два этапа: при вызове fork создается ко­пия родительского процесса, а после exec заменяется код.

Существует два стека: стек в режиме ядра и стек в режиме задачи. Стек в режиме ядра, если процесс в режиме задачи, и наоборот.

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

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

указатель на позицию в таблице процессов

параметры текущей системной операции

дескрипторы файлов для всех открытых данным процессов файла

текущий каталог

граница области, принадлежащая процессу

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

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

Основные состояния процесса:

процесс может выполняться в режиме задачи.

процесс может выполняться в режиме ядра.

процесс не выполняется, но готов к выполнению.

процесс приостановлен или спит.

В режиме ядра может выполняться только один процесс, в режиме пользователя много. Пока про­цесс в режиме ядра, переключать контекст нельзя.

Реализация этого требования:

на момент нахождения процесса в режиме ядра запретить прерывания.

Для того, чтобы не запрещать прерывания, ядро повышает приоритет прерывания ядра.

В состоянии «сна» может находиться много процессов.

Ситуация: три процесса ждут, пока 1 процесс занимает принтер. После освобожде­ния принтера все три процесса пробуждаются ото сна, планировщик выбирает нужный про­цесс, остальные опять впадают в сон.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]