![](/user_photo/2706_HbeT2.jpg)
- •Адресация памяти в защищенном режиме.
- •Привилегии и защита памяти защищенного режима
- •Сегментно-страничная адресация памяти
- •Вызов процедур и задач
- •Прямой вызов подпроцедур
- •Вызов задач (многозадачность)
- •Обработка прерываний в защищенном режиме
- •Кэширование в м/п Intel
- •История ос
- •Функции ос
- •Классификация ос
- •Мультипрограммирование и мультипроцессирование
- •Структуры ос
- •Средство межпроцессорных взаимодействий ipc
- •Очередь
- •Средства синхронизации
- •Планирование и диспетчеризация потоков(процессов)
- •Алгоритмы планирования для систем разделения:
- •Приоритетное планирование:
- •3. Системы реального времени.
- •Алгоритмы замещения страниц
- •Учет свободного и занятого пространства памяти.
- •Системы управления ввода-вывода.
- •Отказоустойчивые системы хранения
Мультипрограммирование и мультипроцессирование
Мультипрограммирование – одновременное выполнение нескольких процессов на вычислительной машине с одним процессором. В этом случае распараллеливание процессов осуществляется за счет того, что пока для одного процесса выполняется операция ввода-вывода, другой процесс использует время ЦП.
Мультипроцессирование – одновременное выполнение нескольких процессов на вычислительной машине, имеющих несколько процессоров; если количество одновременно выполняемых процессов не превышает количества процессоров, то все процессы будут реально выполняться по времени, каждый на своем процессоре. Если больше, то на некоторых процессорах будет выполняться мультипрограммирование. (рис)
При рассмотрении вопросов мультипроцессирования часто используют такие термины, как симметричный и ассиметричный мультипроцесс (применительно к аппаратуре и к организации вычислительного процесса). Симметричная мультипроцессорная архитектура представляет из себя мультипроцессорную систему с несколькими одинаковыми м/п. Обычно такие м/п организованы в одном корпусе. В случае ассиметричной мультипроцессорной архитектуры вычислительная система содержит несколько различных процессоров, выполняющих различные функции. В таких системах 1 из процессоров управляет работой остальных и называется ведущим, все остальные – ведомыми.
При симметричной организации вычислительного процесса модули ОС могут выполняться на любом из процессоров. (рис) При ассиметричной организации вычислительного процесса модули могут выполняться только на 1м или на нескольких определенных процессорах. При ассиметричной архитектуре возможно только ассиметричная организация вычислительного процесса, а при симметричной архитектуре – как симметричная, так и ассиметричная организация вычислительного процесса.
Структуры ос
За 10летия развития ОС наибольшую популярность получили следующие структуры:
Монолитные системы
Монолитная система представляет из себя набор модулей, которые в процессе функционирования могут вызывать друг друга. Интерфейс всех модулей строго определен. Монолитные системы строятся путем компоновки входящих в них модулей в 1 или несколько исполняемых файлов. Например MS-DOS представляет собой 2 выполняемых монолитных файла: IO.com, DOS.com. 1й определяет в себе модули физических операций ввода-вывода, а 2й объединяет логические функции ввода-вывода, те функции работы на уровне файлов. Несмотря на то, что монолитные системы представляют из себя просто набор модулей, эти модули все же несколько структурированы. Например, все модули MS-DOS структурированы в следующую структуру: (рис)
Системные сервисы реализуют функции, вызываемые пользователем (считать сектор диска, записать), а системные утилиты представляют из себя модули, реализующие элементарные операции, используемые системными сервисами.
Вызов функции в MS-DOS выполняется следующим образом:
- в регистр AL записывается код (номер) вызываемой функции
- в другие регистры заносятся параметры передаваемые этой функцией
- после этого вызывается программа прерывания Int 21h
- у этого прерывания управление получает главная процедура – она анализирует регистр AL и вызывает соответствующую функцию или системный сервис, передавая ей параметры указанные в регистрах.
В некоторых других монолитных системах параметры могут передаваться не через регистры, а через стек. В остальном принцип такой же.
Достоинства монолитной системы: простота реализации
Недостатки: сложность модификации (все модули связаны – придется заново производить перекомпоновку системы), очень сложная реализация контроля доступа (защиты)
Многоуровневая система
В многоуровневых системах все модули ОС сгруппированы в несколько иерархических уровней, причем модули более высоких уровней могут вызывать модули более низких уровней только по строго определенным правилам. Нижележащие уровни считаются более привилегированными, а вышележащие – менее.
1я многоуровневая система была разработана в 1968г и называлась THE. В этой системе было реализовано 6 уровней:
5) системный оператор
4) прикладные процессы
3) управление вводом-выводом
2) консоль
1) управление памятью
0) управление процессами
На самом низком привилегированном уровне выполнялось управление процессами и обработка прерываний. На 1м более высоком уровне для процессов выделялась память, на 2м уровне обеспечивался доступ к терминалу, 3й уровень управлял операциями ввода-вывода, 4й – выполнением прикладных программ, 5й обеспечивал управление системой. Все эти 6 уровней ОС были реализованы программно, поэтому не обеспечивали полную защиту уровней друг от друга. А в MULTICS и Unix уровни реализованы программно-аппаратно, поэтому там защита и управление доступом хорошо развиты.
Системы виртуальных машин
1я машина была разработана IBM VM/370 (рис)
На аппаратуре работает управляющая программа СР, выполняющая действия:
выполнение операций ввода-вывода на устройства
обработка прерываний
моделирование нескольких виртуальных машин, являющихся точной копией реальной аппаратуры
периодическое выделение виртуальным машинам квантов времени ЦП, при этом сама СР работает в привилегированном режиме (может выполнять все операции), а виртуальные машины работают в пользовательском режиме. На каждой виртуальной машине работает либо пользовательская (однозадачная) ???, либо более мощная.
Как только ОС, работающая на виртуальной машине, попытается выполнить операцию ввода-вывода или какую-либо другую привилегированную операцию, то произойдет прерывание по защите (т к они работают в пользовательском режиме). СР перехватит прерывание, определит, что нужно сделать, выполнит требуемую операцию и возвратит результат виртуальной машине.
Несколько другой подход будет применен Intel в своих м/п. м/п Intel начиная с 80386 поддерживают режим так называемого 8086. Это означает, что они могут создавать в защищенном режиме несколько параллельно работающих виртуальных машин, моделирующих м/п 8086.
Системы с экзоядром
Эти системы являются частным случаем виртуальных машин, в которых все физические ресурсы вычислительной системы частями закрепляются за разными виртуальными машинами. (рис)
Это позволяет еще больше функций перевести из привилегированного режима в пользовательский. Реализация становится намного сложнее, следовательно системы с экзоядром особого распространения не получили.
Система «клиент-сервер»
В системах «клиент-сервер» большинство выполняемых процессов как пользовательских, так и системных подразделяется на 2 группы – клиенты и серверы. Серверы – процессы, которые предоставляют в использование некоторые ресурсы или выполняют запрашиваемые клиентами функции, а клиенты – процессы, которые либо потребляют ресурсы, либо посылают запросы к серверу. И клиенты, и серверы выполняются в пользовательском режиме в соответствующих адресных пространствах, и поэтому защищены друг от друга. (рис)
Клиенты не взаимодействует непосредственно с серверами, а посылают свои запросы ОС, а ОС перенаправляет запрос соответствующему серверу. Выполнив запрос, сервер пересылает ответ также ОС, а она перенаправляет его к соответствующему клиенту. За счет того, что часть модулей по работе с ресурсами перенесены на более высокий уровень, ядро стало более компактным. Поэтому в системах «клиент-сервер» его часто называют микроядром. Повышается надежность. Еще одним преимуществом системы «клиент-сервер» является возможность легкого переноса этой архитектура на сетевую среду (может выполняться на разных компьютерах сети, также использует соответствующие вызовы ядра).
Процессы и потоки
Любая операционная система должна учитывать используемые ресурсы и проделанную работу. Особенно это касается мультипрограммных вычислительных систем. В качестве единицы работы практически во всех ОС используется процесс. Процесс- это загруженная в память и выполняющаяся программа. Одна и та же программа может одновременно выполняться в рамках нескольких процессов. Каждый процесс при создании получает своё собственное адресное пространство. Ему выделяются такие ресурсы как файлы, устройства, различные системные объекты. Каждому процессу присваивается уникальный идентификатор, называемый process ID. С помощью этого идентификатора система различает процессы. С каждым процессом связываются различные управляющие структуры, с помощью которых ОС учитывает состояние самого процесса и связанные с ним устройства. Совокупность всех управляющих структур, связанных с процессом, называют контекстом процесса. Когда ОС переходит с выполнения одного процесса на другой, она сохраняет контекст текущего процесса и восстанавливает контекст следующего нового процесса. Поэтому очень часто переключение процессора с выполнения одного процесса на другой называют переключением контекста. Переключение контекста может быть 2х типов:
Принудительное переключение контекста, при котором ОС сама прекращает выполнение процесса
Добровольное переключение контекста. Происходит когда выполняющийся процесс сам перешёл в ожидание.
Во многих ОС существуют специальные команды и функции, с помощью которых либо пользователи, либо сами процессоры во время своей работы могут запускать новые процессы. В некоторых ОС, например Unix, между запущенными таким образом процессами устанавливаются родственные отношения, при этом запускающий процесс принято считать родительским процессом, а запускаемый -дочерним. Родители могут поправлять выполнением своих дочерних процессов. А дочерние процессы могут наследовать от своих родителей такие ресурсы, как открытые файлы и устройства. В каждый конкретный момент времени процесс может находиться в следующем состоянии.
В состоянии ГОТОВ, объект полностью готов к выполнению и ждёт, когда ОС ему выделит время процессора. В качестве претендента на следующее выполнение ОС просматривает только готовые процессы. Сразу после его создания процесс…….
После того как процесс выбран для выполнения (на ЦП), его контекст восстанавливается, и он переводится в состояние АКТИВЕН. В активном состоянии процесс находится до тех пор, пока не произойдёт оно из следующих событий:
Истёк квант времени, выделенный процессу для выполнения. ОС приостанавливает выполнение процесса, его контекст сохраняется и он переводится назад в очередь, а на его место запускается следующий процесс.
За время работы процесса в очереди готовых появился процесс с более высоким приоритетом. ОС приостановит активный процесс, сохранит его контекст и опять по переходу 2 переведёт его в состояние ГОТОВ, а на место него запустит более приоритетный процесс.
За время своего выполнения, активный процесс перешел в ожидание какого-либо ресурса или события. В этом случае его контекст также сохраняется и он по переходу 3 переводится в состояние БЛОКИРОВАН, а на место него запускается следующий процесс. Переход 3- добровольное переключение контекста (процесса).
Во время своего выполнения процесс завершился (5й переход). После этого процесс уничтожается. В состоянии БЛОКИРОВАН процесс находится до тех пор, пока не освободится ожидаемый ресурс или не произойдёт ожидаемое им событие. В этом случае процесс из состояния БЛОКИРОВАН переводится в состояние ГОТОВ и снова может конкурировать с другими процессами за время ЦП.
Мы рассмотрели выполнение процессов в многозадачной системе, когда время центрального процессора выделяется процессом. Многие современные ОС являются многопоточными. То есть позволяют распараллеливать вычисления внутри одного процесса путём параллельного выполнения различных функций процесса. Каждая такая параллельно-выполняемая функция процесса называется потоком. Таким образом в многопоточных системах каждый процесс может содержать несколько потоков и время центрального процессора в многопоточных системах уже выделяется не процессом, а потоком, независимо от того, к какому процессу они принадлежат. Все потоки одного процесса работают в едином адресном пространстве процессора, и им доступны все ресурсы процесса, независимо от того, какой поток эти ресурсы создал. В многопоточной системе схема для состояния процесса полностью соответствует состоянию потока. В многопоточных системах как правило с потоками связывают уровень их приоритета и в соответствии с этим приоритетом помещают в очередь готовых. ОС выбирает на выполнение самый высокоприоритетный готовый поток. В многопоточных системах есть 2 способа реализации параллельных вычислений:
Либо организовать b и с как отдельные процессы, в каждом из которых будет по одному потоку, либо организовать их в один процесс, но каждой ветке b и c организовать свой поток.
С точки зрения времени выполнения и минимизации используемых ресурсов лучше 2й вариант- реализация параллельных ветвей алгоритма, потому что потоки работают в едином адресном пространстве и переключение между ними не вызывает переключение контекста процесса. Но параллельные ветки алгоритма никак не защищены друг от друга. Если параллельные ветки необходимо защищать друг от друга, то их лучше организовывать в вид отдельных процессов, тогда каждая ветка будет работать в своём адресом пространстве.