
- •Билет 1 – (4) 1. Основы ос Unix, возможности, стандартизация
- •1.1 Отличительные черты ос unix
- •1.2 Основы архитектуры операционной системы unix
- •1.3 Ядро системы
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 4 (1, 16, 18) – 146
- •3. Последовательность действий по преобразованию адреса в защищенном режиме:
- •1.8 Обработка ошибок
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Особенности современных операционных систем (2, 28) – 122
- •Характеристики современных ос
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 3 (3, 28) – 144
- •3. Концепция слоистой операционной системы и системы на основе микроядра.
- •6.Подход на основе микроядра хорошо функционирует среди объектно-ориентированных ос (object-oriented operating system).
- •Билет 4
- •1. Владельцы файлов. Права доступа к файлам. Атрибуты файлов (4, 18) – 23
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 1 (4, 26) – 142
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •1. Неименованные каналы в ос unix (5) – 77
- •2. Взаимодействие процессов. Задача взаимного исключения. Алгоритм Деккера (5) – 147
- •3. Понятие процесса, модели процессов (5) – 132
- •1. Метаданные файлов в ос unix (7) – 36
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Описание процесса, таблица процесса (6) – 136
- •1. Процессы в ос unix. Типы процессов. (7, 23) – 56
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152
- •3. Принципы построения ос (7, 19, 26) – 128
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152
- •3. Концепция потока, как составной части процесса (8) – 139
- •1. Разработка программ в ос unix. Обработка ошибок, переменные окружения (9) – 11
- •2. Применение двоичных семафоров для решения задачи «производитель» - «потребитель» (буфер неограниченный) (9, 21)
- •3. Концепция виртуализации (9, 17)
- •1. Файлы, отображаемые в память (10) – 33
- •2. Применение семафоров для решения задачи «производитель» - «потребитель» с неограниченным буфером. Решение «спящий парикмахер». (10, 22) – 155
- •3. Подсистема управления памятью, требования, предъявляемые к ней (10)
- •Билет 11
- •1. Процессы в ос unix. Порождение процесса (11, 25) – 57
- •2. Применение общих семафоров для решения задачи «производитель-потребитель» с ограниченным буфером (11, 23) – 157
- •3. Виртуальная память. Задачи управления виртуальной памятью (11, 25)
- •1. Сигналы в ос unix. Их назначение и обработка (12) – 70
- •2. Взаимодействие процессов через переменные состояния. Пример приоритетного правила (12) – 157
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •1. Функции для работы с сигналами (13) – 70
- •2. Проблема тупиков. Алгоритм банкира (13)
- •3.Задача замещения
- •1. Файлы и файловая система в ос unix. Права доступа (3, 14) – 18
- •2. Задача взаимного исключения. Алгоритм Петерсона (14) – 148
- •3. Схемы распределения памяти
- •1. Файловая система в ос unix ext2 (15) – 51
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •Билет 16
- •1. Каналы в ос unix (16) – 80
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 4 (1, 16, 18) – 146
- •3. Организация защиты в процессорах ia32
- •1. Процессы в ос unix, системные вызовы wait, exit (17) – 60, 63
- •2. Монитороподобные средства синхронизации для решения задачи взаимного исключения (17) – 160
- •3. Концепция виртуализации (9, 17)
- •1. Владельцы файлов. Права доступа к файлам. Атрибуты файлов (4, 18) – 23
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 4 (1, 16, 18) – 146
- •3. Схемы распределения памяти (18, 24)
- •1. Взаимодействие процессов в ос unix, очереди сообщений (19) – 83
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152
- •3. Принципы построения ос (7, 19, 26) – 128
- •1 Взаимодействие процессов в ос unix с применением семафоров (20) – 93
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152
- •Механизмы поддержки многозадачности в процессорах ia32 (20)
- •1. Работа с файлами в ос unix. Системные вызовы (21) – 25
- •2. Применение двоичных семафоров для решения задачи «производитель» - «потребитель» (буфер неограниченный) (9, 21)
- •3. Страничная организация памяти в процессоре ia32
- •Билет 22
- •1. Взаимодействие процессов в ос unix. Разделяемая память (22) – 100
- •2. Применение семафоров для решения задачи «производитель» - «потребитель» с неограниченным буфером. Решение «спящий парикмахер». (10, 22) – 155
- •3. Организация защиты в процессорах ia32
- •Билет 23
- •1. Процессы в ос unix. Типы процессов. (7, 23) – 56
- •2. Применение общих семафоров для решения задачи «производитель-потребитель» с ограниченным буфером (11, 23) – 157
- •3.Задача замещения
- •1. Понятие потока в ос unix. Создание потока, завершение потока (24) – 106
- •2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20, 24) - 152
- •3. Схемы распределения памяти (18, 24)
- •1. Процессы в ос unix. Порождение процесса (11, 25) – 57
- •2. Задача взаимного исключения. Алгоритм Петерсона
- •3. Виртуальная память. Задачи управления виртуальной памятью (11, 25)
- •Билет 26
- •1. Создание потока
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 1 (4, 26) – 142
- •3. Принципы построения ос (7, 19, 26) – 128
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 2 (2, 6, 15, 27) – 143
- •3. Функции микроядра (4, 12, 15, 27) – 126
- •2. Взаимодействие процессов. Задача взаимного исключения. Вариант 3 (3, 28) – 144
- •3. Особенности современных операционных систем (2, 28) – 122
2. Применение двоичных семафоров для решения задачи «производитель» - «потребитель» (буфер неограниченный) (9, 21)
При решении стремятся использовать только двоичные семафоры. В таком случае программа будет выглядеть так:
ЗП - задержка потребителя.
СЧПБ - счетчик порций в буфере.
begin integer ЧПБ, РБ, ЗП;
ЧПБ := 0;
РБ := 1;
ЗП := 0;
parbegin
производитель: begin
П1: производство новой порции;
p(РБ)
добавление новой порции в буфер;
ЧПБ := ЧПБ + 1;
If (ЧПБ = 1) then v(ЗП);
v(PБ);
goto П1;
end;
потребитель: begin integer СЧПБ;
ждать: p(ЗП);
продолжить: p(PБ);
взятие порции из буфера;
ЧПБ := ЧПБ - 1;
СЧПБ := ЧПБ;
v(PБ);
обработка взятой порции;
if (CЧПБ = 0) then goto ждать;
else goto продолжить;
end;
parend;
end;
Значение локальной переменной СЧПБ устанавливается при взятии порции из буфера и фиксируется, не была ли эта порция последней. Здесь двоичный семафор РБ решает задачу взаимного исключения при работе с буфером. Введен новый двоичный семафор – задержка потребителя (ЗП). Программа представляет интерес в течение времени, когда буфер пуст. В исходном состоянии семафор ЗП установлен в ноль и открывается производителем только в том случае, когда в пустой буфер записывается порция. Остановка потребителя на семафоре ЗП не блокирует работу с буфером, так как стоит выше операции р(РБ). Смысл ждать есть только в том случае, если буфер пуст.
3. Страничная организация памяти в процессоре ia32
Под сегментом понимается блок смежных ячеек памяти в адресном пространстве 1Mb, с максимальным размером в 64Kb и начальным (базовым) адресом, находящимся на 16-байтной границе (параграфе). Для обращения к памяти необходимо определить базу сегмента и 16-битное расстояние от базы, называемое смещением .
Чтобы упростить обращения к памяти, за каждой командой закрепляется сегментный регистр по умолчанию, т.е. команды адресуются через CS:IP, стек через SS:SP, данные через DS:[смещение] и ES:[смещение].
Преобразование пары СЕГМЕНТ : СМЕЩЕНИЕ в физический производится в соответствии с выше приведенным выражением и, в результате, получаем 20-битный физический адрес. Переход от логического адреса в физический однозначен, а из физического адреса в логический неоднозначен, т.е. каждому физическому адресу может быть сопоставлено в соответствие 4Kb логических адресов.
При таком подходе есть неприятный момент, называемый заворачиванием адреса, возникающий, когда рассчитываемое значение физического адреса больше 1Mb.
Сегментация памяти процессора 8086 имеете особенности, усложняющие разработку многозадачных систем:
Сегменты памяти имеют всего два атрибута:
- начальный адрес (на границе параграфа);
- максимальный размер (64 Kb).
Никаких аппаратных средств контроля правильности использования сегментов нет.
Размещение сегментов в памяти произвольно, т.е. они могут частично или полностью перекрываться или не иметь общих частей.
Программа может обратиться к любому сегменту для выполнения операций чтения/записи или для выборки команды. Программа может обратиться по любому физическому адресу, а для защиты памяти от несанкционированного доступа требуются внешние схемы.
Нет препятствий для обращения к даже несуществующей физической памяти. Если программа выдаёт адрес несуществующей памяти, то результат работы зависит от аппаратных особенностей конкретной вычислительной машины.
Что же касается процессора архитектуры IA-32, сегменты в нем описываются отдельными информационными структурами, называемыми дескрипторами.
Основное отличие данной модели сегментации памяти заключается в том, что пользовательская программа не может свободно обращаться по любому адресу в пространстве памяти. Программа, в зависимости от уровня привилегий, не может обращаться к сегменту до тех пор, пока он не описан для данной программы.
Определение сегментов в многозадачном режиме производится на системном уровне, причем определяется следующая информация для каждого сегмента:
- базовый адрес;
- размер сегмента;
- целевое использование;
- уровень привилегий;
- другие параметры.
Базовый адрес может быть произвольным, т.е. выравнивание не требуется на границу параграфа или страницы. Размер сегмента может кодироваться от 1b до 4Gb. Это значит, что с помощью 32-битного индекса можно пройти всё адресное пространство, не модифицируя сегментный регистр.