Объектно-ориентированный подход в проектировании ОС.
Лекция №4
Используется для добавления многих расширений к ядру ОС.
Одним из примеров Объектных систем является программное обеспечение промежуточного уровня (ППО, middleware).
COM (OLE/ActiveX)
DCOM/COM+
Apple OpenDoc
CORBA – OO технология, ориентированная на различных архитектурных производителей (интероперабельность).
Машина VM/370 разработана в центре IBM, (Кембридж, Массачусетс).
Проект ОС основан на следующих наблюдениях:
Система с разделением времени обеспечивает:
· Многозадачность
· Расширенную машину
Идея заключалась в полном разделении этих функций.
Многозадачность обеспечивает VM/370, а расширенную машину может обеспечить любая другая однопользовательская ОС.
Монитор ВМ работает с оборудованием и обеспечивает многозадачность. Но представленная ВМ не является расширенной, т.к. любая ВМ идентична оборудованию, на каждой может работать любая ОС, которая работает на аппаратуре.
Используется в технологии виртуализации в серверах.
|
|
Экзоядро развивает идею виртуальной машины, но обеспечивает каждого пользователя копией реального компьютера с подмножеством ресурсов. Например, виртуальным машинам отводится блоки на дисках от 0 до 1023, от 1024 до 2047 и т. д.
Преимущества: можно минимизировать реализацию уровня отображения и реализует многозадачность с меньшими затратами.
Управление локальными ресурсами. Управление процессами
Процесс – абстракция, описывающая выполняющуюся последовательно программу.
Процесс представляет собой единицу работы и заявку на потребление системных ресурсов.
Состояние процессов:
- Выполнение – активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно исполнения процессором.
- Ожидание – пассивное состояние процесса, процесс заблокирован, не может выполниться по своим внутренним причинам (завершение операции ввода/вывода, получение сообщение от другого процесса, освобождение ресурсов).
- Готовность – пассивное состояние процесса, процесс заблокирован в связи с внешними обстоятельствами. Процесс готов выполниться, но процессор занят выполнением другого процесса.
Эти состояния присущи любому процессу.
Как только процесс создаётся, он переходит в режим «Готов». Процессы группируются в очередь, откуда они переходят в состояние «Выполнение», если исчерпан определённый лимит. При истечении лимита (например, процессорного времени) процесс снова переходит в состояние «Готов», или в состояние «Ожидания».
Если процессу потребовалось ожидать некоторого события, то он переходит в состояние «Ожидания», т.е. он попадает в очередь, связанную с определённым событием (например, в очередь ожидающих завершения события ввода/вывода).
|
|
После наступления соответствующего события, процесс переходит из состояния ожидания в состояние готовности (переходит из очереди «Ожидание» в очередь «готовых» процессов).
Контекст и дескриптор процесса
На протяжении своего существования, выполнение процесса может быть многократно прервано и продолжено. Для того, чтобы возобновить выполнение процесса необходимо восстановить состояние его операционной среды (состояние регистров, состояние программного счётчика, состояние режима работы процессора, информацию о незавершенных операциях ввода/вывода, указатели на открытые файлы и т.д.). Эта информация называется контекстом процесса.
Однако, для реализации планировщика процессов требуется дополнительная информация (идентификатор процесса, данные о степени привилегированности процесса, данные о нахождении процесса в системных очередях планировщика, указатель на контекст). Эта информация называется дескриптором процесса.
Программный код начнет выполняться, когда для него ОС-ой будет процесс.
Создание процесса состоит из таких этапов:
1. Создать информационные структуры, описывающие процесс.
2. Включить дескриптор процесса в очередь готовых процессов.
3. Загрузить кодовый сегмент процесса в ОП или в область свопинга.
WIN32.API скрывает от пользователя реальные системные вызовы (для совместимости с разными версиями Windows).
WIN32.API – CreateProcess() - NT CreateProcess() - NTCreateThread ()
Алгоритм планирования решает следующие задачи: определение момента времени смены выполняемого процесса, выбор процесса из очереди готовых процессов.
Переключение контекстов между старым и новым процессом (аппаратно-зависимая задача).
Множество алгоритмов планирования можно разделить на 2 группы:
1. Алгоритмы, основанные на квантовании.
2. Алгоритмы, основанные на приоритетах.
Кванты, выделяемые процессу, могут быть одинаковыми для всех процессов, а могут и не быть. Могут быть как фиксированной величиной, так и изменяться в течение жизни процесса. Процессы, не использующие кванты времени могут получить, а могут и не получить компенсацию при последующем обслуживании. Возможны разные дисциплины организации очередей готовых процессов (FIFO; LIFO).
Приоритет – число, характеризующее степень привилегированности. Чем выше приоритет, тем меньше времени процесс проводит в очередях. Приоритет может назначаться директивно или вычисляться ОС по определенным правилам. Приоритет может быть постоянный или изменяющийся в течение жизни процесса. Может быть абсолютным или относительным. При относительном приоритете активный процесс не прекращает своего выполнения при появлении более приоритетного процесса, в противном случае – абсолютный приоритет.
Невытесняющая многозадачность: способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он по собственной инициативе не отдаст управление ОС (планировщику, чтобы он выбрал следующий процесс для исполнения).
Вытесняющая многозадачность – способ планирования, при котором решение о переключении на новый процесс, принимает планировщик ОС, а не активная задача.
Распределение функций между планировщиком и приложением в невытесняющей многозадачности может давать определенный преимущества: возможность самостоятельно проектировать алгоритм планирования, решается проблема совместно используемых ресурсов, более высокая скорость переключения с задачи на задачу.
Нити
Это потоки, облегченные процессы. В некоторых ОС, например, Windows NT, управление единицами работы и управление ресурсами разделены между собой (NTCreateProcess(), NTCreateThread()).
|
|
Нити – те сущности, которые отвечают за управление единицами работы.
Планировщик ОС (NT) “видит” только нити и ничего не знает о процессах. Нити имеют собственные:
· программные счетчики;
· регистры;
· стеки;
· состояния.
Нити разделяют адресное пространство, глобальные переменные, открытые файлы, статическую информацию.