Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Принцип работы. Рабочая программа по дисциплине «Операционные системы и среды» предназначена для подготовки студентов по специальностям: 230105.51 Программное обеспечение

Читайте также:
  1. D. Требования к структуре и оформлению курсовой работы.
  2. E. Порядок защиты курсовой работы.
  3. I ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ
  4. I Принцип работы клавиатур
  5. I. ОБЩИЕ ПОЛОЖЕНИЯ ПО ВЫПОЛНЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ
  6. I. Общие рекомендациик написанию курсовой работы
  7. I. Основные задачи и направления работы библиотеки
  8. I. ОСНОВНЫЕ ПОЛОЖЕНИЯ. РУКОВОДСТВО ПОДГОТОВКОЙ И НАПИСАНИЕМ КУРСОВОЙ РАБОТЫ
  9. I. Теоретическая часть лабораторной работы
  10. II. ВЫБОР ТЕМЫ КУРСОВОЙ РАБОТЫ. ПОДБОР И ОЗНАКОМЛЕНИЕ С ЛИТЕРАТУРОЙ ПО ВЫБРАННОЙ ТЕМЕ

 

Рабочая программа по дисциплине «Операционные системы и среды» предназначена для подготовки студентов по специальностям: 230105.51 Программное обеспечение вычислительной техники и автоматизированных систем и 080802.51 П рикладная информатика (по отраслям).

Она составлена в соответствии с примерной программой учебной дисциплины «Операционные системы и среды», одобренной Учебно-методическим советом по группе специальностей 2200 Информатика и вычислительная техника.

Структура рабочей программы соответствует предъявляемым требованиям.

В программе четко выделены разделы и темы, подробно рассмотрено содержание каждой темы. Материал изложен логично и последовательно.

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

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

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

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

Рабочая программа по дисциплине «Операционные системы и среды», составленная преподавателем КГПК Добряковой Т. В. рекомендуется для использования в учебном процессе в средних профессиональных учебных заведениях.

 

 

Председатель кафедры «Информатика и ВТ» Р.В. Болдырев

 

Принцип работы

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

4. Алгоритм Деккера - первое известное корректное решение проблемы взаимного исключения в конкурентном программировании. Эдсгер Дейкстра ссылается на голландского математика Т. Деккера как на автора данного алгоритма в своей работе о межпроцессном взаимодействии[1]. Он позволяет двум потокам выполнения совместно использовать неразделяемый ресурс без возникновения конфликтов, используя только общую память для коммуникации.

Если два процесса пытаются перейти в критическую секцию одновременно, алгоритм позволит это только одному из них, основываясь на том, чья в этот момент очередь. Если один процесс уже вошёл в критическую секцию, другой будет ждать, пока первый покинет её. Это реализуется при помощи использования двух флагов (индикаторов "намерения" войти в критическую секцию) и переменной turn (показывающей, очередь какого из процессов наступила).

5. Test-and-set простая неразрывная (атомарная) процессорная инструкция, которая копирует значение переменной в регистр, и устанавливает некое новое значение. Во время исполнения данной инструкции процессор не может прервать её выполнение и переключится на выполнение другого потока. Если используется многопроцессорная архитектура, то пока один процессор выполняет эту инструкцию с ячейкой памяти, то другие процессоры не могу получить доступ к этой ячейке, может достигаться путем кратковременного блокирования шины памяти. Она считывает содержимое слова памяти lock в регистр, а по адресу памяти, отведенному для lock, записывает ненулевое значение. При этом гарантируется неделимость операций чтения слова и сохранение в нем нового значения — никакой другой процесс не может получить доступ к слову в памяти, пока команда не завершит свою работу. Центральный процессор, выполняющий команду TSL, блокирует шину памяти, запрещая другим центральным процессорам доступ к памяти до тех пор, пока не будет выполнена эта команда. Альтернативой команде TSL служит команда XCHG, осуществляющая атомарный обмен содержимого двух областей памяти, например регистра и слова памяти. Команда XCHG используется для низкоуровневой синхронизации всеми центральными процессорами семейства Intel х86.

6. Семафор Дейкстры представляет собой целочисленную переменную, с которой ассоциирована очередь ожидающих нитей. Пытаясь пройти через сема-Фор, нить пытается вычесть из значения переменной 1. Если значение переменной больше или равно 1, нить проходит сквозь семафор успешно (семафор открыт). Если переменная равна нулю (семафор закрыт), нить останавливается и ставится в очередь.

Закрытие семафора соответствует захвату объекта или ресурса, доступ к кото-Рому контролируется этим семафором. Если объект захвачен, остальные нити вынуждены ждать его освобождения. Закончив работу с объектом (выйдя из критической секции), нить увеличивает значение семафора на единицу, открывая его. При этом первая из стоявших в очереди нитей активизируется и вычитает из значения семафора единицу, снова закрывая семафор. Если же очередь была пуста, то ничего не происходит, просто семафор остается открытым. Тогда первая нить, подошедшая к семафору, успешно проГцет через него.

7. Активное ожидание. Постоянная проверка значения переменной в ожидании некоторого значения называется активным ожиданием. Этого способа следует избегать, поскольку он является бесцельной тратой процессорного времени. Активное ожидание используется только тогда, когда есть уверенность в небольшом сроке ожидания. Блокировка, использующая активное ожидание называется спин-блокировкой. Вместо циклов ожидания применяются примитивы межпроцессного взаимодействия, которые блокируют процессы в случае запрета на вход в критическую область. Одной из простейших является пара примитивов sleep и wakeup. Примитив sleep – системный запрос, в результате которого вызывающий процесс блокируется, пока его не запустит другой процесс. У запроса wakeup есть один параметр – процесс, который следует запустить. Также возможно наличие одного параметра у обоих запросов – адреса ячейки памяти, используемой для согласования запросов ожидания и запуска.

Два процесса совместно используют буфер ограниченного размера. Один из них, производитель, помещает данные в буфер, а потребитель считывает их оттуда.

8. Два процесса совместно используют буфер ограниченного размера. Один из них, производитель, помещает данные в буфер, а потребитель считывает их оттуда. Трудности начинаются в тот момент, когда производитель хочет поместить в буфер очередную порцию данных и обнаруживает, что буфер полон. Для производителя решением является ожидание, пока потребитель полностью или частично не очистит буфер. Аналогично, если потребитель хочет забрать данные из буфера, а буфер пуст, потребитель уходит в состояние ожидания и выходит из него, как только производитель положит что-нибудь в буфер и разбудит его. Если максимальное число элементов, хранящихся в буфере, равно N, программа производителя должна проверить, не равно ли N значение count прежде, чем поместить в буфер следующую порцию данных. Если значение count равно N, то производитель уходит в состояние ожидания; в противном случае производитель помещает данные в буфер и увеличивает значение count.

Код программы потребителя прост: сначала проверить, не равно ли значение count нулю. Если равно, то уйти в состояние ожидания; иначе забрать порцию данных из буфера и уменьшить значение count.

9. Наиболее простым случаем семафора является двоичный семафор. Начальное значение флаговой переменной такого семафора равно 1, и вообще она может принимать только значения 1 и 0. Двоичный семафор соответствует случаю,когда с разделяемым ресурсом в каждый момент времени может работать толькоодна программа.

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

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

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

13. Барьеры исполнения. Барьер использования (степень важности – 0,28) – это следствие оторванности описания программных интерфейсов и типов данных от собственно интерфейсов и типов данных. Да и кроме того, следствие невразумительности, нечеткости собственно описаний.Барьер понимания (степень важности – 0,29) возникает из-за огромного отрыва между программой – последовательностью воспринимаемых человеком символов – и программами времени компиляции и исполнения. К слову, многие специалисты склонны считать, что попытки решить эту проблему «в лоб», например максимально сблизив все три фазы существования программы, до сих пор к успехам не приводили. В качестве примера можно использовать замечательную во всех отношениях систему программирования Forth, в которой язык вынуждает программиста держать «в голове» среду времени исполнения программы (если быть точным, стеки Forth-системы).Последний барьер – информационный. Он связан с неочевидностью и сложностью механизмов получения информации о внутреннем поведении программы времени исполнения, с отсутствием четко определенных способов проверки гипотез программиста о внутреннем поведении программы во время исполнения.

14. Взаимная блокировка. Deadlock. Другое название: Тупик. Ситуация в многозадачной системе, при которой несколько процессов находятся в состоянии бесконечного ожидания ресурсов, захваченных самими этими процессами. Приведем пример. Допустим в системе существуют две задачи с низким (А) и высоким (Б) приоритетом, которые используют два ресурса - X и Y. В момент времени T1 задача (А) блокирует ресурс X. Затем в момент времени T2 задачу (А) вытесняет более приоритетная задача (Б), которая в момент времени T3 блокирует ресурс Y. Если задача (Б) попытается заблокировать ресурс X (T4) не освободив ресурс Y, то она будет переведена в состояние ожидания, а выполнение задачи (А) будет продолжено. Если в момент времени T5 задача (А) попытается заблокировать ресурс Y, не освободив X, возникнет состояние взаимной блокировки - ни одна из задач (А) и (Б) не сможет получить управление.

15. Графы. Объявим два множества:

·

·

Ресурсный граф – это направленный двудольный граф с непересекающимся множеством ресурсов.

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

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

 

- дуга запроса, стрелка направлена от процесса к ресурсу, то есть процесс запрашивает одну единицу ресурса.

Наоборот, дуга от ресурса к процессу - дуга назначения, значит процессу выделена одна единица ресурса.

- дуга от расходуемого ресурса – дуга производителя. Обозначает, что процесс является производителем ресурса.

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

16.Атака Циклическое ожидание можно устранить несколькими способами. Один из них: просто следовать правилу, гласящему, что процессу дано право только на один ресурс в конкретный момент времени. Если нужен второй ресурс, процесс обязан освободить первый. Но подобное ограничение неприемлемо для процесса, копирующего огромный файл с магнитной ленты на принтер. Потому другой способ уклонения от циклического ожидания заключается в общей нумерации всех ресурсов, тогда действует следующее правило: процессы могут запрашивать ресурс, когда хотят этого, но все запросы должны быть сделаны в соответствии с нумерацией ресурсов.

17. Избежание взаимоблокировки. Рассматривая обнаружения взаимоблокировок, мы неявно предполагаем, что когда процесс запрашивает ресурсы, он требует их все сразу. Однако в большинстве систем ресурсы запрашиваются поочередно, по одному. Избежание взаимоблокировки возможно при аккуратном предоставлении ресурсов. Существует алгоритм, который всегда может избегать ситуацию взаимоблокировки, мы можем избежать тупиков, но только если заранее будет доступна определенная информация. Теперь вернемся к примеру, показанному на рис. 6.10. Текущее состояние безопасно. Предположим, что процесс В теперь сделал запрос на принтер. Этот запрос может быть удовлетворен, поскольку получающееся в результате состояние по-прежнему безопасно (процесс D может завершить свою работу, затем это же может сделать процесс Л или процесс?, а затем и все остальные).

Представим теперь, что после выделения процессу В одного из двух оставшихся принтеров затребует последний принтер. Удовлетворение этого запроса уменьшит значение вектора доступных ресурсов до (1 0 0 0), что приведет к взаимоблокировке. Совершенно ясно, что запрос процесса? должен быть на некоторое время отклонен.

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

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

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

1. Стратегии выборки:

а) стратегии выборки по запросу (по требованию);

б) стратегии упреждающей выборки.

2. Стратегии размещения.

3. стратегии замещения.

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




Дата добавления: 2014-12-19; просмотров: 24 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав