Процессы и потоки в операционной системе

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

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

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

Планирование процессов и потоков

Планирование процессов и потоков включает:

  • Создание-уничтожение процессов
  • Взаимодействие между процессами
  • распределение процессорного времени
  • Обеспечение процессов необходимыми ресурсами (единолично, совместно)
  • Синхронизация (контроль за возникновением «гонок», блокировок)
  • После завершения процесса — «зачистка», т.е. удаление следов пребывания в системе

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

Для взаимодействия, процессы обращаются к ОС, которая предоставляет средства общения (конвейеры, почтовые ящики, разделяемые секции памяти и др.)

Возможность распараллеливания вычислений в рамках процесса на потоки повышает эффективность Операционной системы. Механизм распараллеливания вычислений для одного приложения называется многопоточной обработкой (multithreading). Потоки процесса имеют одно адресное виртуальное пространство. Распараллеливание ускоряет выполнение процесса за счет отсутствия переключения ОС с одного адресного пространства на другое, которое имеет место при выполнении процессов. Программы становятся более логичны. Особый эффект при этом достигается в мультипроцессорных системах.

Примером многопоточной обработки может служить выполнение запросов MS SQL Server

Создание процессов

Создать процесс — это создать описатель процесса (информационная структура, содержащая сведения необходимые для управления этим процессом)

Содержание: идентификатор, адрес исполняемого модуля, приоритет, права доступа и пр.

Примеры описателей для:

  • Windows NT/2000/XP — объект-процесс (object-process)
  • UNIX — дескриптор процесса
  • OS/2 — управляющий блок процесса (PCB -Process Control Block)

Кроме того создать процесс — это включает также следующие действия:

  • Найти программу на диске
  • перераспределить оперативную память
  • выделить память новому процессу
  • переписать программу в выделенную память
  • изменить некоторые параметры программы

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

Создание потоков

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

Поток может породить другой поток — потомок. При завершения потока-родителя используются разные алгоритмы. Асинхронное завершение предполагает продолжение выполнения потоков-потомков после завершения потока-родителя. Синхронное завершение потока-родителя приводит к завершению всех его потомков.

Пример создания потоков в Windows (object Pascal)

T=TThread.Create(false);

Пример удаления потока

T.Suspend; T.Terminate; T.Free;


Помогая проекту BEST-EXAM, вы делаете образование более доступным для каждого человека, внесите и вы свой вклад -
поделитесь этой статьей в социальных сетях!