Основные понятия операционных систем. Синхронизация и критические области. Сигналы и взаимодействие между процессами. Управление памятью. Драйверы устройств. Особенности современных операционных систем. Центральный процессор, микросхемы часов и таймеров.
Перед включением прерываний необходимо настроить таблицу векторов прерываний. Для них устанавливается уровень привилегии ядра, чтобы пользовательский процесс не мог самостоятельно инициировать эти прерывания. Вектор с номером 6 - это программное прерывание (системный вызов), который должен быть доступен всем процессам, для чего устанавливается соответствующий уровень привилегий в таблицу векторов прерывания. Таблица векторов имеет вид: inter_descr_table ; таблица векторов прерывания db 0 ; Установка уровня привелегии, 0-аппаратное(внешнее) прерывание dw timer ; 0-Подпрограмма 0, выдающая сообщение о том, что сработало прерывание по таймеру db 0 ; Установка уровня привелегии, 0-аппаратное прерывание dw div_by_zero ; 1-подпрограмма 1, выдающая сообщение о том, что сработало прерывание при делении на ноль db 0 ; Установка уровня привелегии, 0-аппаратное аппаратное dw uncor_instr ; 2-подпрограмма 2, выдающая сообщение о том, что сработало прерывание при неверной инструкции db 0 ; Установка уровня привелегии, 0-аппаратное прерывание dw break_point ; 3-подпрограмма 3, выдающая сообщение о том, что сработало прерывание при отладке db 0 ; Установка уровня привелегии, 0-аппаратное прерывание dw page_fault ; 4-подпрограмма 4, выдающая сообщение о том, что сработало прерывание при сбое страницы db 0 ; Установка уровня привелегии, 0-аппаратное прерывание dw protection ; 5-подпрограмма 5, выдающая сообщение о том, что сработало прерывание при ошибке доступа db 1 ; Установка уровня привелегии, 1-пользовательское прерывание dw sys_call ; 6 - системный вызов 196 movw inter_descr_table, r1; в r1 - адрес таблицы прерываний lidt r1 ; загружаем адрес в процессор sti ; включаем прерывания retОперационные системы прошли большой путь развития. Но уже тогда операционные системы способствовали организации и структурированию данных на внешних носителях.
План
СОДЕРЖАНИЕ
ПРЕДИСЛОВИЕ ...........................................................................................................................8 Введение.........................................................................................................................................9 1. Основные понятия операционных систем.......................................................................10 1.1. Многопользовательские системы................................................................................11 1.2. Пользователи и группы ................................................................................................12 1.3. Процессы........................................................................................................................13 1.4. Архитектура ядра..........................................................................................................14 1.5. Модель процесс/ядро....................................................................................................16 1.6. Реализация процесса.....................................................................................................18 1.7. Реентерабельные ядра...................................................................................................19 1.8. Адресное пространство процесса................................................................................22 1.9. Синхронизация и критические области......................................................................23
1.10. Сигналы и взаимодействие между процессами ....................................................26 1.11. Управление процессами ..........................................................................................27
1.11.1. Процессы-зомби...................................................................................................28 1.11.2. Группы процессов и сеансы................................................................................29
1.12. Управление памятью................................................................................................30 1.12.1. Виртуальная память.............................................................................................30 1.12.2. Использование оперативной памяти..................................................................31 1.12.3. Аллокатор памяти ядра .......................................................................................32 1.12.4. Кэширование........................................................................................................34
1.13. Драйверы устройств.................................................................................................35 1.14. Особенности современных операционных систем...............................................37
1.14.1. Монолитное ядро.................................................................................................37 1.14.2. Потоки ядра..........................................................................................................37 1.14.3. Поддержка многопоточных приложений..........................................................37 1.14.4. Вытеснение в ядре ...............................................................................................38 1.14.5. Поддержка многопроцессорной обработки ......................................................38 1.14.6. Файловая система ................................................................................................38 1.14.7. Сетевые технологии.............................................................................................38 1.14.8. Зависимость от оборудования ............................................................................38
1.15. Контрольные вопросы..............................................................................................40 2. Центральный процессор....................................................................................................42
2.1. Регистры общего назначения.......................................................................................42 2.1.1. Регистры данных.......................................................................................................42 2.1.2. Регистры-указатели..................................................................................................42
3. Подсистема управления памятью ....................................................................................52 3.1. Адреса памяти ...............................................................................................................52 3.2. Сегментация в аппаратной части.................................................................................53
3.2.1. Селектор сегментов и сегментные регистры.........................................................53 3.2.2. Дескрипторы сегментов...........................................................................................54 3.2.3. Быстрый доступ к дескрипторам сегментов..........................................................56 3.2.4. Блок сегментации .....................................................................................................58
3.3. Сегментация в современных ОС .................................................................................60 3.4. Управление страницами на аппаратном уровне ........................................................61
3.4.1. Обычное управление страницами...........................................................................62 3.4.2. Расширенное управление страницами....................................................................65 3.4.3. Аппаратная схема защиты.......................................................................................66 3.4.4. Пример обычного управления страницами............................................................67 3.4.5. Механизм расширения физических адресов (РАЕ)...............................................68 3.4.6. Управление страницами в 64-разрядных архитектурах .......................................70 3.4.7. Аппаратный кэш.......................................................................................................71 1.1.1. Буферы быстрого преобразования адреса (TLB)...................................................74
???? Схема разбивки физической памяти...........................................................................74 ???? Таблицы страниц процесса ..........................................................................................76 ???? Таблицы страниц ядра..................................................................................................76 ???? Контрольные вопросы..................................................................................................77
4. Управление процессами....................................................................................................78 4.1. Процессы, облегченные процессы и потоки..............................................................78 4.2. Переключение процессов.............................................................................................80
4.2.1. Аппаратный контекст...............................................................................................80 4.2.2. Сегмент состояния задачи .......................................................................................81 4.2.3. Сохранение и загрузка регистров FPU, ММХ и ХММ.........................................82
4.3. Контрольные вопросы..................................................................................................84 5. Обработка прерываний и исключений ............................................................................85
5.1. Роль сигналов прерываний...........................................................................................85 5.2. Прерывания и исключения...........................................................................................87
5.3. IRQ и прерывания .........................................................................................................88 5.4. Исключения...................................................................................................................90 5.5. Таблица дескрипторов прерываний............................................................................92 5.6. Аппаратная обработка прерываний и исключений...................................................93 5.7. Вложенное выполнение обработчиков исключений и прерываний ........................96 5.8. Обработка прерываний ввода/вывода.........................................................................98 5.9. Программирование контроллера прерываний 8259 ................................................100
5.9.1. Общая схема обработки прерывания....................................................................100 5.9.2. Обработка прерываний при каскадном соединении контроллеров...................101 5.9.3. Потеря прерываний ................................................................................................102 5.9.4. Приоритеты прерываний .......................................................................................103
5.9.5. Обычный и специальный режимы полной вложенности прерываний .....104 5.9.6. Режим программного опроса.................................................................................105 5.9.7. Окончание обработки прерывания .......................................................................106 5.9.8. Маскирование прерываний....................................................................................107 5.9.9. Фиксация запросов прерываний и разделение линий IRQ.................................108
5
6
5.9.10. Программирование контроллера прерываний ................................................109 5.9.11. Инициализация контроллера прерываний.......................................................110 5.9.12. Управляющее слово операций 1 (OCW1)........................................................112 5.9.13. Управляющее слово операций 2 (OCW2)........................................................112 5.9.14. Управляющее слово операций 3 (OCW3)........................................................113
5.10. Пример программирования контроллера прерываний.......................................114 5.11. Контрольные вопросы............................................................................................115
6. Подсистема времени........................................................................................................116 6.1. Микросхемы часов и таймеров..................................................................................116
6.2. Высокоточный таймер событий ....................................................trial.......................118 6.3. Программиtrialй интервальный таймер 8254.....................................trial.............119
6.3.1. Принципы работы...................................................................................................119 6.3.2. Программирование.................................................................................................122 6.3.3. Пример программирования таймера.....................................................................126
6.4. Контрольные вопросы................................................................................................126 7. Управление клавиатурой и мышью ...............................................................................128
7.1. Программное взаимодействие с контроллером .......................................................128 7.1.1. Регистры контроллера............................................................................................129 7.1.2. Команды контроллера............................................................................................130 7.1.3. Управляющий байт контроллера ..........................................................................133 7.1.4. Входной порт ..........................................................................................................134 7.1.5. Выходной порт........................................................................................................135
7.2. Команды управления мышью....................................................................................135 7.3. Пример программирования мыши PS/2....................................................................139
8. Пример проектирования операционной системы.........................................................154 8.1. Микроконтроллер VM8182........................................................................................154 8.2. Проектирование виртуальной машины VM8182.....................................................158
8.2.1. Модуль управления процессором.........................................................................159 8.2.2. Модуль управления памятью ................................................................................162 8.2.3. Модуль управления прерываниями......................................................................164 8.2.4. Главная программа.................................................................................................165
8.3. Проектирование ассемблера VM8182.......................................................................167 8.4. Стандартная библиотека функций для ядра операционной системы....................175 8.5. Подсистема управления памятью..............................................................................178
8.5.1. Структуры данных подсистемы памяти...............................................................178 8.5.2. Процедура инициализации памяти.......................................................................179 8.5.3. Заполнение глобальной таблицы страниц ядра...................................................181 8.5.4. Создание нового региона.......................................................................................182 8.5.5. Удаление региона ...................................................................................................183 8.5.6. Изменение размера региона...................................................................................184 8.5.7. Дублирование региона...........................................................................................187 8.5.8. Копирование памяти ..............................................................................................189
8.6. Подсистема управления процессами.........................................................................189 8.6.1. Инициализация подсистемы процессов ...............................................................190 8.6.2. Создание дочернего процесса ...............................................................................192 8.6.3. Создание нового региона для процесса................................................................193 8.6.4. Присоединение существующего региона к процессу.........................................194 8.6.5. Переключение между процессами........................................................................194
8.7. Подсистема управления прерываниями ...................................................................195
6
7
8.7.1. Процедура инициализации прерываний...............................................................196 8.7.2. Обработчик прерывания от таймера.....................................................................197
8.9. Главная программа ядра.............................................................................................198 Заключение................................................................................................................................200 Библиографический список......................................................................................................201
7
Вывод
Операционные системы прошли большой путь развития. Первые системы были рассчитаны на работу одного пользователя и одной программы. Но уже тогда операционные системы способствовали организации и структурированию данных на внешних носителях. Затем развитие операционных систем пошло в сторону увеличения числа пользователей и одновременно работающих программ. Появились сначала системы с пакетной обработкой, а затем системы с разделением времени.
В данном пособии были рассмотрены различные компоненты операционных систем, такие как подсистемы управления процессами, памятью, контроллерами прерываний, последовательным портом. Был приведен пример разработки операционной системы для микроконтроллера с поддержкой виртуальной памяти. Для этой операционной сисемы была также разработана виртуальная машина, моделирующая работу микроконтроллера, и была разработана программа ассемблера, копилирующая текст программы на ассемблере в машинный код.