Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5
.pdfобеспечению могут использоваться только API [6]. Для обеспечения перено-
симости большая часть исполняющей системы рассматривает аппаратное обеспечение в виде следующих уровней (рис.21):
Системные процессы |
|
Сервисы |
|
|
Приложения |
|
|
Подсистемы среды |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Контроллер |
|
|
Репликатор |
|
|
Пользователь- |
|
|
|
POSIX |
|
||||||||||||||||||
|
|
|
|
сервисов |
|
|
|
|
Обработчик |
|
|
ские приложения |
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
WinLogin |
|
|
|
|
извещений |
|
|
|
|
|
|
|
|
|
|
OS/2 |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
IDE Microsoft |
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
Удаленный |
|
|
Visual Studio |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
Диспетчер |
|
|
|
|
|
|
|
|
Win32 |
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
вызов процедур |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
сессий |
|
|
|
|
|
Подсистема |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
Регистратор |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DLL |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
событий |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NTDLL DLL |
|
|
|
|
|
|
|
|
|
|
|
|
|
пользо- |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
вателя |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Режим ядра |
|||
|
Системный |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
поток |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API исполняющей системы |
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
Диспетчер |
|
Средства |
|
Диспет- |
|
|
Диспет- |
|
Монитор |
Диспет- |
Диспе- |
|
||||||||||||||||||
|
|
ввода-вывода |
|
локально- |
|
чер кэша |
|
чер про- |
|
безопасно- |
|
чер вир- |
|
тчер |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
го вызова |
|
|
|
цессов и |
|
сти обра- |
|
туальной |
|
сети |
|
||||||||||||||
|
|
Файловые |
|
|
|
процедур |
|
|
|
|
потоков |
|
щений |
|
|
памяти |
|
|
|
|
|
|
|||||||||||
|
|
|
системы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Управление объектами, библиотека этапа исполнения |
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Драйверы устройств |
|
|
|
|
Микроядро |
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Уровень аппаратных абстракций
Интерфейсы аппаратного обеспечения (шины, устройство ввода-вывода, таймеры, прямой доступ к памяти, контроллер КЭШа и т.п.)
Рис.21. Структурная схема Windows XP
1. Уровень аппаратных абстракций: на нём формируется отображение между общими каналами ОС и ответными сигналами аппаратного обеспече-
ния для конкретной платформыю. Этот уровень отделяет ОС от особенностей аппаратной платформы, благодаря чему системная шина, контроллер прямо-
го доступа в память (ПДП), контроллер прерываний, системные таймеры и память выглядят с точки зрения ядра одинаково. Кроме того, на этом уровне поддерживается симметричная многопроцессорность (SMP).
51
2. Микроядро: в него входят наиболее часто используемые компоненты ОС. Ядро отвечает за распределение ресурсов между процессами, переклю-
чение пототоков и синхронизацию. В отличии от остальной части испол-
няющей системы и процессов, исполняемых на уровне пользователя код микроядра не разделяется на потоки, таким образом, это единственная часть ОС, которая не может быть вытеснена или выгружена на диск.
3. Драйверы устройств: к ним относятся как ФС, так и драйверы аппа-
ратных устройств, которые преобразуют поступающие от пользователя вызо-
вы функций ввода/вывода в запросы для конкретных устройств.
4 .Исполняющая система включает модули, обеспечивающие поддерж-
ку её функций и предоставляющие работающим в пользовательском режиме программам соответствующие API.
Исполняющая система:
Диспетчер ввода/вывода: поддерживает доступность для приложений ввода/вывода, отвечает за координацию работы драйверов устройств, выпол-
няющих дальнейшую обработку и реализует все API I/O ОС с помощью дис-
петчера объектов следит за безопасностью, именованием устройств и ФС.
Диспетчер объектов: создаёт и удаляет объекты и абстрактные типы данных исполняющей системы, а так же уровней или эти объекты и абст-
рактные типы данных используются для предоставления таких ресурсов как процессы, потоки и объекты синхронизации. Он создаёт и обеспечивает вы-
полнение стандартных правил поддержки объектов именования и безопас-
ность, кроме того, он создаёт диспетчер объектов, в котором содержится ин-
формация о правах доступа и указатель на объект.
Монитор безопасности обращений: обеспечивает выполнение правил аудита и прав доступа одними и теми же служебными программами для всех защищённых объектов включая файлы, процессы, адресные пространства и устройства ввода/вывода.
Диспетчер процессов и потоков: создаёт и удаляет объекты, а так же следит за процессами и потоками.
52
Средства локального вызова процедуры: устанавливает взаимосвязь между приложением и исполняющей подсистемой по модели «клиент-
сервер» при распределённой обработке данных.
Диспетчер виртуальной памяти: отображает виртуальные адреса адрес-
ного пространства процессов на физические страницы основной памяти ком-
пьютера и обеспечивает управление ими.
Диспетчер кеша: повышает производительность файлового I/O путём хранения в ОП тех данных с диска, к которым недавно проводилось обращение,
кроме того, он обеспечивает отложенную запись на диск, при которой некото-
рое время информация для обновления дисковыхфайлов хранится в памяти.
Диспетчер окон: создаёт оконный (экранный) интерфейс и управляет графическими устройствами.
5. Пользовательские процессы:
Специальные процессы системной поддержки: к ним относятся слу-
жебные программы, которые не входят в ОС, например, диспетчер сессий и процесс входа в систему.
Сервисные процессы.
Приложения пользователя: Win32, POSIX, Os/2, Win 3.1, MS-DOS.
Подсистемы операционной среды: предоставляют приложениям поль-
зователя сервисы ОС, обеспечивая таким образом среду ОС, поддерживаются указанные выше подсистемы, в каждую из них входят DLL, преобразующие вызовы приложений пользователя в вызовы ОС.
Наиболее важной из подсистем является Win32 – это API, который реа-
лизован для данной ОС (семейство Windows NT), его основные функции:
1.Ввод с клавиатуры и мыши, вывод на печать, динамические библио-
теки (DLL), коммуникации, консоли, операции с буфером обмена, сервисы,
системная информация, управление окнами, реестром, безопасность, время,
графические фильтры, журнал регистра событий, конвейеры и т. д.
2.Структура защитной системы и приложений выполнена в соответст-
вии с вычислительной моделью клиент-сервер. Она позволяет упростить её и
53
повысить надежность, т. к. любой модуль используя систему запускается в виде отдельного процесса которому отводится своя область памяти защи-
щённая от воздействия других моделей. Кроме того клиент не может непо-
средственно обращаться к аппаратному обеспечению или изменять содержи-
мое той области памяти, в которой находится исполняемая система, таким образом, сбой в работе одного из клиентов не приводит к аварийному отказу или повреждению остальной части ОС.
3.Приложение с помощью локальных вызовов представляются обыч-
ными средствами обмена информацией с исполнительной системой. Процесс передачи сообщений скрыт от клиента функциями-заглушками из dll. При вызове API приложения заглушка пересылает переданные при вызове пара-
метры в виде сообщений подсистемы сервера, которые реализуют вызов.
4. Обеспечивает распределённое вычисление ОС. Локальный сервер может передавать сообщения от локального приложения клиента для обра-
ботки или удалённого сервера. Клиенту не нужна информация о том, как об-
рабатывается запрос локально или удалённо, ведь способ обработки может измениться динамически в зависимости от изменчивости конфигурации и за-
груженности системы.
Интегрированная среда разработки (англ. IDE, Integrated development environment — система программных средств) Microsoft Visual Studio ис-
пользуется для разработки приложений для операционной системы Windows. Microsoft Visual Studio — линейка продуктов компании Майкрософт, вклю-
чающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств [1]. Visual Studio включает один или несколько компонентов из следующих: Visual Basic .NET, а до его появле-
ния — Visual Basic; Visual C++ ; Visual C#. Многие варианты поставки также включают Microsoft SQL Server либо Microsoft SQL Server Express
Обычно среда разработки включает в себя текстовый редактор,
компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами
54
управления версиями и разнообразные инструменты для упрощения конст-
руирования графического интерфейса пользователя [7,8]. Многие современ-
ные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-
ориентированной разработке ПО. Хотя и существуют среды разработки,
предназначенные для нескольких языков — такие как Eclipse, NetBeans или
Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования — как например, Visual Basic.
2.3.Процессы и потоки в Windows
Сточки зрения программирования каждый процесс win32/64 включает компоненты (рис. 22):
один или несколько потоков;
виртуальное адресное пространство, отличное от адресных пространств другихпроцессов, за исключением случаев явного разделения памяти;
один или более сегментов кода, включая код DLL;
ПРОЦЕСС
Код программы
Глобальные переменные
Память кучи процесса
Ресурсы процесса:
Открытые файлы, Кучи,…
Блок окружения
Поток 1 |
|
Поток N |
Локальная область |
… |
Локальная область |
памяти потока |
памяти потока |
|
Стек потока |
|
Стек потока |
|
|
|
Рис. 22. Структура процесса и его потоков
55
один илиболее сегментовданных, содержащихглобальные переменные;
строки окружения с информацией о переменных окружениях, таких как текущий путь поиска файла и др.;
память кучи процесса;
ресурсы процесса (открытые дескрипторы, файлы, другие кучи).
Атрибуты процесса и потока в Windows приведены в табл. 2.
Атрибуты процесса и потока в Windows |
Таблица 2 |
|
|
|
|
Процесс |
Поток |
|
Идентификатор процесса - уникальное значе- |
Идентификатор потока - уникальное значе- |
|
ние, идентифицирующее процесс в ОС |
ние, идентифицирующее поток, когда он |
|
|
вызывает сервис. |
|
Дескриптор защиты – описывает, кто создал |
Контекст потока – набор значений регист- |
|
процесс, права доступа и пр. |
ров, которыми определяется состояние вы- |
|
|
полняемого потока. |
|
Базовый приоритет – базовый процесс выпол- |
Динамический приоритет - |
приоритет вы- |
няемого потока |
полняемого потока в данный момент. |
|
|
Базовый приоритет – нижний приоритет ди- |
|
|
намического приоритета потока. |
|
Родственность процессов по умолчанию – за- |
Родственность процессов по потоку – мно- |
|
данный по умолчанию набор процессов, где |
жество процессов, где возможно выполне- |
|
возможно выполнение потоков. |
ние потоков. |
|
Время выполнения – суммарное время, затра- |
Время выполнения потока - совокупное вре- |
|
ченное на выполнение всех потоков в процес- |
мя, затраченное на выполнение потока в |
|
се. |
пользовательском режиме и режиме ядра. |
|
Счётчик ввода/вывода - переменные, в кото- |
Статус извещения (оповещения) – этот флаг, |
|
рые заносятся сведения о количестве и типе |
который указывает, следует ли потоку вы- |
|
операций ввода/вывода, выполненных пото- |
полнять асинхронный вызов процедуры. |
|
ками процесса. |
|
|
Счётчик операций с виртуальной памятью – |
Счётчик приостановок – в нём указывается, |
|
это переменные, в которые заносятся сведения |
сколько раз выполнение потока было приос- |
|
о количестве и типе операций с виртуальной |
тановлено без последующего возобновле- |
|
памятью выполненных потоками процесса. |
ния. |
|
Квоты – максимальное количество страничной |
Маркеры режима анонимного воплощения – |
|
памяти и процессорного времени доступного |
это временный признак доступа. |
|
процессу |
|
|
|
|
|
Порты исключения/отладки – это каналы об- |
Порт завершения – это канал обмена ин- |
|
мена информацией между процессами, в кото- |
формацией между процессами, куда диспет- |
|
рые диспетчер процессов должен отправлять |
чер процессов отправляет |
сообщения при |
сообщения при возникновении исключитель- |
завершении потока. |
|
ных ситуаций одного из потоков процесса. |
|
|
Статус выхода– причины завершения процесса |
Статус выхода– причины завершения потока |
|
|
|
|
56
Все потоки процесса совместно используют код, глобальные перемен-
ные, строки окружения и ресурсы процесса [3]. Каждый поток планируется независимо. Поток включает следующие элементы:
стек вызова процедур, переменных, обработчиков исключений и ав-
томатических данных;
локальная память потока – это массивы указателей, которые дают возможность процессу выделить память для создания собственного уникаль-
ного окружения данных потока;
структура контекста, управляемая ядром, содержащая значение аппа-
ратных регистров.
Некоторые атрибуты потока подобны атрибутам процессов. Значениия таких атрибутов потока извлекаются из значений атрибутов процесса. На-
пример, в многопроцессорной системе родственные процессоры по потоку – это множество процессоров, на которых может выполняться данный поток.
Оно совпадает с множеством процессоров родственных по процессу или яв-
ляется его подмножеством. Информация, содержащаяся в контексте потока,
позволяет ОС приостанавливать и возобновлять потоки [9]. Основные функ-
ции управления процессами и потоками показаны в табл.3.
Сервисы процесса и потока в Windows |
Таблица 3 |
|
|
|
|
Процесс |
Поток |
|
Создание процесса CreateProcess(). |
Создание потока CreateThread(). |
|
Открытие процесса OpenProcess(). |
Открытие потока OpenThread() |
|
Информация по запросу процесса |
Информация по запросу потока |
|
Информация по наладке процесса |
Информация по наладке потока |
|
Текущий процесс GetCurrentProcessID() |
Текущий поток GetCurrentThreadID() |
|
Прекращение процесса ExitProcess() |
Завершение потока ExitThread() |
|
|
Получение контекста |
|
|
Установка контекста |
|
|
Приостановка Delay() |
|
|
Возобновление |
|
|
Извещение потоков |
|
|
Проверка извещения потока |
|
|
Порт регистрации завершения. |
|
57
Основной функцией для управления процессом win32 является функ-
ция CreateProcess(). Она создаёт процесс с одним потоком. Так как процесс требует наличие кода, то в вызове функции CreateProcess() необходимо ука-
зывать имя исполняемого файла программы. Функция имеет 10 параметров и при успешном выполнении возвращает дескрипторы для процесса и для пер-
вичного потока. Дополнительные потоки можно создать функцией
CreateThread(). Для Windows все процессы одинаковы, и она не различает до-
черние и родительские, в отличие от Unix.
Жизненный цикл потока в Windows (рис 23) проходит следующие шесть состояний [3]:
Готовый к выполнению: это поток, который может быть направлен на выполнение, у него есть все необходимые ресурсы кроме процессорного вре-
мени. Диспетчер микроядра отслеживает, все готовые потоки и осуществляет их планирование в соответствии с их приоритетом.
Резервный - это поток, который будет запущен следующим на данном процессоре. Поток находится в этом состоянии до тех пор, пока процессор не освободится. Если приоритет резервного потока достаточно высок, то он мо-
жет вытеснить выполняющийся в данный момент поток, иначе он ждёт, пока не произойдёт блокировка выполняющегося потока или пока не истечёт вы-
деленный ему квант времени.
|
|
|
|
|
|
|
|
|
|
|
Работоспособные состояния |
|||
|
|
|
|
|
|
Резервный (2) |
|
|
|
|||||
|
|
Выбор потока |
|
|
|
|
|
|
Передача |
|||||
|
|
для выполнения |
|
|
|
|
|
|
|
|
управления |
|||
|
|
|
|
|
Вытеснение |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Готовый (1) |
|
|
|
|
Выполняющийся (3) |
|
||||||
|
|
|
Завершение кванта времени |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Завершение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ресурсов |
|
Снятие блокировки, |
|
Блокировка |
|
|
||||||||
достаточно |
|
Ресурсов достаточно |
|
Завершенный (6) |
|
|||||||||
|
|
|
Снятие блокировки |
|
|
приостановка |
|
|||||||
|
Переходное |
, Ожидание (4) |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
||||||||
|
состояние (5) |
|
Ресурсов |
|
|
|
|
|
|
|
||||
|
|
|
недостаточно |
|
|
Неработоспособные состояния |
||||||||
|
|
|
|
|
Рис. 23. Жизненный путь потока в Windows
58
Выполняющийся: как только микроядро переключит поток, резерв-
ный поток перейдёт в состояние выполнения и будет в нём находится, пока не произойдёт одно из событий: поток будет вытеснен более приортетным потоком, если закончится квант времени, будет блокирован или завершён.
Ожидающее: поток входит в состояние ожидания если он блокирован каким-либо событием (например, операцией ввода/вывода); он добровольно ждёт синхронизации; среда подсистемы предписывает потоку, чтобы он сам себя остановил. После удовлетворения условий ожидания, поток переходит в состояние готовности, если все его ресурсы доступны.
Переходное: поток готов к выполнению, но не все ресурсы необходи-
мые ему для работы доступны. При доступности всех ресурсов он переходит в состояние готовности.
Завершающее: завершение потока может быть инициировано самим потоком, другим процессом или может произойти вместе с завершением ро-
дительского процесса.
После завершения необходимых операций освобождения ресурсов по-
ток удаляется из операционной системы.
2.4.Взаимодействие процессов
ВWindows процессы имеют три типа взаимодействия между собой [3].
Они показаны в табл.4.
1) Процессы могут быть осведомлены о наличии друг друга: это неза-
висимые процессы, не предназначенные для совместной работы, например,
многозадачность для конкретных заданий и интерактивная сеть.
2) Процессы косвенно осведомлены о наличии друг друга: они не обя-
зательно могут знать идентификаторы друг друга, однако могут разделять доступ к некоторому объекту (буфер ввода/вывода).
59
3) Процессы непосредственно осведомлены о наличии друг друга: они
обращаются друг к другу по идентификаторам и предназначены для совмест-
ной работы. |
|
|
|
|
Взаимодействие процессов |
Таблица 4. |
|
|
|
|
|
Степень |
Взаимосвязь |
Влияние одного процесса |
Потенциальная про- |
взаимодействия |
на другой |
блема взаимодействия |
|
Не осведомлены |
Конкуренция |
Результаты работы одного про- |
Взаимоисключение, |
|
|
цесса не зависят от действий |
взаимоблокировка, |
|
|
других. Возможно влияние од- |
голодание |
|
|
ного процесса на работу другого |
|
Косвенно |
Сотрудничество |
Результаты работы одного про- |
Взаимоисключение, |
осведомлены |
с использовани- |
цесса могут зависеть от инфор- |
взаимоблокировка, |
|
ем разделения |
мации, полученной от других. |
голодание, |
|
|
Возможно влияние одного про- |
связь данных |
|
|
цесса на работу другого |
|
Непосредствен- |
Сотрудничество |
Результаты работы одного про- |
Взаимоблокировка, |
но осведомлены |
с использовани- |
цесса могут зависеть от инфор- |
голодание |
|
ем связей |
мации, полученной от других. |
|
|
|
Возможно влияние одного про- |
|
|
|
цесса на работу другого |
|
Взаимоисключение (mutual exclusion) – это предоставление процессу не-
которого ресурса в монопольное использование, например, принтер предос-
тавляется файлу для печати, иначе на распечатке будут чередоваться строки различных файлов. Такой ресурс будет называться критическим, а участок программы, который его использует – критической секцией программы.
Взаимоблокировка (deadlock) – пусть в системе 2 процесса П1 и П2 и 2
ресурса Р1 и Р2, и П1 требуется для работы Р1 и Р2 и он уже захватил Р1, а
Р2 недоступен, в тоже время, П2 требуется Р1 и Р2, он захватил Р2, а Р1 не-
доступен, таким образом, процессы оказываются взаимноблокированы.
Голодание - пусть в системе 3 процесса П1, П2 и П3, которые исполь-
зуют ресурс Р, возможна ситуация, когда ресурсом владеет П1, а затем пере-
даёт П3 и возможно ОС будет предоставлять Р так, что П2 не получит его, а
П1 и П3 будут использовать его попеременно, таким образом П2 не получает ресурса, хотя никакой взаимоблокировки нет, т. е. он голодает.
Потоки одного процесса не имеют доступа к адресному пространству другого процесса. Однако существуют механизмы для передачи данных ме-
60