- •Введение
- •Эволюция ос
- •Первый период (1945 -1955)
- •Второй период (1955 - 1965)
- •Третий период (1965 - 1980)
- •Четвертый период (1980 - настоящее время)
- •Классификация ос
- •Особенности алгоритмов управления ресурсами
- •Особенности аппаратных платформ
- •Особенности областей использования
- •Особенности методов построения
- •Сетевые операционные системы
- •Структура сетевой операционной системы
- •Одноранговые сетевые ос и ос с выделенными серверами
- •Ос для рабочих групп и ос для сетей масштаба предприятия
- •Управление локальными ресурсами
- •Управление процессами
- •Состояние процессов
- •Контекст и дескриптор процесса
- •Алгоритмы планирования процессов
- •Вытесняющие и невытесняющие алгоритмы планирования
- •Средства синхронизации и взаимодействия процессов
- •Права доступа к файлу
- •Управление распределенными ресурсами
- •Базовые примитивы передачи сообщений в распределенных системах
- •Способы адресации
- •Блокирующие и неблокирующие примитивы
- •Буферизуемые и небуферизуемые примитивы
- •Надежные и ненадежные примитивы
- •Вызов удаленных процедур (rpc - Remote Procedure Call)
- •Концепция удаленного вызова процедур
- •Этапы выполнения rpc
- •Семантика rpc в случае отказов
- •Синхронизация в распределенных системах
- •Алгоритм синхронизации логических часов
- •Алгоритмы взаимного исключения
- •Централизованный алгоритм
- •Распределенный алгоритм
- •Алгоритм Token Ring
- •Сравним эти три алгоритма взаимного исключения.
- •Неделимые транзакции
- •Рассмотрим некоторые подходы к реализации механизма транзакций.
- •Процессы и нити в распределенных системах
- •Различные способы организации вычислительного процесса с использованием нитей
- •Вопросы реализации нитей
Рассмотрим некоторые подходы к реализации механизма транзакций.
В соответствии с первым подходом, когда процесс начинает транзакцию, то онработает в индивидуальном рабочем пространстве, содержащем все файлы и другие объекты, к которым он имеет доступ.Пока транзакция не зафиксируетсяили не прервется, все изменения данных происходят в этом рабочем пространстве, а не в "реальном", под которым мы понимаем обычную файловую систему.
Главная проблема этого подхода состоит в больших накладных расходах по копированию большого объема данных в индивидуальное рабочее пространство, хотя и имеются несколько приемов уменьшения этих расходов.
Второй общий подходк реализации механизма транзакций называетсясписком намерений. Этот метод заключается в том, чтомодифицируются сами файлы, а не их копии,ноперед изменением любого блока производится запись в специальный файл - журнал регистрации, где отмечается,какая транзакция делает изменения, какой файл и блок изменяется и каковы старое и новое значения изменяемого блока. Только после успешной записи в журнал регистрации делаются изменения в исходном файле.
Если транзакция фиксируется, то и об этом делается запись в журнал регистрации, но старые значения измененных данных сохраняются.
Если транзакция прерывается, то информация журнала регистрации используется для приведения файла в исходное состояние, и это действие называется откатом.
Рис. 3.8. Двухфазный протокол фиксации транзакции
Процессы и нити в распределенных системах
Нити
Нить–часть процесса, подзадача способная выполняться квазипараллельно с другими подзадачами (нитями) того же процесса.
механизм многонитевой обработки (multithreading). "нить" (thread), а понятие "процесс" в значительной степени меняет смысл.
Мультипрограммирование теперь реализуется на уровне нитей,изадача, оформленная в виде нескольких нитей в рамках одного процесса, может быть выполнена быстрееза счетпсевдопараллельного (или параллельного в мультипроцессорной системе)выполнения ее отдельных частей.
Особенно эффективно можно использовать многонитевость для выполнения распределенных приложений, например, многонитевый сервер может параллельно выполнять запросы сразу нескольких клиентов.
Нити, относящиеся к одному процессу, не настолько изолированы друг от друга, как процессы в традиционной многозадачной системе, между ними легко организовать тесное взаимодействие.
все нити одного процесса всегда принадлежат одному приложению, поэтому программист, пишущий это приложение, может заранее продумать работу множества нитей процесса таким образом, чтобы они могли взаимодействовать, а не бороться за ресурсы.
В традиционных ОС понятие "нить" тождественно понятию "процесс". В действительности часто бывает желательно иметь несколько нитей, разделяющих единое адресное пространство, но выполняющихся квазипараллельно, благодаря чему нити становятся подобными процессам (за исключением разделяемого адресного пространства).
Нити иногда называют облегченными процессами или мини-процессами.
Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и стек.
Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние.
Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ.
Пока одна нить заблокирована, другая нить того же процесса может выполняться.
Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования.
Итак, нити имеют собственные:
программный счетчик,
стек,
регистры,
нити-потомки,
состояние.
Нити разделяют:
адресное пространство,
глобальные переменные,
открытые файлы,
таймеры,
семафоры,
статистическую информацию.
Многонитевая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой.