Александр Кручинин - Операционные системы

Тут можно читать онлайн Александр Кручинин - Операционные системы - бесплатно ознакомительный отрывок. Жанр: comp_osnet, издательство Литагент БИБКОМ, год 2009. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Операционные системы
  • Автор:
  • Жанр:
  • Издательство:
    Литагент БИБКОМ
  • Год:
    2009
  • Город:
    Оренбург
  • ISBN:
    нет данных
  • Рейтинг:
    2.17/5. Голосов: 61
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 40
    • 1
    • 2
    • 3
    • 4
    • 5

Александр Кручинин - Операционные системы краткое содержание

Операционные системы - описание и краткое содержание, автор Александр Кручинин, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Данное пособие содержит курс лекций по дисциплине «Операционные системы». Предназначено для студентов вузов, обучающихся по направлению «Информатика и вычислительная техника» специальности 230101 «Вычислительные машины, комплексы, системы и сети».

Операционные системы - читать онлайн бесплатно ознакомительный отрывок

Операционные системы - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Александр Кручинин
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

• два процесса не должны одновременно находиться в критических областях;

• в программе не должно быть предположений о скорости и количестве процессоров;

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

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

Рисунок 13 Взаимное исключение с использованием критических областей В - фото 15

Рисунок 13 – Взаимное исключение с использованием критических областей

В абстрактном виде требуемое поведение процессов представлено на рисунке 13. Процесс А попадает в критическую область в момент времени T 1 . Чуть позже, в момент времени T 2 , процесс Б пытается попасть в критическую область, но ему это не удается, поскольку в критической области уже находится процесс А , а два процесса не должны одновременно находиться в критических областях. Поэтому процесс Б временно приостанавливается, до наступления момента времени T 3 , когда процесс А выходит из критической области. В момент времени T 4 процесс Б также покидает критическую область, и происходит возвращение в исходное состояние, когда ни одного процесса в критической области не было.

2.3.1 Взаимное исключение с активным ожиданием

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

1 Запрещение прерывания

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

2 Переменные блокировки

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

3 Строгое чередование

Третий метод проиллюстрирован на листинге 1.

Листинг 1 Решение проблемы критической области методом строгого чередования - фото 16

Листинг 1 – Решение проблемы критической области методом строгого чередования

Целая переменная turn , изначально равная 0, отслеживает, чья очередь входить в критическую область. Здесь для того, чтобы 0-ой процесс вошел в область, turn должна быть равна 0, а 1-ой – turn равна 1.

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

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

4 Алгоритм Петерсона

В 1981 году датский математик Петерсон разработал простой алгоритм взаимного исключения, представленный на листинге 2 [17].

Листинг 2 Решение Петерсона для взаимного исключения Перед тем как войти в - фото 17

Листинг 2 – Решение Петерсона для взаимного исключения

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

Исходно оба процесса находятся вне критических областей. Процесс 0 вызывает enter_region , задает элементы массива и устанавливает переменную turn равной 0. Поскольку процесс 1 не заинтересован в попадании в критическую область, процедура возвращается. Теперь, если процесс 1 вызовет enter_region , ему придется подождать, пока interested[0] примет значение FALSE, а это произойдет только в тот момент, когда процесс 0 вызовет процедуру leave_region , чтобы покинуть критическую область.

Если оба процесса вызвали enter_region практически одновременно, то оба сохранят свои номера в turn . Сохранится номер того процесса, который был вторым, а предыдущий номер будет утерян. Предположим, что вторым был процесс 1, так что значение turn равно 1. Когда оба процесса дойдут до оператора while, процесс 0 войдет в критическую область, а процесс 1 останется в цикле и будет ждать, пока процесс 0 выйдет из критической области.

5 Команда TSL

Это решение требует участия аппаратного обеспечения. Многие компьютеры имеют команду: TSL RX, LOCK.

(Test and Set Lock – проверить и заблокировать), которая действует следующим образом. В регистр RX считывается содержимое слова памяти LOCK , а в ячейке памяти LOCK сохраняется некоторое ненулевое значение. Операция считывания слова неделима. Процессор, выполняющий команду TSL, блокирует шину памяти, чтобы остальные процессоры, если они есть, не могли обратиться к памяти.

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

Листинг 3 Вход и выход из критической области с помощью команды TSL Прежде - фото 18

Листинг 3 – Вход и выход из критической области с помощью команды TSL

Прежде чем попасть в критическую область, процесс вызывает процедуру enter_region , которая выполняет активное ожидание вплоть до снятия блокировки, затем она устанавливает блокировку и возвращается. По выходе из критической области процесс вызывает процедуру leave_region , помещающую 0 в переменную LOCK . Как и во всех остальных решениях проблемы критической области, для корректной работы процесс должен вызывать эти процедуры своевременно, в противном случае взаимное исключение не удастся.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Александр Кручинин читать все книги автора по порядку

Александр Кручинин - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Операционные системы отзывы


Отзывы читателей о книге Операционные системы, автор: Александр Кручинин. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x