Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС в формате doc / 2008-03-21-01-52-Елена- заочники.doc
Скачиваний:
203
Добавлен:
01.05.2014
Размер:
325.12 Кб
Скачать

Рассмотрим некоторые подходы к реализации механизма транзакций.

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

Главная проблема этого подхода состоит в больших накладных расходах по копированию большого объема данных в индивидуальное рабочее пространство, хотя и имеются несколько приемов уменьшения этих расходов.

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

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

  • Если транзакция прерывается, то информация журнала регистрации используется для приведения файла в исходное состояние, и это действие называется откатом.

Рис. 3.8. Двухфазный протокол фиксации транзакции

    1. Процессы и нити в распределенных системах

        1. Нити

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

механизм многонитевой обработки (multithreading). "нить" (thread), а понятие "процесс" в значительной степени меняет смысл.

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

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

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

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

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

Нити иногда называют облегченными процессами или мини-процессами.

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

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

  • Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ.

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

  • Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования.

Итак, нити имеют собственные:

  • программный счетчик,

  • стек,

  • регистры,

  • нити-потомки,

  • состояние.

Нити разделяют:

  • адресное пространство,

  • глобальные переменные,

  • открытые файлы,

  • таймеры,

  • семафоры,

  • статистическую информацию.

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