Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Realtime_2.doc
Скачиваний:
221
Добавлен:
14.02.2015
Размер:
611.33 Кб
Скачать
      1. Процессы и потоки

В первых версиях MS-DOSпользователи могли запускать одновременно не более одной программы. Им приходилось ждать, пока она закончит работу, и затем запускать другую. Под Windows,однако, пользователи могут одновременно запускать несколько программ или даже несколько копий одной программы. Отсюда видна одна тонкость, важная для данной главы: в чем различие между программой и процессом?Программа (program) —это статическая последовательность команд, тогда какпроцесс (process) —это программа и системные ресурсы, необходимые для ее работы.

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

В общем случае ОС содержат блок кода, управляющий созданием и удалением процессов, а также отношениями между ними. Этот код называется структурой процессов (process structure)и реализовандиспетчером процессов (process manager).Его основная задача - предоставить набор базовых сервисов процесса, который подсистемы среды могли бы использовать для эмуляции своих собственных уникальных структур процессов. Цель такого подхода — обеспечить в Windows NTнесколько сред ОС, работающих в пользовательском режиме.

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

        1. Что такое процесс?

На самом высоком уровне абстракции процесс состоит из:

  • исполняемой программы, которая определяет начальный код и данные;

  • закрытого адресного пространства (address space),т. е. набора адресов виртуальной памяти, который процесс может использовать;

  • системных ресурсов, таких как семафоры, коммуникационные порта и файлы, выделяемых ОС процессу во время выполнения программы.

        1. Что такое поток?

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

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