ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 18.06.2021
Просмотров: 5419
Скачиваний: 6
В распределенных системах, состоящих из нескольких процессоров, каждый из которых имеет собственную оперативную память, блокирующие переменные, семафоры, сигналы и другие аналогичные средства, основанные на разделяемой памяти, оказываются непригодными. В таких системах синхронизация может быть реализована только посредством обмена сообщениями.
Выводы
Мультипрограммирование, или многозадачность (multitasking), — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ.
Мультипрограммирование применяется для повышения эффективности вычислительной системы, которая может пониматься как:
общая пропускная способность вычислительной системы;
удобство работы пользователей, например возможность интерактивной работы для нескольких пользователей или возможность одновременной работы одного пользователя с несколькими приложениями на одной машине;
реактивность системы — то есть способность системы выдерживать заранее заданные (возможно,, очень короткие) интервалы времени между запуском программы и получением результата.
В зависимости от выбранного критерия эффективности ОС делятся на системы пакетной обработки, системы разделения времени и системы реального времени.
Мультипроцессорная обработка — это способ организации вычислительного процесса в системах с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы.
Основной задачей мультипрограммной операционной системы является распределение ресурсов между процессами и потоками — двумя базовыми единицами работы ОС.
В операционных системах, в которых существуют как процессы, так и потоки, процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного — процессорного времени. Процессорное время распределяется ОС между другими единицами работы — потоками, представляющими собой последовательности команд.
Потоки возникли в операционных системах как средство распараллеливания вычислений, облегчающее работу программиста. В ОС, не поддерживающей потоков, процесс всегда состоит из одного потока, а программисту приходится самостоятельно решать задачу синхронизации нескольких параллельных ветвей программы.
Операционная система для реализации мультипрограммирования выполняет планирование и диспетчеризацию потоков (в ОС, не поддерживающих потоков, — диспетчеризацию процессов). Планирование включает определение момента времени для смены текущего потока, а также выбор нового потока для выполнения. Диспетчеризация заключается в реализации найденного в результате планирования решения, то есть в переключении процессора с одного потока на другой.
Планирование может выполняться динамически, когда решения принимаются во время работы системы на основе анализа текущей ситуации, или статически, если потоки запускаются на выполнение на основании заранее разработанного расписания. Первый способ характерен для универсальных ОС, а второй — для специализированных ОС, например ОС реального времени.
Динамический планировщик ОС может реализовывать различные алгоритмы планирования, которые делятся на такие крупные классы, как вытесняющие и невытесняющие алгоритмы, алгоритмы квантования и приоритетные алгоритмы. Используемый алгоритм планирования зависит от назначения ОС. Применяются также смешанные алгоритмы, объединяющие достоинства нескольких классов.
При применении вытесняющих алгоритмов планирования ОС получает полный контроль над вычислительным процессом, а при применении невытесняющих алгоритмов решения принимаются децентрализованно: активный поток определяет момент смены потоков, а ОС выбирает новый поток для выполнения.
Система прерываний позволяет ОС реагировать на внешние события, происходящие асинхронно вычислительному процессу: сигналы готовности устройств ввода-вывода, аварийные сигналы аппаратуры вычислительной системы и т. п.
В зависимости от источника прерывания делятся на три больших класса:
внешние прерывания, связанные с сигналами от внешних устройств;
внутренние прерывания, возникающие в результате ошибок вычислений;
программные прерывания, представляющие собой удобный способ вызова процедур операционной системы.
Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами операционной системы.
Существуют два основных способа выполнения прерывания: векторный (vectored), когда в процессор передается номер вызываемой процедуры обработки прерывания, и опрашиваемый (polled), когда процессор вынужден последовательно опрашивать потенциальные источники запроса прерывания.
Для упорядочивания процессов обработки прерываний все источники прерываний распределяются по нескольким приоритетным уровням, а роль арбитра выполняет диспетчер прерываний ОС.
Системные вызовы, с помощью которых приложения получают обслуживание со стороны ОС, реализуются на основе механизма программных прерываний. Системные вызовы могут выполняться синхронно, когда поток приостанавливается до завершения системного вызова, или асинхронно, когда поток продолжает работу параллельно с системной процедурой, реализующей вызов.
Для синхронизации процессов и потоков, решающих общие задачи и совместно использующих ресурсы, в операционных системах существуют специальные средства: критические секции, семафоры, мьютексы, события, таймеры. Отсутствие синхронизации может приводить к таким нежелательным последствиям, как гонки и тупики.
Задачи и упражнения
1. Поясните употребление терминов «программа», «процесс», «задача», «поток», «нить».
2. В чем состоит принципиальное отличие состояний «ожидания» и «готовности» потока, ведь и в том и в другом он ожидает некоторого события?
3. Мультипрограммные операционные системы принято разделять на системы реального времени, системы разделения времени, системы пакетной обработки. С другой стороны, алгоритмы планирования могут быть основаны на квантовании, относительных приоритетах, абсолютных приоритетах. Предложите для каждого из перечисленных типов ОС наиболее подходящий, по вашему мнению, тип алгоритма планирования.
4. В какой очереди (ожидающих или готовых) скапливается большее число процессов:
A) в интерактивных системах разделения времени;
B) в системах пакетной обработки, решающих «счетные» задачи.
5. Известно, что программа А выполняется в монопольном режиме за 10 минут, а программа В — за 20 минут, то есть при последовательном выполнении они требуют 30 минут. Если Т — время выполнения обеих этих задач в режиме мультипрограммирования, то какое из неравенств, приведенных ниже, справедливо?
А) Т<10;
В) 10<Т<20;
С) 20<Т<30;
D) Т>30.
6. Может ли процесс в мультипрограммном режиме выполняться быстрее, чем в монопольном?
7. Чем объясняется потенциально более высокая надежность операционных систем, в которых реализована вытесняющая многозадачность?
8. В каких ОС реализована невытесняющая многозадачность? А вытесняющая многозадачность?
9. При невытесняющем планировании необходимо, чтобы во всех выполняющихся программах были предусмотрены кодовые последовательности, которые передают управление ОС. Эти точки возврата управления прикладной программист должен определить заранее еще до выполнения программы. Можно ли сказать, что в этом случае мы имеем дело со статическим планированием?
10. Приведите пример алгоритма планирования, в результате работы которого процесс, располагая всеми необходимыми ресурсами, может бесконечно долго находиться в системе, не имея возможности завершиться.
11. Могут ли быть применены сразу все перечисленные характеристики к одному алгоритму планирования потоков?
А) вытесняющий, с абсолютными динамическими приоритетами;
В) невытесняющий, с абсолютными фиксированными приоритетами;
С) невытесняющий, с относительными динамическими приоритетами;
D) вытесняющий, с абсолютными фиксированными приоритетами, основанный на квантовании с динамически изменяющейся длиной кванта;
Е) невытесняющий, основанный на квантовании с фиксированной длиной кванта.
12. Для тех вариантов, которые вы считаете возможными, опишите более подробно алгоритм планирования.
13. Являются ли синонимами термины «планирование процессов» w. «диспетчеризация процессов»?
14. Можно ли задачу планирования процессов целиком возложить на приложения?
15. Приведите пример задачи, при программировании которой использование механизма потоков может привести к существенному повышению скорости ее выполнения.
16. Возможно ли существование асимметричной мультипроцессорной ОС для компьютера с симметричной мультипроцессорной архитектурой?
17. Сравните два варианта организации мультипроцессорной обработки. В первом случае процесс (поток), начав выполняться на каком-либо процессоре, при каждой следующей активизации будет назначаться планировщиком на этот же процессор. Во втором варианте процесс (поток) каждый раз, в общем случае, выполняется на произвольно выбранном свободном процессоре. Какой вариант эффективнее в отношении времени выполнения отдельного приложения? В отношении суммарной производительности компьютера?
18. Представьте себе ОС, разработанную для компьютера, в котором отсутствует система прерываний. Какой алгоритм планирования процессов может быть реализован в такой ОС?
19. Охарактеризуйте алгоритмы планирования, реализованные в операционных системах, используя следующие характеристики: вытесняющий/невытесняющий, приоритеты относительные/абсолютные, динамические/фиксированные, кванты фиксированные/динамические, процессы жесткого/мягкого реального времени:
A) Windows NT;
В) Net Ware;
С) OS/2.
20. Какие события вызывают перепланирование процессов (потоков)?
21. Поясните разницу между программными и аппаратными прерываниями.
22. Что такое вектор прерываний?
23. Какой тип системы прерываний — векторный или опрашиваемый — реализован в процессоре Pentium?
24. Всегда ли прерывание вызывает перепланировку процессов?
25. Опишите механизм обработки прерываний в Windows NT.
26. Какими средствами синхронизации процессов располагает современная ОС?
27. Зачем в системе команд многих компьютеров предусмотрена единая, неделимая команда анализа и присвоения значения логической переменной, хотя эти же действия могут быть выполнены с помощью двух соответствующих отдельных команд, также обычно присутствующих в системе команд?
28. Представим себе двух студентов, которым нужно поработать с одной и той же книгой, имеющейся в библиотеке в единственном экземпляре. Они одновременно пришли в библиотеку, но один из них сначала пошел в читальный зал и, заняв единственное свободное место, отправился в книжное хранилище, а другой — наоборот, начал с того, что получил книгу, а потом пошел в читальный зал искать место. В результате ни один из них не может выполнить работу, так как для этого им не хватает необходимого ресурса. Можно ли считать, что в данном случае произошла взаимная блокировка, или, другими словами, клинч?
Управление памятью
Функции ОС по управлению памятью
Алгоритмы распределения памяти
Распределение памяти фиксированными разделами
Распределение памяти динамическими разделами
Сегментно-страничное распределение
Иерархия запоминающих устройств
Способы отображения основной памяти на кэш
Схемы выполнения запросов в системах с кэш-памятью
Функции ОС по управлению памятью
Под памятью (memory) здесь подразумевается оперативная память компьютера. В отличие от памяти жесткого диска, которую называют внешней памятью (storage), оперативной памяти для сохранения информации требуется постоянное электропитание.
Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Особая роль памяти объясняется тем, что процессор может выполнять инструкции протравы только в том случае, если они находятся в памяти. Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
В ранних ОС управление памятью сводилось просто к загрузке программы и ее данных из некоторого внешнего накопителя (перфоленты, магнитной ленты или магнитного диска) в память. С появлением мультипрограммирования перед ОС были поставлены новые задачи, связанные с распределением имеющейся памяти между несколькими одновременно выполняющимися программами.
Функциями ОС по управлению памятью в мультипрограммной системе являются:
отслеживание свободной и занятой памяти;
выделение памяти процессам и освобождение памяти по завершении процессов;
вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
настройка адресов программы на конкретную область физической памяти.
Помимо первоначального выделения памяти процессам при их создании ОС должна также заниматься динамическим распределением памяти, то есть выполнять запросы приложений на выделение им дополнительной памяти во время выполнения. После того как приложение перестает нуждаться в дополнительной памяти, оно может возвратить ее системе. Выделение памяти случайной длины в случайные моменты времени из общего пула памяти приводит к фрагментации и, вследствие этого, к неэффективному ее использованию. Дефрагментация памяти тоже является функцией операционной системы.
Во время работы операционной системы ей часто приходится создавать новые служебные информационные структуры, такие как описатели процессов и потоков, различные таблицы распределения ресурсов, буферы, используемые процессами для обмена данными, синхронизирующие объекты и т. п. Все эти системные объекты требуют памяти»» В некоторых ОС заранее (во время установки) резервируется некоторый фиксированный объем памяти для системных нужд. В других же ОС используется более гибкий подход, при котором память для системных целей выделяется динамически. В таком случае разные подсистемы ОС при создании своих таблиц, объектов, структур и т. п. обращаются к подсистеме управления памятью с запросами.