Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1321

.pdf
Скачиваний:
1
Добавлен:
07.01.2021
Размер:
1.06 Mб
Скачать

виртуализации. Виртуализация ресурсов, примеры. Понятие виртуальной машины. Менеджер виртуальных машин. Очередь готовых задач. Приоритеты задач: статические и динамические. Основные алгоритмы планирования задач: алгоритмы, основанные на квантовании (разделения времени), алгоритмы, основанные на приоритетах (невытесняющая и вытесняющая многозадачность), комбинированные алгоритмы. Взаимосвязанные задачи. Способы их коммуникации: сообщения, почтовые ящики. Конкурирующие задачи. Проблемы синхронизации: тупики, инверсия приоритетов, гонки. Понятие критической секции. Способы синхронизации: семафоры, исключающие семафоры (мутексы), мониторы.

Рекомендуемая литература: 6.

Перечень дополнительных ресурсов: 2, 3, 4.

Наименование вида самостоятельной работы: изучение литературы.

Три основных события, приводящие к созданию процессов

(вызов fork (в UNIX) или CreateProcess (вWindows)):

-загрузка системы;

-работающий процесс подает системный вызов на создание процесса;

-запрос пользователя на создание процесса.

Во всех случаях активный текущий процесс посылает системный вызов на создание нового процесса. Создать процесс означает:

-создать описатель процесса;

-загрузить коды и данные исполняемой программы процесса с диска в оперативную память;

-в многопоточной системе для каждого создаваемого процесса создать как минимум один поток выполнения.

При управлении процессами используется два основных типа информационных структур: дескриптор процесса и контекст процесса. Дескриптор процесса содержит такую информацию о процессе, которая необходима ядру в течение всего жизненного цикла процесса независимо от того, находится он в активном или пассивном состоянии, находится ли образ процесса в памяти или выгружен на диск. В дескрипторе прямо или косвенно содержится информация о состоянии процесса, о расположении образа процесса в оперативной памяти и на диске, о значении отдельных составляющих приоритета, глобальном приоритете, об идентификаторе пользователя, создавшего процесс, о родственных процессах и некоторая др. информация.

Контекст процесса содержит менее оперативную, но более

объемную часть информации о процессе, необходимую для

возобновления выполнения процесса с прерванного места: содержимое регистров процессора, коды ошибок выполняемых процессором системных вызовов, таблица открытых файлов, информация о незавершенных операциях ввода/вывода и др.

За время своего существования в системе поток может многократно находиться в одном из трех состояний:

-выполнение – активное состояние, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

-готовность – пассивное состояние, поток заблокирован в связи

свнешними по отношению к нему обстоятельствами; в очередь готовых к выполнению попадает вновь созданный процесс;

-ожидание – пассивное состояние, находясь в котором поток заблокирован по своим внутренним причинам (ждет осуществления некоторого события, например, завершения операции ввода/вывода).

Возможные переходы между состояниями: 1. Поток выбран на выполнение 2. Поток ожидает завершения ввода/вывода

3. Ввод/вывод завершен (событие произошло)

4. Поток вытеснен.

В состоянии выполнения в однопроцессорной системе может находиться не более одного потока, а в каждом из состояний ожидания и готовности – несколько потоков. Эти потоки организуются в очереди.

На протяжении существования процесса выполнение его потоков может быть многократно прервано и продолжено. Переход от одного потока к другому осуществляется в результате планирования и диспетчеризации.

Планирование включает в себя решение двух задач:

-определение момента времени для смены текущего активного потока;

-выбор для выполнения потока из очереди готовых потоков. Планирование может быть динамическим (решения принимаются

во время работы системы на основе анализа текущей ситуации) и статическим (решения приняты заранее, работа по расписанию).

Диспетчеризация заключается в реализации найденного в результате планирования решения, то есть в переключении процессора с одного потока на другой.

Диспетчеризация сводится к следующему:

-сохранение контекста текущего потока, который требуется сменить;

-загрузка контекста нового потока, выбранного в результате

планирования; - запуск нового потока на выполнение.

Ситуации, когда необходимо планирование:

Время, отведенное активной задаче на выполнение, закончилось. Планировщик переводит задачу в состояние готовности и выполняет перепланирование.

Активная задача выполнила системный вызов, связанный с запросом на ввод/вывод или на доступ к ресурсу, который в настоящий момент занят. Планировщик переводит задачу в состояние ожидания и выполняет перепланирование.

Активная задача выполнила системный вызов, связанный с освобождением ресурса. Если есть, то она переводится из состояния ожидания в состояние готовность. Проверяются приоритеты готовых к выполнению задач.

Завершение периферийным устройством операции ввода/вывода переводит соответствующую задачу в очередь готовых и выполняется планирование.

Внутреннее прерывание сигнализирует об ошибке, которая произошла в результате выполнения активной задачи. Планировщик снимает задачу и выполняет перепланирование.

Все существующие алгоритмы планирования можно разделить на два класса:

-невытесняющие алгоритмы основаны на том, что активному потоку позволяется выполняться до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению поток;

-вытесняющие алгоритмы – это такие способы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого потока принимается операционной системой, а не активной задачей.

Выбор алгоритма планирования зависит от типа задач, для решения которых будет использоваться операционная система.

3.3. Взаимодействие и синхронизация процессов и потоков

Вопросы для рассмотрения: Независимые и взаимодействующие вычислительные процессы. Цели и средства синхронизации. Пример необходимости синхронизации. Механизмы синхронизации. Проблемы синхронизации. Механизмы межпроцессного взаимодействия. Взаимосвязанные задачи. Способы их коммуникации: сообщения, почтовые ящики. Конкурирующие задачи. Проблемы

синхронизации: тупики, инверсия приоритетов, гонки. Понятие критической секции. Способы синхронизации: семафоры, исключающие семафоры (мьютексы), мониторы.

Рекомендуемая литература: 5, 6. Перечень дополнительных ресурсов: 3, 4.

Наименование вида самостоятельной работы: изучение литературы.

В мультипрограммных однопроцессорных системах процессы чередуются, обеспечивая эффективное выполнение программ. В многопроцессорных системах возможно не только чередование, но и перекрытие процессов. Обе эти технологии, которые можно рассматривать как примеры параллельных вычислений, порождают одинаковые проблемы. Выполнение процессов и потоков в мультипрограммной среде всегда имеет асинхронный характер – невозможно предсказать относительную скорость выполнения процессов. Момент прерывания потоков, время нахождения их в очередях к разделяемым ресурсам, порядок выбора потоков для выполнения – все эти события являются результатом стечения многих обстоятельств и являются случайными, это справедливо как по отношению к потокам одного процесса, выполняющим общий программный код, так и по отношению к потокам разных процессов, каждый из которых выполняет собственную программу.

Способы взаимодействия процессов (потоков) можно классифицировать по степени осведомленности одного процесса о существовании другого.

Процессы не осведомлены о наличии друг друга (например, процессы разных заданий одного или различных пользователей). Это независимые процессы, не предназначенные для совместной работы. Хотя эти процессы и не работают совместно, ОС должна решать вопросы конкурентного использования ресурсов. Например, два независимых приложения могут затребовать доступ к одному и тому же диску или принтеру. ОС должна регулировать такие обращения.

Процессы косвенно осведомлены о наличии друг друга (например, процессы одного задания). Эти процессы не обязательно должны быть осведомлены о наличии друг друга с точностью до идентификатора процесса, однако они разделяют доступ к некоторому объекту, например, буферу ввода-вывода, файлу или БД. Такие процессы демонстрируют сотрудничество при разделении общего объекта.

Процессы непосредственно осведомлены о наличии друг друга (например, процессы, работающие последовательно или поочередно в

рамках одного задания). Такие процессы способны общаться один с другим с использованием идентификаторов процессов и изначально созданы для совместной работы. Эти процессы также демонстрируют сотрудничество при работе.

Между конкурирующими процессами не происходит никакого обмена информацией. Однако выполнение одного процесса может повлиять на поведение конкурирующего процесса. Это может, например, выразиться в замедлении работы одного процесса, если ОС выделит ресурс другому процессу, поскольку первый процесс будет ждать завершения работы с этим ресурсом. В предельном случае блокированный процесс может никогда не получить доступ к нужному ресурсу и, следовательно, никогда не сможет завершиться.

В случае конкурирующих процессов (потоков) возможно возникновение трех проблем. Первая из них – необходимость взаимных исключений (mutual exclusion). Предположим, что два или большее количество процессов требуют доступ к одному неразделяемому ресурсу, как например принтер. О таком ресурсе будем говорить как о критическом ресурсе, а о части программы, которая его использует, – как о критическом разделе (critical section) программы. Крайне важно, чтобы в критической ситуации в любой момент могла находиться только одна программа. Например, во время печати файла требуется, чтобы отдельный процесс имел полный контроль над принтером, иначе на бумаге можно получить чередование строк двух файлов.

Раздел 4 Управление памятью 4.1. Основные положения об управлении памятью

Вопросы для рассмотрения: Задачи по управлению памятью. Типы адресации. Функции ОС по управлению памятью. Типы адресов: виртуальные и физические. Методы распределения памяти без использования дискового пространства. Мультипрограммирование с фиксированными разделами. Мультипрограммирование с переменными разделами. Фрагментация памяти. Перемещаемые разделы.

Рекомендуемая литература: 5, 6. Перечень дополнительных ресурсов: 3, 4.

Наименование вида самостоятельной работы: изучение литературы.

Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Особая роль памяти объясняется тем, что процессор может выполнять

инструкции протравы только в том случае, если они находятся в памяти. Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.

В ранних ОС управление памятью сводилось просто к загрузке программы и ее данных из некоторого внешнего накопителя (перфоленты, магнитной ленты или магнитного диска) в память. С появлением мультипрограммирования перед ОС были поставлены новые задачи, связанные с распределением имеющейся памяти между несколькими одновременно выполняющимися программами.

Функциями ОС по управлению памятью в мультипрограммной системе являются:

отслеживание свободной и занятой памяти;

выделение памяти процессам и освобождение памяти по завершении процессов;

вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;

настройка адресов программы на конкретную область физической памяти.

Помимо первоначального выделения памяти процессам при их создании ОС должна также заниматься динамическим распределением памяти, то есть выполнять запросы приложений на выделение им дополнительной памяти во время выполнения. После того как приложение перестает нуждаться в дополнительной памяти, оно может возвратить ее системе. Выделение памяти случайной длины в случайные моменты времени из общего пула памяти приводит к фрагментации и, вследствие этого, к неэффективному ее использованию. Дефрагментация памяти тоже является функцией операционной системы.

Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена (метки), виртуальные адреса и физические адреса)

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

Виртуальные адреса, называемые иногда математическими, или логическими адресами, вырабатывает транслятор, переводящий программу на машинный язык. Поскольку во время трансляции в общем случае не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и

командам виртуальные (условные) адреса, обычно считая по

умолчанию, что начальным адресом программы будет нулевой адрес. Физические адреса соответствуют номерам ячеек оперативной

памяти, где в действительности расположены' или будут расположены переменные и команды.

Механизм страничной памяти в большинстве универсальных операционных систем применяется ко всем сегментам пользовательской части виртуального адресного пространства процесса. Исключения могут составлять специализированные ОС, например ОС реального времени, в которых некоторые сегменты жестко фиксируются в оперативной памяти и соответственно никогда не выгружаются на диск — это обеспечивает быструю реакцию определенных приложений на внешние события.

Системная часть виртуальной памяти в ОС любого типа включает область, подвергаемую страничному вытеснению (paged), и область, на которую страничное вытеснение не распространяется (non-paged). В не вытесняемой области размещаются модули ОС, требующие быстрой реакции и/или постоянного присутствия в памяти, например диспетчер потоков или код, который управляет заменой страниц памяти. Остальные модули ОС подвергаются страничному вытеснению, как и пользовательские сегменты.

Простейший способ управления оперативной памятью состоит в том, что память разбивается на несколько областей фиксированной величины, называемых разделами. Такое разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. После этого границы разделов не изменяются.

Такой способ управления памятью применялся в ранних мультипрограммных ОС. Однако и сейчас метод распределения памяти фиксированными разделами находит применение в системах реального времени, в основном благодаря небольшим затратам на реализацию. Детерминированность вычислительного процесса систем реального времени (заранее известен набор выполняемых задач, их требования к памяти, а иногда и моменты запуска) компенсирует недостаточную гибкость данного способа управления памятью.

При динамическом распределении память машины не делится заранее на разделы. Сначала вся память, отводимая для приложений, свободна. Каждому вновь поступающему на выполнение приложению на этапе создания процесса выделяется вся необходимая ему память (если достаточный объем памяти отсутствует, то приложение не принимается на выполнение и процесс для него не создается). После завершения процесса память освобождается, и на это место может быть загружен другой процесс. Таким образом, в произвольный момент времени оперативная память представляет собой случайную

последовательность занятых и свободных участков (разделов) произвольного размера.

4.2. Распределение памяти

Вопросы для рассмотрения: Общие принципы управления памятью в однопрограммных ОС. Особенности организации управления памятью в мультипрограммных ОС. Распределение фиксированными разделами. Распределение динамическими разделами. Распределение перемещаемыми разделами. Сегментное распределение. Страничное распределение. Особенности эффективного использования таблиц страниц. Сегментно-страничное распределение. Методы распределения памяти с использованием дискового пространства. Понятие виртуальной памяти. Страничное распределение. Сегментное распределение. Странично-сегментное распределение. Механизмы реализации виртуальной памяти. Свопинг. Стратегии управления виртуальной памятью. Иерархия запоминающих устройств. Принцип кэширования данных. Кэшпамять. Многопроцессорный режим работы. Совместное использование памяти. Защита памяти.

Рекомендуемая литература: 6. Перечень дополнительных ресурсов: 4.

Наименование вида самостоятельной работы: изучение литературы.

Необходимым условием для того, чтобы программа могла выполняться, является ее нахождение в оперативной памяти. Только в этом случае процессор может извлекать команды из памяти и интерпретировать их, выполняя заданные действия.

Все алгоритмы распределения памяти разделены на два класса: алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не привлекается.

Простейший способ управления оперативной памятью состоит в том, что память разбивается на несколько областей фиксированной величины, называемых разделами. Такое разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. После этого границы разделов не изменяются.

Очередной новый процесс, поступивший на выполнение, помещается либо в общую очередь, либо в очередь к некоторому разделу.

Подсистема управления памятью в этом случае выполняет

следующие задачи:

сравнивает объем памяти, требуемый для вновь поступившего процесса, с размерами свободных разделов и выбирает подходящий раздел;

осуществляет загрузку программы в один из разделов и настройку адресов.

Уже на этапе трансляции разработчик программы может задать раздел, в котором ее следует выполнять. Это позволяет сразу получить машинный код, настроенный на конкретную область памяти.

Достоинство– простота реализации.

Недостаток– жесткость, так как в каждом разделе может выполняться только один процесс и уровень мультипрограммирования заранее ограничен числом разделов.

Метод распределения памяти фиксированными разделами находит применение в системах реального времени, в основном благодаря небольшим затратам на реализацию.

Необходимым условием для того, чтобы программа могла выполняться, является ее нахождение в оперативной памяти. Только в этом случае процессор может извлекать команды из памяти и интерпретировать их, выполняя заданные действия.

Все алгоритмы распределения памяти разделены на два класса: алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не привлекается.

Изначально вся память, отводимая для приложений, свободна. Каждому вновь поступающему на выполнение приложению на этапе создания процесса выделяется вся необходимая ему память (если достаточный объем памяти отсутствует, то приложение не принимается на выполнение и процесс для него не создается). После завершения процесса память освобождается, и на это место может быть загружен другой процесс. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера.

Функции операционной системы, предназначенные для реализации данного метода управления памятью:

1.Ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти.

2.При создании нового процесса – анализ требований к памяти, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения кодов и данных нового процесса. Выбор раздела может осуществляться по разным правилам, например:

«первый попавшийся раздел достаточного размера», «раздел, имеющий наименьший достаточный размер» или «раздел, имеющий наибольший достаточный размер».

3.Загрузка программы в выделенный ей раздел и корректировка таблиц свободных и занятых областей. Данный способ предполагает, что программный код не перемещается во время выполнения, а значит, настройка адресов может быть проведена единовременно во время загрузки.

4.После завершения процесса корректировка таблиц свободных и занятых областей.

Достоинство:по сравнению с методом распределения памяти фиксированными разделами данный метод обладает гораздо большей гибкостью.

Недостаток– фрагментация памяти, т.е. наличие большого числа несмежных участков свободной памяти очень маленького размера (фрагментов), настолько маленького, что ни одна из вновь поступающих программ не может поместиться ни в одном из участков, хотя суммарный объем фрагментов может составить значительную величину, намного превышающую требуемый объем памяти.

Раздел 5 Файловые системы 5.1 Физическая организация жесткого диска

Вопросы для рассмотрения: Устройство жесткого диска. Считывание избыточных данных при обмене с диском. Разбиение диска на разделы. Хранение, запись и чтение данных. Форматирование.

Рекомендуемая литература: 5, 6. Перечень дополнительных ресурсов: 4.

Наименование вида самостоятельной работы изучение литературы.

Основным типом устройств, которые используются в современных вычислительных системах для хранения файлов, являются дисковые накопители. Эти устройства предназначены для считывания и записи данных на жесткие и гибкие магнитные диски. Жесткий диск состоит из одной или нескольких стеклянных или металлических пластин, каждая из которых покрыта с одной или двух сторон магнитным материалом. Таким образом, диск в общем случае состоит из пакета пластин.

На каждой стороне каждой пластины размечены тонкие концентрические кольца – дорожки (англ. traks), на которых хранятся

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]