Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Процессы и потоки windows и unix.docx
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
171 Кб
Скачать
      1. Завершение процессов

В операционных системах семейства Windows завершение процесса производится функцией ExitProcess. Причинами завершения процесса может быть завершение работы программы, использующей данный процесс, обнаружение процессом фатальной ошибки, ошибка, вызванная самими процессом, связанная с ошибкой в программе и выполнение процессом системного вызова, приказывающего операционной системе завершить некоторые другие процессы. В Windows при завершении процесса не завершаются все созданные им процессы. [4, С. 118]

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

Для порождения и завершения потоков в операционных системах семейства Windows используются функции CreateThread и ExitThread. При создании процесса Windows по умолчанию создается один поток, который называется главным (основным) потоком приложения. Так как всегда потоков больше, чем физических процессоров для их выполнения, то потоки выполняются не одновременно, а по очереди. [2]

Основные составляющие потока в исполнительной системе NT:

  • Уникальный идентификатор, называемый идентификатором клиента

  • Содержимое набора регистров, отражающее состояние процессора

  • Два стека: один используется потоком при работе в пользовательском режиме, а другой – в режиме ядра

  • Собственная область памяти, предназначенная для использования подсистемами, библиотеками периода выполнения и динамически подключаемыми библиотеками (DLL). [3]

Фактически, в операционных системах Windows выполняются не процессы, а потоки, поэтому взаимодействие потоков равноценно взаимодействию процессов с тем условием, что потоки одного процесса выполняются только в адресном пространстве этого процесса. [2]

    1. Процессы и потоки в ос unix

      1. Порождение процессов

В UNIX для создания нового процесса используется системный вызов fork. Этот вызов создает точную копию вызывающего процесса. После выполнения системного вызова fork два процесса, родительский и дочерний, имеют единый образ памяти, единые строки описания конфигурации и одни и те же открытые файлы. Смысл этого двухступенчатого процесса заключается в том, чтобы позволить дочернему процессу управлять его файловыми дескрипторами после разветвления. [4, С. 117]

      1. Взаимодействие процессов

Поскольку OC UNIX является многозадачной ОС, то необходимо параллельное выполнение нескольких процессов. При этом актуальной является проблема управления взаимодействием процессов. Для управления взаимодействием процессов в фазе "пользователь", OC UNIX предоставляет средства внешней синхронизации и коммуникации процессов.

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

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

  • Ограничения по объему файла обмена.

  • Ограничение прав доступа к файлу обмена.

  • Отсутствие синхронизации при обмене.

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

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