Файл: Литература по курсу аос (по всем вопросам должен быть представлен краткий рукописный конспект в общей тетради).docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.02.2024
Просмотров: 83
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Совместимость делится на:
- двоичную совместимость (бинарный исполняемый файл для одной системы можно запустить в другой системе – то, что нужно юзеру);
- совместимость на уровне исходных текстов (интересует программистов, требует наличия собственно исходников программы, соответствующих компиляторов, библиотек и набора системных вызовов);
Мы говорим о двоичной совместимости.
Если архитектура процессоров сходна, то добиться совместимости просто. Нужно:
- чтобы системные вызовы, используемые в приложении, распознавались ОС
- чтобы совпадала внутренняя структура исполняемого файла (файл был распознан как исполняемый);
Для процессоров с совершенно разной архитектурой необходима еще и ЭМУЛЯЦИЯ двоичного кода.
Эмулятор должен:
-
распознавать, дешифровать и переводить системные инструкции одной ОС для другой -
имитировать (эмулировать) состояния регистров, флагов и АЛУ одного железа для другого.
Это просто, но долго.
Поэтому решили использовать прикладные программные среды.
Прикладные программные среды имитируют обращения к библиотечным функциям, используя вместо них тщательно отлаженные подпрограммы для работы с графическим интерфейсом. За счет того, что работа современных программ – это на 70% работа с ГАЙ, задержки выполнения практически не возникает, или она минимальна.
Способы реализация ППС.
-
Транслятор системных вызовов
Пишется специальная прога – транслятор системных вызовов, которая пропускает через себя исполняемую программу, перехватывает системные вызовы и преобразует их в эквивалентные системные вызовы другой операционной системы.
Все бы хорошо, но системные вызовы отличаются не только названием, но и поведением. Например, при создании процесса в Юникс, в этот процесс копируется адресное пространство процесса-родителя, чего не делает Виндовс.
-
Второй вариант – реализация нескольких АПИ в одной системе.
Но этот способ тоже не решает проблему, тем более что несовместимость заключается не только в разнице в АПИ.
Системы также отличаются
разными алгоритмами работы (разные алгоритмы распределения процессорного времени, разное управление процессами.) Если пытаться приспособить менеджеры ОС к взаимодействию с программами для других ОС таким же способом, надо создавать 3 менеджера, что сложно, непонятно и ПЛОХО.
-
Третий .
Каждая прикладная среда оформляется в виде отдельного сервера и не включает базовых механизмов. Приложение посылает запрос ядру, ядро перенаправляет запрос нужному серверу, сервер осуществляет выполнение нужной задачи (обращаясь за выполнением базовых действий снова-таки к ядру) и через ядро возвращает приложению результаты работы.
Такому подходу присущи все достоинства и недостатки микроядерной архитектуры.
-
Подсистема управления процессами, основные задачи. Понятие многозадачности.
Процесс – это действия системы, связанные с выполнением программы и собственно выполнение этой программы.
Процесс – это сущность, рассматриваемая как единица работы.
Задачи подсистемы управления процессами:
- планировать выполнение процессов
- распределять процессорное время
- создавать и уничтожать процессы
- обеспечивать их ресурсами
- синхронизировать
- обеспечивать взаимодействие между процессами
- обеспечивать защиту данных
Многозадачность (мультипрограммирование) – способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняется несколько программ.
Эти программы совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода и тд.
Мультипрограммирование призвано повысить эффективность использования вычислительной системы в соответствии с заданными критериями.
Критерии эффективности работы вычислительных систем:
- пропускная способность (к-во задач / единицу времени);
- удобство работы пользователей (интерактивная работа с несколькими приложениями);
- реактивность системы (способность выдерживать заданные интервалы между запуском приложения и получением результата)
В зависимости от критерия эффективности, системы делятся на:
- системы пакетной обработки (пропускная способность);
- системы разделения времени (удобство пользователя);
- системы реального времени (реактивность системы);
-
Многозадачность в системах пакетной обработки, разделения времени и реального времени.
Системы пакетной обработки.
Главная цель – максимальная загрузка ЦП, минимизация простоев. Максимальная пропускная способность – к-во задач / единицу времени.
Перед началом работы формируется пакет заданий, каждое из которых содержит требования к системным ресурсам. Из этого пакета на одновременное выполнение выбираются задачи, предъявляющие разные требования к ресурсам, что обеспечивает сбалансированную загрузку ЦП.
Выбирается самое выгодное задание – невозможно гарантировать выполнение задания за какой-то определенный промежуток времени.
Способы совмещения работы ЦП и ввода-вывода:
-
Канальный – у компа есть свой проц ввода-вывода (канал). Он умеет выполнять свои операции. ЦП дает ему параметры и указывает, какую именно инструкцию надо выполнить, после чего они работают параллельно. -
На основе контроллеров. Внешние устройства управляются собственными контроллерами. Контроллер отрабатывает команды, поступившие от ЦП, но делает это медленнее, чем ЦП (т.к. устройства внешние - электромеханические). За счет этого достигается параллелизм.
Переключение с задачи на задачу в системах пакетной обработки – невытесняющее, по инициативе самой задачи, которая добровольно отказывается от процессора, когда ей нужно устройство ввода – вывода.
Задача может надолго занять процессор – это снижает эффективность работы пользователя, но повышает эффективность использования аппаратуры.
Системы разделения времени
Цель – удобство работы пользователя.
Одному или нескольким юзерам предоставляется возможность работать сразу с несколькими приложениями. Поэтому время работы каждого приложения ограничивается – ОС приостанавливает его выполнение по истечении кванта процессорного времени.
Т.о. ни одна задача не занимает ЦП надолго, и время ответа приложения остается приемлемым для юзера, который общается с системой через терминал. У всех пользователей складывается впечатление, что они используют систему единолично
.
Такие системы обладают меньшей пропускной способностью, производительность системы снижается из-за более частых переключений процессора.
Системы реального времени
Предназначены для управления разными техническими объектами (спутники, станки, и тд). Существует предельно допустимое время, в течение которого должна быть выполнена та или иная задача. Иначе возникнет сбой с тяжелыми последствиями.
Критерий эффективности – способность выдерживать заранее заданные интервалы между запуском программы и получением результата – реактивность системы.
В системах реального времени мультипрограммная смесь состоит из фиксированного набора заранее разработанных программ (с известным временем их выполнения).
Запуск задач на выполнение осуществляется по прерываниям:
- либо исходя из текущего состояния объекта
- либо по плановому расписанию
Скорость ответа системы зависит от скорости обработки прерываний (опрос тысячи потенциальных устройств не подойдет). Это главный критерий выбора процессора для такой системы.
Загружать процессор по максимуму в этих системах нельзя, нужно оставлять запас вычислительной мощности на случай непредвиденной пиковой нагрузки. То, что вероятность ее возникновения крайне мала – здесь не аргумент, т.к. именно в этот момент больше всего понадобится адекватная реакция системы, от которой будет зависеть слишком многое (пример – зашкаливание датчиков при аварии на АЭС).
-
Понятия процесса и потока. Состояния потока. Планирование и диспетчеризация потоков в многопоточных системах (с использованием не вытесняющих алгоритмов, на основе квантования, на основе приоритетов, смешанные алгоритмы планирования).
Понятие процесса и потока
Процесс – деятельность ОС, связанная с выполнением программы и собственно выполнение этой программы.
Процесс – сущность, рассматриваемая как единица работы ОС.
Процесс – это динамичное понятие. Одна программа, запущенная дважды – это два процесса. Программа – понятие статичное.
Поток – это поток команд, выполняемый процессором.
Это сущность, которая используется системой для распределения процессорного времени.
Все ресурсы в системе, кроме процессорного времени, выделяются для процесса:
- память
- адресное пространство
- возможность доступа к файлам тд
Процессорное время выделяется потоку. Т.о мультипрограммирование реализовывается на уровне потоков, а не процессов.
Для создания процесса система создает ОПИСАТЕЛЬ ПРОЦЕССА – информационную структуру, содержащую все сведения о процессе: его id, приоритет, права доступа, данные о расположении в памяти его кода и данных.
После того, как создан новый описатель процесса, система принимает вновь появившийся процесс при планировании распределения своих ресурсов.
Для того, чтобы создать процесс, нужно загрузить коды и данные исполняемой программы в оперативную память (при использовании витруальной памяти в оперативную память загружается только часть процесса, остальные подкачиваются при необходимости.)
При создании процесса ОС создает для него как минимум 1 поток выполнения, для чего генерируется специальная структура – ОПИСАТЕЛЬ ПОТОКА. Сюда записывается информация о id потока, его приоритете, правах доступа и состоянии и тд. Вновь созданный поток находится в приостановленном состоянии и становится в очередь на выполнение в соответствии с определенными правилами системы.
При работе с процессами система использует понятия ДЕСКРИПТОР ПРОЦЕССА (он же описатель, см. выше ) и КОНТЕКСТ ПРОЦЕССА.
-
Дескриптор процесса содержит информацию, необходимую ядру в течение всего жизненного цикла процесса (не важно, в памяти он сейчас или выгружен из нее).
Дескрипторы объединяются в ТАБЛИЦУ ПРОЦЕССОВ, которая хранится в ядре. На основании информации из таблицы процессов осуществляется планирование и синхронизация процессов.
-
Контекст процесса содержит более объемную и не такую важную информацию: содержимое регистров, указатели на открытые файлы и тд и тп.Контекст не хранится в области ядра, а выгружается на диск при необходимости (транзитный).
Состояния потока
ОС осуществляет планирование потоков в соответствии с их состоянием
Поток может находиться в одном из 3 основных состояний (есть еще и промежуточные)
-
Выполнение (поток юзает процессор) -
Готовность (поток мог бы выполняться, но проц занят) -
Ожидание или блокировка (потоку что-то надо: ждет данные, операцию ввода вывода или еще чего);
Переход из одного состояния в другое осуществляется в соотсветствии с алгоритмом планирования конкретной ОС.