Модель процесса в операционной системе. Блок управления процессом, его структура и назначение. Механизм управления процессами с помощью прерываний

Модель процесса

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

В состоянии исполнения происходит непосредственное выполнение программного кода процесса. Выйти из состояния выполнения процесс может по трем причинам:

операционная система прекращает его деятельность;

он не может продолжать свою работу, пока не произойдет некоторое событие, и операционная система переводит его в состояние ожидание;

в результате возникновения прерывания в вычислительной системе (например, прерывания от таймера по истечении предусмотренного времени выполнения) его возвращают в состояние готовность.

Модель должна описывать поведение процессов не только во время их существования, но и при появлении процесса в системе и его исчезновении. Для полноты картины вводится еще два состояния процессов: рождение и закончил исполнение

Блок управления процессом (РСВ - process control block) - это объект, который определяет процесс для операционной системы и является структурой данных, сосредотачивающей всю ключевую информацию о процессе:

  • текущее состояние процесса;
  • уникальный идентификатор процесса;
  • приоритет процесса;
  • указатели памяти процесса;
  • указатели выделенных процессу ресурсов;

· область сохранения регистров

Прерывание прерывает «нормальную» работу системы и переводит процессор на выполнение другого потока команд с последующим возвращением к исходному процессу. Механизм реализации прерываний в чём-то схож с процессом вызова процедур, но отличается тем, что:

  1. переключение по команде перехода (вызов процедуры) предусмотрен в коде приложения;
  2. прерывание может произойти в произвольный момент времени и от одного из нескольких возможных источников;

Классы прерываний (в зависимости от источника):

1) внешние (аппаратные): возникают в результате действия пользователей или поступления сигналов от аппаратуры (н-р, завершение операции ввода/вывода). Система после обработки прерывания восстанавливает процесс с того места, на котором он был прерван;

2) внутренние (исключения): происходят синхронно с выполнением программы при появлении аварийной ситуации в ходе исполнения некоторой инструкции (деление на ноль и т.д.);

3) программные: не являются в полном смысле прерываниями; возникают при выполнении особых команд процессора, которые инициируют прерывания;

Двухуровневая схема управления процессами в мультипрограммной ОС. Управление на основе схемы компиляции и интерпретации.

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

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

Двухуровневое планирование обладает тремя преимуществами

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

§ Во-вторых, двухуровневое планирование по возможности использует преимущество родственности кэша.

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

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

Интерпретатор должен быть способен определить эффект выполнения каждой конструкции языка программирования. Как пример того, как интерпретатор выполняет свою задачу, рассмотрим интерпретацию присваивания x: = x +1. Интерпретатор должен хранить таблицу всех используемых переменных и связанных с ними значений. Он вычисляет новое значение x, добавляя 1 к старому значению, хранящемуся в таблице, а затем выполняет присваивание, заменяя старое значение x значением вычисленного выражения.

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

В дополнительном упражнении для небольшого языка потребуется, применяя эти идеи, написать компилятор и интерпретатор.

Если рассматривать язык программирования как машинный код для абстрактной машины, можно сказать, что интерпретатор – это программа, моделирующая вычисление на этой машине. Машинная память в этом случае также абстрактна и представляет структуры данных в виде таблиц интерпретатора "переменные – значения".


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: