Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСИ.docx
Скачиваний:
14
Добавлен:
29.10.2018
Размер:
434.23 Кб
Скачать

4. Роль прерываний при мультипрограммировании.

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

Механизм прерывания реализуется аппаратно-программными средствами системы. Сами прерывания в зависимости от источника подразделяются на:

  • Аппаратные

    • Внешние (инициируются периферией)асинхронны по отношению к основному потоку событий (вызываются между выполнениями двух соседних инструкций)

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

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

Неотъемлемым элементом обработки прерываний является приоритет прерываний:

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

5. Понятие процесса и потока. Создание процессов и потоков. Управляющие структуры процессов и потоков

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

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

Поток отличается от дочернего процесса тем, что является полностью зависимым от родительского процесса и работает в адресном пространстве этого процесса, поэтому будет завершен по завершению процесса. Дочерний процесс практически не зависит от родительского, для него системой отдельно выделяется адресное пространство, и он на равных правах с родительским «конкурирует» за процессорное время. + У потока невозможно изменить права доступа.

Потоки, как и процессы, могут порождать дочерние потоки, правда только внутри своего процесса.

Существуют две основные категории реализации потоков:

  • Пользовательские потоки – создаются с помощью спец. библиотек.

  • Потоки уровня ядра – потоки, реализуемые через системные вызовы и работающие в пространстве ядра.

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

Создание процесса состоит из нескольких этапов:

  • присвоения идентификатора процессу;

  • включения его в список активных процессов, известных системе;

  • формирования блока управления процессом;

  • выделения процессу начальных ресурсов.

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

int pthread_create(pthread_t *tid,pthred_attr_t *attr, void*(*function)(void*), void* arg)

В изначальном состоянии (или процесс, если речь идет о системе, в которой понятие «поток» не поддерживается) находится в приостановленном состоянии.

Управляющие структуры процессов и потоков:

  • Идентификатор процесса (Process Identifier, PID)

  • Тип (или класс) процесса, который определяет для супервизора некоторые правила предоставления ресурсов.

  • Приоритет процесса, в соответствии с которым супервизор предоставляет ресурсы.

  • Переменная состояния, которая определяет в каком состоянии находится процесс (готов, ожидает, выполняется, и тп)

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

  • Информация о ресурсах, которыми владеет и/или имеет право пользоваться процесс. (указатели на открытые файлы, информация о незавершенных операциях ввода-вывода и др.)

  • Место (или его адрес) для организации общения с другими процессами

  • Параметры времени запуска (моменты времени, когда процесс должен активизироваться, и периодичность этой процедуры)

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