- •Лекция №2. Операционные системы реального времени
- •Историческая справка
- •Настоящее время
- •Общие сведения об ос
- •Модель клиент-сервер
- •Объектная модель
- •Симметричная мультипроцессорная обработка
- •Процессы и потоки
- •Что такое процесс?
- •Что такое поток?
- •Многозадачность и мультипроцессорная обработка
- •Многопоточность
- •Облегченные потоки
- •Планирование:
- •Синхронизация
- •Немного теории
- •Необходимые требования к операционной системе реального времени для обеспечения предсказуемости
Процессы и потоки
В первых версиях MS-DOSпользователи могли запускать одновременно не более одной программы. Им приходилось ждать, пока она закончит работу, и затем запускать другую. Под Windows,однако, пользователи могут одновременно запускать несколько программ или даже несколько копий одной программы. Отсюда видна одна тонкость, важная для данной главы: в чем различие между программой и процессом?Программа (program) —это статическая последовательность команд, тогда какпроцесс (process) —это программа и системные ресурсы, необходимые для ее работы.
Процесс является субъектом владения ресурсами и единицей работы. Он служит ОС средством организации многих задач, которые она должна выполнять. ОС выделяет каждому процессу порцию системных ресурсов и гарантирует, что программа каждого процесса будет направляться на исполнение в определенном порядке и своевременно.
В общем случае ОС содержат блок кода, управляющий созданием и удалением процессов, а также отношениями между ними. Этот код называется структурой процессов (process structure)и реализовандиспетчером процессов (process manager).Его основная задача - предоставить набор базовых сервисов процесса, который подсистемы среды могли бы использовать для эмуляции своих собственных уникальных структур процессов. Цель такого подхода — обеспечить в Windows NTнесколько сред ОС, работающих в пользовательском режиме.
В разных ОС процессы реализованы по-разному. Процессы различаются своим представлением (структурами данных), способами именования и защиты и отношениями между собой.
Что такое процесс?
На самом высоком уровне абстракции процесс состоит из:
исполняемой программы, которая определяет начальный код и данные;
закрытого адресного пространства (address space),т. е. набора адресов виртуальной памяти, который процесс может использовать;
системных ресурсов, таких как семафоры, коммуникационные порта и файлы, выделяемых ОС процессу во время выполнения программы.
Что такое поток?
Если тема потоков управления Вам знакома, то Вы, вероятно, встречали разные определения этого термина, в том числе "единица исполнения", "отдельный счетчик команд" или "подлежащая планированию сущность внутри процесса". Хотя каждое из этих определений по сути своей правильно, ни одно из них не является удовлетворительным. Что в точности подразумевается под "единицей исполнения"? Просто нечто, исполняемое процессором?
Поток выполнения – это элемент кода программы, выполняемый последовательно. В то время как процесс — это логическое представление работы, которую должна выполнить ОС, поток отображает одну из, возможно, многих необходимых подзадач. Предположим, к примеру, что пользователь запустил в оконном режиме приложение для работы с базой данных. ОС представляет этот вызов приложения как один процесс. Теперь предположим, что пользователь запросил генерацию отчета по данным из базы и сохранение этого отчета в файле — понятно, что это длительная операция. Пока идет выполнение операции, пользователь может ввести новый запрос к базе данных. ОС представляет каждый из запросов — генерацию отчета и новый запрос к базе — как отдельные потоки внутри процесса приложения для работы с базой данных. Эти потоки могут выполняться процессором независимо друг от друга, что позволяет проводить обе операции в одно и то же время (параллельно). У ОС есть удобный и эффективный способ предоставления потоков для достижения такой параллельности.