- •1 Ядро. Модули ос
- •Функции ядра
- •2 Ядро в привилегированном режиме
- •3 Процесс. Модель процесса
- •Создание процессов
- •Состояния процессов
- •4 Завершение процесса
- •5 Иерархия процессов
- •6 Структура ядра
- •7 Переключение процессов
- •Содержимое таблицы процессов (ее столбцы)
- •8 Потоки. Модель потока
- •9 Межпроцессорное взаимодействие. Состояние состязания
- •10 Критические области
- •11 Запрещения прерываний и переменные блокировки Попытка аппаратного решения проблемы
- •Рассмотрим программные решения
- •12 Алгоритм петерсона. Команда tsl
- •Примитивы межпроцессорного взаимодействия
- •13 Семафоры
- •14 Мьютексы
- •15 Функции ос по управлению памятью
- •16 Типы адресов
- •17 Образ процесса. Виртуальное адресное пространство
- •18 Методы распределения памяти
- •Распределение памяти фиксированными разделами
- •Распределение памяти динамическими разделами
- •Перемещаемые разделы
- •19 Swopping и виртуальная память
- •Включает решение следующих задач
- •20 Страничное распределение памяти
- •22 Сегментное распределение памяти
- •24 Кэш память
- •Принцип действия кэш памяти
- •25 Устройство ввода-вывода
- •Контроллеры внешних устройств
- •1 Способ. Раздельные адресные пространства
- •2 Способ. Одно адресное пространство
- •3 Способ. Гибридный
- •27 Использование нескольких шин для ввода-вывода
- •28 Прямой доступ к памяти. Direct Memory Access (dma)
- •29 Процедура прерываний. Контроллер прерываний
- •30 Принципы программного обеспечения ввода-вывода
- •31 Программный ввод-вывод
- •31 Управляемый прерываниями ввод-вывод. Использование дма
- •32 Программные уровни ввода-вывода
- •Обработка прерываний и драйверы
- •Программные уровни ввод-вывод
- •33 Независимое от устройств программное обеспечение ввода-вывода Единообразный интерфейс для устройств
- •Единообразный интерфейс драйверов устройств
- •34 Структура и функции драйверов
- •35 Буферизация ввода-вывода
- •36 Юникс подобные ос
- •37 Структура ядра ос юникс
- •38 Загрузка юникс подобной ос
- •39 Процессы в системе юникс
- •40 Управление процессами ядром юникс
- •41 Системные вызовы управления процессами
- •42 Системные вызовы управления потоками
- •43 Сигналы
- •44 Файловая система и иерархия данных
- •45 Файловая система fat
35 Буферизация ввода-вывода
Одна из возможных стратегий обработки поступающих символов от входных устройств состоит в обращении процессов пользователя к системному вызову <read> и блокировки в ожидании отдельного символа. Каждый прибывающий символ выглядит как прерывание. Процедура обработки прерываний передает символ пользовательскому процессу и разблокирует его. Поместив куда-нибудь полученный символ, процесс читает следующий и опять блокируется.
Недостаток: процесс пользователя должен быть активизирован при приближении каждого символа, что неэффективно.
Улучшенный вариант решения задачи: пользовательский процесс предоставляет буфер размером в n символов в пространстве пользователя, после чего выполняет чтение n символов.
Процедура обработки прерываний помещает приходящие символы в буфер, пока он не заполнится. Затем активизируется процесс пользователя. Но у такого подхода есть и недостаток: если слишком много процессов начнут фиксировать свои страницы в памяти, то <pull> ( общее количество) доступных страниц уменьшится, в результате чего уменьшится производительность.
Третий подход состоит в создании буфера, в который обработчик прерываний будет помещать поступающие символы в ядро. Когда этот буфер наполнится, извлекается страница с буфером пользователя и содержание буфера помещается туда за одну операцию. Такая схема намного эффективнее.
36 Юникс подобные ос
Операционная система ЮНИКС обладает простым, но очень мощным командным языком и независимой от устройств файловой системой. При разработке этой системы были реализованы 4 цели: 1-стремление сохранить простоту и обойтись минимальным количеством функций, 2-общность(одни и те же методы и механизмы должны были использоваться во многих случаях), 3-решение сложных задач, путем комбинирования существующих небольших программ, а не разрабатывая их заново, 4-большие программные системы можно создавать путем композиции имеющихся небольших программ.
37 Структура ядра ос юникс
Центральной частью ЮНИКС систем является ядро kernel. Оно состоит из большого количества модулей и с точки зрения архитектуры считается монолитным. В ядре всегда можно выделить 3 основные подсистемы: управление процессами, управление файлами, управление операциями ввода-вывода между центральной частью и периферийными устройствами. Ядро ЮНИКСа идентифицирует каждого пользователя по его идентификатору(UID), уникальному целому значению, присваиваемому пользователю при регистрации в системе.
38 Загрузка юникс подобной ос
После входа(регистрации) пользователя в систему для него запускается 1 из командных интерпретаторов. Общее название для любого командного интерпретатора ОС ЮНИКС – оболочка, поскольку любой интерпретатор представляет внешнюю оболочку ядра системы. По умолчанию в системах линукс командным интерпретатором является bash. Вызванный командный интерпретатор выдает приглашение на ввод пользователем командной строки, которая может содержать простую команду, конвейер команд или последовательность команд. После выполнения очередной командной строки и выдачи на экран терминала или в файл соответствующих результатов интерпретатор команд снова выдает приглашение на ввод командной строки, и так до тех пор, пока пользователь не завершит свой сеанс и не выйдет из системы.