Программы и процессы

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

Типы процессов

  • системные (являются частью ядра и всегда расположены в опер. памяти; диспечер свопинга, буферного кэша и другие)

  • демоны (неинтерактивные процессы и выполняются в фоновом режиме; систкма печати, система сетевого доступа и другие)

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

Атрибуты процессов

  • PID идентификатор процесса (уникальный номер, присваивается по возрастающей)

  • PPID идентификатор родительского процесса, породившего данный процесс

  • Приоритет Nice Number (Относительный — учитывается планировщиком при определении очередности запуска (изменяется пользователем), Выполнения — распределение процессорных ресурсов (обновляется ядром))

  • Терминальная линия (Терминал или псевдотерминал ассоциируемый с процессом)

  • Реальный (RID) и эффиктивный (EUID) идентификаторы пользователя (Реальный -идентификатор пользователя, запустивший процесс; Эффективный — определение прав доступа процесса к системным ресурсам)

  • Реальный (RGID) и эффиктивный (EGID) идентификаторы группы (Реальный равен идентификатору первичной или текущей группы; Эффективный — служит для определения прав доступа к системным ресурсам по классу доступа группы)

Жизненый путь процесса

Процесс создается системным вызовом fork. Новый процесс является точной копией породившего его процесса, различен лишь только PID. Для запуска задачи процесс выполняет системный вызов exec. При этом новый процесс не порождается, а исполняемый код полностью замещается кодом запускаемой программы.Прародителем всех процессов являетя процесс init являющимся распределителем процессов.

Сигналы

Способ передачи от одного процесса другому или от ядра процессу уведомления о возникновении нового события (например, при делении на ноль ядро посылает сигнал SIGFPE, при прерывании SIGINT)

команда kill -sig_no pid

Процесс может

  • игнорировать сигнал

  • потребовать действие по умолчанию

  • перехватить или обработать (SIGKILL, SIGSTOP нельзя перехватить и игнорировать)

Процесс может не исчезнуть

  • процессы-зомби

  • процессы, ожидающие недоступные ресурсы NFS

  • процессы, ожидающие завершения операции с устройством

Выполнение процесса происходит в двух режимах

-режим ядра ( выполнение инструкций ядра, доступны системные структуры данных)

-режим задачи (процесс выполняет инструкции прикладной программы, доступные на непривилегированном уровне защиты процессора, процессу недоступны системные структуры данных)

Структуры данных процесса

Каждый процесс представлен

  • proc (является записью системной таблицы процессов, находящаяся всенда в опер. Пасмяти, и содержащая состояние, приоритет, сигналы и др, адресуется переменной curproc)

  • user (содержит дополнительные данные о процессе, которые требуются ядру только во время выполнения, адресуется переменной u и находится в спец области виртуальной памяти)

Состояние процесса

  • выполняется в режиме задачи

  • выполняется в режиме ядра

  • не выполняется но готов к запуску

  • находится в состоянии сна

  • возращается из режима ядра в режим задачи

  • только что создан вызовом fork

  • выполнил системный вызов exit

Адресное пространство процесса

адресное пространство ядра обычно совпадает с адресным пространством выполняющегося процесса (имеют один и тот же контекст) стр. 243

Управление памятью процесса

Операции, за которые отвечает ОС

Размещение в памяти каталога страниц и таблиц страниц, инициализация регистра — указателя на каталог таблиц страниц, инициализация каталога страниц, установка отображения, обработка страничных ошибок, управление свехоперативным кэшем, обеспечение обмена

Области

Адресное пространство процесса, разделенное на несколько участков. Процесс может совместно одну область, которая называется region.

Замещение страниц

Принципы

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

  • принцип размещения (определяет, в каких участках памяти система размещает страниц)

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

Планирование выполнения процессов

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

Классы приложений -

  • Интерактивные приложения (проводят больше времени в ожидании действия пользователя (интерпретаторы, текстовые редакторы))

  • Фоновые приложения (Приложения не требующие вмешательства пользователя )

  • Приложения реального времени

Обработка прерываний таймера

Временой интервал между соседними прерываниями называется тиком.

Обработка прерываний (функции обработчика)

  • обновление статистики использования процессора

  • функции, связанные с планированием процессов

  • обновление системного времени

  • обработка отложенных вызовов

  • обработка будильников

Отложенные вызовы (определяют функцию, вызов которой будет произведен ядром системы черезз некоторое время) Применяются — выполнение функций планировщика, функций дравйверов устройств, опрос устройств

Будильники (процесс может запросить ядро отправить сигнал, через некоторое время) Типы — реального времени, профилирования и виртуального времени.

Контекст процесса (вся информация, требуемая для описания процесса) состоит -

  • Адресное пространство процесса в режиме задачи (код и стек процесса)

  • Управляющая информация (proc и user)

  • Окружение процесса (переменные окружения)

  • Аппаратный контекст (значения РОН - указатель инструкций, указатель стека, регистры)

Переключение контекста (Процесс переходит в состояние сна, процесс завершается, появляется более приоритетный процесс)

Принципы планирования процессов (основано на приоритете)

  • текущий приоритет (от 0 до 127 — 0-65 режим задачи, 66-95 приоритет ядра, 96-127 приложения реального времени)

  • относительный (задается апри рождении и влияет на текущий)

Создание процесса (системный вызов fork — создает новый процесс, который является точной копией родителя)

  • резервирует место в области свопинга

  • размещает новую запись proc в таблице процессов

  • инициализирует структуру proc

  • размещает каоты отображения

  • размещает область u процесса

Запуск новой программы (системный вызов exec — создается адресное пространство процесса, которое загружается содержимым новой программы)

  • производит трансляцию имени файла

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

  • сохраняет аргументы и переменные окружения

  • резервмрует место в области памяти

  • освобождает старые области процесса

  • копирует сохраненные аргументы и переменные в новый стек

  • инициализирует аппаратный контекст процесса

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

Завершение выполнения процесса (функция exit)

  • отключает все сигналы

  • закрывает все открытые файлы

  • меняет состояние на зомби

  • делает процесс init родительским для всех потомков

  • освобождает адресное пространство

  • отправляет сигнал SIGCHLD

Группы и сеансы

  • Группа процессов (Каждый процесс принадлежит группе, которая имеет лидера, чей PID равен идентификатору группы)

  • Управляющий терминал (Все процессы группы имеют один и тот же управляющий терминал)

  • Специальный файл устройства (Связан с управляющим терминалом процессора)

Управление сигналами

Обеспечивают механизм вызова определенной процедуры при наступлении некоторого события. Яжро генерирует и отправляет процессу сигнал в ответ на ряд событий, которые могут быть вызваны самим или другим процессом или прерыванием. Причины (Осоьые ситуации (деление на ноль), Терминальные прерывания, Другие процессы, Управлениие заданиями, Квоты, Уведомления, Алармы). Доставка по вызову системного вызова issig, которая проверяет существует ли ожидающие доставки сигналы.

Взаимодействие между процессами

  • Передача данных

  • Совместное использование данных

  • Извещения

Средства

  • Сигналы

  • Каналы (вывод программы передается на ввод другой программы)

  • FIFO (Первый вошел — первый вышел)

  • Сообщения

  • Семафоры (Разрешаю или запрещают процессу использование того или иного разделяемого ресурса. Условие — значение доступно для всех процессов. Семафор — представляет группу счетчиков)

  • Разделяемая память (обеспечивает 2 или более процессам возможность доступа к одной области памяти для обмена данными)

Соседние файлы в папке материалы к собеседованию