Книга название которой обозначает выполнение пассивных инструкций компьютерной программой

Процесс (информатика)

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

У этого термина существуют и другие значения, см. Процесс.

Статусы процессов в современных ОС.

Проце́сс — выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Компьютерная программа сама по себе это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций.

Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д.

[править] Создание процесса

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

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

[править] Завершение процесса

Минимум 2 этапа завершения:

  1. Процесс удаляется из всех очередей планирования, т.е. ОС больше не планирует выделение каких-либо ресурсов процессу
  2. Сбор статистики о потреблённых процессом ресурсах с последующим удалением его из памяти

Причины завершения процесса:

  1. Обычный выход
  2. Выход по исключению или ошибке
  3. Недостаточный объем памяти
  4. Превышение лимита отведённого программе времени
  5. Выход за пределы отведённой области памяти
  6. Неверная команда (данные интерпретируются как команды)
  7. Ошибка защиты
  8. Завершение родительского процесса
  9. Ошибка ввода/вывода
  10. Вмешательство оператора

[править] Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4
 Просмотр этого шаблона Аспекты операционных систем (история • список)
Ядро

Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя

Управление
процессами

Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс Управление процессом • Планировщик задач • Многопоточность

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

Защита памяти • Сегментная адресация памяти • Страничная память • Менеджер виртуальной памяти • Ошибка сегментации • Общая ошибка защиты

Прочее

Загрузчик ОС • API • VFS • Компьютерная сеть • GUI • Слой аппаратных абстракций (HAL)


1


Лекция 2 Управление задачами Процессы и потоки


2


Процесс Выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие. Компьютерная программа сама по себе это только пассивная совокупность инструкций, в то время как процесс это непосредственное выполнение этих инструкций. Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д.


3


Контекст процесса Адресное пространство Содержимое аппаратных регистров Структуры данных ядра Адресное пространство – список адресов в памяти от некоторого минимума (обычно ноль) до некоторого максимума, которые процесс может прочесть и в которые может писать. Содержит саму программу, данные к ней и ее стек. (core image)


4


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


5


Системный контекст Запись в таблице процессов, описывающая состояние процесса и содержащая различную управляющую информацию, к которой ядро всегда может обратиться. Часть адресного пространства задачи, выделенная процессу, где хранится управляющая информация о процессе, доступная только в контексте процесса. Общие управляющие параметры, такие как приоритет процесса, хранятся в таблице процессов, поскольку обращение к ним должно производиться за пределами контекста процесса. Записи частной таблицы областей процесса, общие таблицы областей и таблицы страниц, необходимые для преобразования виртуальных адресов в физические. + В задачи управления памятью входит идентификация участков виртуального адресного пространства процесса, не являющихся резидентными в памяти. Стек ядра, в котором хранятся записи процедур ядра, если процесс выполняется в режиме ядра. Несмотря на то, что все процессы пользуются одними и теми же программами ядра, каждый из них имеет свою собственную копию стека ядра для хранения индивидуальных обращений к функциям ядра. Ядро должно иметь возможность восстанавливать содержимое стека ядра и положение указателя вершины стека для того, чтобы возобновлять выполнение процесса в режиме ядра. В различных системах стек ядра часто располагается в пространстве процесса, однако этот стек является логически-независимым и, таким образом, может помещаться в самостоятельной области памяти. + Динамическая часть системного контекста процесса, состоящая из несколь ких уровней и имеющая вид стека, который освобождается от элементов в порядке, обратном порядку их поступления. На каждом уровне системного контекста содержится информация, необходимая для восстановления предыдущего уровня и включающая в себя регистровый контекст предыдущего уровня.. Если несколько процессов совместно используют общие области, эти области входят составной частью в контекст каждого процесса, поскольку каждый процесс работает с этими областями независимо от других процессов. Когда процесс выполняется в режиме задачи, соответствующий ему стек ядра пуст.


6


Таблица процессов Управление процессомУправление памятьюУправление файлами Регистры Счетчик команд Указатель стека Состояние процесса Приоритет Параметры планирования Идентификатор процесса Родительский процесс Группа процесса Время начала процесса Использованное процессорное время Указатель на текстовый сегмент Указатель на сегмент данных Указатель на сегмент стека Корневой каталог Рабочий каталог Дескрипторы файла Идентификатор пользователя Идентификатор группы


7


Модель процесса Один счетчик команд A B C D 4 счетчика команд ABCD A B C D время В каждый момент времени активен только 1 процесс


8


Состояния процесса 1. процесс блокируется ожидая ввода данных 2. планировщик выбирает другой процесс 3. планировщик выбирает этот процесс 4. доступны входные данные Блокировка Действие Готовность Работающий (в этот конкретный момент использующий процессор) 2.Готовый к работе (приостановлен что бы позволить работать другому процессу) 3.Заблокирован (ждет внешнего события)


9


Иерархия процессов UnixWindows Все процессы связаны Один «родитель» и сколько угодно «детей» Единое дерево во главе — init Не существует иерархии Все процессы равноправны Родительский процесс имеет дескриптор, позволяющий контролировать дочерний процесс. (Дескриптор можно передать другому процессу)


10


Пример иерархии Unix initbashls -lagrepsendmailpopsmtp ls –ls | grep doc


11


Потоки (thread, нити) Существуют только «внутри» процесса Служат для выполнения программ в одной концепции процесса


12


Потоки Ядро поток Процесс 3Процесс 1Процесс 2 Ядро поток Процесс 1 Простр анство пользо вателя


13


Таблица потока Элемент процессаЭлемент потока 1.Адресное пространство 2.Глобальные переменные 3.Открытые файлы 4.Дочерние процессы 5.Необработанные аварийные сигналы 6.Сигналы и их обработчики 7.Информация об использовании ресурсов 1.Счетчик команд 2.Регистры 3.Стек 4.Состояние


14


Реализация потоков


15


Примеры Редактирование документов Веб сервер — кеширование


16


Вопрос 2 Назовите понятие: «Заходя в ванную, Анна забыла взять с собой халат. Обычно она может выйти в комнату и в неодетом виде, но, пока она была в ванной, в гости зашёл Антон, которому Анна должна отдать флэшку, которая лежит у неё в сумочке. Сам Антон в сумочку лезть отказывается, и требует, чтобы флэшку отдала ему Анна. Без флэшки он не уйдёт. Анна не может выйти в комнату пока там Антон. Антон ждёт, пока ему отдадут флешку, Анна ждёт ухода Антона, после которого она может выйти и отдать флешку.»

У этого термина существуют и другие значения, см. Процесс.

Статусы процессов в современных ОС.

Проце́сс — выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Компьютерная программа сама по себе это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций.

Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д.

Создание процесса

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

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

Завершение процесса

Минимум 2 этапа завершения:

  1. Процесс удаляется из всех очередей планирования, т.е. ОС больше не планирует выделение каких-либо ресурсов процессу
  2. Сбор статистики о потреблённых процессом ресурсах с последующим удалением его из памяти

Причины завершения процесса:

  1. Обычный выход
  2. Выход по исключению или ошибке
  3. Недостаточный объем памяти
  4. Превышение лимита отведённого программе времени
  5. Выход за пределы отведённой области памяти
  6. Неверная команда (данные интерпретируются как команды)
  7. Ошибка защиты
  8. Завершение родительского процесса
  9. Ошибка ввода/вывода
  10. Вмешательство оператора

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4
 Просмотр этого шаблона Аспекты операционных систем (история • список)
Ядро

Гибридное • Микро • Модульное • Монолитное • Нано • Экзо • Драйвер • Пространство пользователя • Область пользователя

Управление
процессами

Режимы (супервизора • реальный • защищённый) • Прерывание • Кольца защиты • Переключение контекста • Многозадачность (вытесняющая • кооперативная • мультипрограммирование) • Процесс Управление процессом • Планировщик задач • Многопоточность

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

Защита памяти • Сегментная адресация памяти • Страничная память • Менеджер виртуальной памяти • Ошибка сегментации • Общая ошибка защиты

Прочее

Загрузчик ОС • API • VFS • Компьютерная сеть • GUI • Слой аппаратных абстракций (HAL)

16.
Понятия процесса и потока. Состояния
процесса

Проце́сс
— выполнение пассивных инструкций
компьютерной программы на процессоре
ЭВМ.

Компьютерная
программа сама по себе это только
пассивная совокупность инструкций, в
то время как процесс — это непосредственное
выполнение этих инструкций.

Часто
процессом называют выполняющуюся
программу и все её элементы: адресное
пространство, глобальные переменные,
регистры, стек, открытые файлы и т. д.

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

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

Основные
способы реализации пакета потоков: в
пространстве пользователя и в ядре. В
первом случае ядро ничего не знает о
потоках и управляет обычными однопоточными
процессами.» +»: это можно реализовать
даже в ОС, не поддерживающей потоки
(раньше так строились все ОС); относительно
высокая производительность; возможность
использовать процессом собственный
алгоритм планирования.» –»: проблема
добровольной отдачи процессора одним
из потоков, или блокирование одного
потока, что приводит к блокированию
всего процесса. В большинстве известных
ОС сегодня потоки реализуются в ядре
или используется сочетание двух способов

Возможные
состояния процесса:


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


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


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

Переходы
между состояниями:

1:
процесс блокируется, ожидая входных
данных

2:
планировщик выбирает другой процесс

3:
планировщик выбирает этот процесс

4:
доступны входные данные


Подборка по базе: Ответы на вопросы. Семинар 2.docx, Тестовые вопросы 2.pdf, Тестовые вопросы.pdf, Тестовые вопросы к разделу 3_ просмотр попытки.pdf, Правовой статус третьих лиц в гражданском процессе и вопросы ег, КОНТРОЛЬНЫЕ ВОПРОСЫ — 2.docx, Ответы на тестовые вопросы по концепции 2023.docx, Экзаменационные вопросы и билеты по БЖД для ФЭ (2).doc, Ответы на вопросы.docx, Римское право Вопросы на зачет.docx


Задания 3.

Контрольные вопросы:

  1. Что собой представляет процесс в операционной системе? Обосновать ответ

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

  1. Назовите команды просмотра и управления процессами. Сделать сравнительную характеристику

процесс – выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ; • tasklist и taskkill – это команды просмотра и управления процессами. Команда tasklist служит для получения списка идентификаторов запущенных процессов.

3. Какая команда служит для получения списка идентификаторов запущенных

процессов? Раскрыть суть

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

4. Какая команда позволяет завершать работу процессов на локальном или

удаленном компьютере с помощью командной строки. Раскрыть суть

Для завершения процессов через командную строку в Windows 7 или Windows 10 нужно использовать команду «taskkill». Данная команда позволяет завершить процесс на локальном или удаленном компьютере по его названию или идентификатору (PID). Для управления процессами в командной строке есть две утилиты — tasklist и taskkill. Первая показывает список процессов на локальном или удаленном компьютере, вторая позволяет их завершить. Попробуем … Если просто набрать команду tasklist в командной строке, то она выдаст список процессов на локальном компьютере.

5. Какой параметр позволяет увидеть служебную информацию каждого

процесса? Обосновать

Команда taskkill позволяет завершать работу процессов на локальном или удаленном компьютере с помощью командной строки; • tasklist /SVC – этот параметр позволяет увидеть служебную информацию каждого процесса; • tasklist/m – эта команда отображает модули, связанные с каждым процессом, что позволяет рассмотреть все

6. Как выглядит код процесса, который необходимо завершить? Раскрыть суть.

Как выглядит код процесса, который необходимо завершить?

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

реестра. Раскрыть суть

Тема 2. Урок 17

Практическое занятие: Настройка параметров ОС

Управление процессами с помощью команд операционной системы для работы с процессами

Цель: освоить методы управления процессами в операционной системе Windows.

Теоретические сведения:

Процесс – выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ;

tasklist и taskkill – это команды просмотра и управления процессами. Команда tasklist служит для получения списка идентификаторов запущенных процессов. Команда taskkill позволяет завершать работу процессов на локальном или удаленном компьютере с помощью командной строки;

tasklist /SVC – этот параметр позволяет увидеть служебную информацию каждого процесса;

tasklist/m – эта команда отображает модули, связанные с каждым процессом, что позволяет рассмотреть все библиотеки, используемые процессом;

tasklist/v – это команда, с помощью которой отображается очень подробная информация о процессах;

taskkill /pid <процесс> /pid<процесс> /pid <процесса> /t– этот код завершает тот процесс, чей pid введен;

/pid – это код процесса, он указывает код процесса, который необходимо завершить;

regedit – это команда, с помощью которой происходит запуск редактора реестра.

Задание 1

1) Запустите несколько программ на компьютере.

2) Просмотрите количество запущенных программ в операционной системе Windows, используя программу «Диспетчер Задач», нажав комбинацию клавиш Ctrl + Shift + Esc.

3) Просмотрите, сколько запущено процессов, а также насколько загружен процессор и задействовано ОЗУ, нажав на вкладку «Быстродействие».

Задание 2

1) Запустите интерпретатор Командной строки, нажав комбинацию клавиш Win+ R.

2) В командной строке наберите команду tasklist и нажмите Enter. Отобразится список приложений и связанные с ними задачи/процессы, которые в данный момент используются.

3) Для вывода списка активных служб в каждом процессе введите команду tasklist /SVC.

4) Запустите Калькулятор.

5) Просмотрите командой tasklist появился ли процесс calc.exe

6) Запустите Редактор реестра с помощью команды regedit. Посмотрите командой tasklist появился ли процесс regedit.exe.

Задание 3

1) Запустите ещё два Калькулятора. Выполните в каждом расчёты.

2) Просмотрите командой tasklist появились ли все три процесса calc.exe.

3) Отобразите все задачи, которые загрузили модули командой tasklist/m.

4) Отобразите подробную информацию командой tasklist/v.

5) Завершите три процесса calc.exe. Для этого введите команду taskkill /pid 948 /pid 236 /pid 1256 /t.

6) Убедитесь командой tasklist, что три процесса calc.exe были завершены.

Контрольные вопросы

1. Что собой представляет процесс в операционной системе?

2. Назовите команды просмотра и управления процессами.

3. Какая команда служит для получения списка идентификаторов запущенных процессов?

4. Какая команда позволяет завершать работу процессов на локальном или удаленном компьютере с помощью командной строки.

5. Какой параметр позволяет увидеть служебную информацию каждого процесса?

6. Как выглядит код процесса, который необходимо завершить?

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

У этого термина существуют и другие значения, см. Процесс.

Статусы процессов в современных ОС.

Проце́сс — это идентифицируемая абстракция совокупности взаимосвязанных системных ресурсов на основе отдельного и независимого виртуального адресного пространства в контексте которой организуется выполнение потоков. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Компьютерная программа сама по себе — лишь пассивная последовательность инструкций. В то время как процесс — непосредственное выполнение этих инструкций.

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

Представление процесса

Обычно процесс в вычислительной системе представлен (также говорят, «владеет») следующими ресурсами:

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу (хип) для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файл
  • файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.
Контекст текущего процесса выгружается в память, когда выполняется переключение на другой процесс[1].

Операционная система хранит большую часть информации о процессах в таблице процессов.

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

Для снижения вероятности влияния процессов друг на друга и вероятности отказа системы (например, взаимных блокировок или пробуксовки) операционная система обеспечивает изоляцию процессов и выделяет необходимые им ресурсы. Также операционная система предоставляет механизмы для взаимодействия процессов безопасными и предсказуемыми способами.

Представление процесса в памяти

В данном разделе рассмотрено представление процесса в памяти операционной системы Linux и архитектуры x86. Подобное представление мало отличается от многих других многозадачных операционных систем и архитектур. Например в amd64, наследнике x86, стек вызовов точно так же растёт сверху вниз, но размер адресного пространства увеличен до 248 байт.[2]

Представление программы в памяти в пространстве пользователя

Linux использует плоскую модель памяти, и поэтому в данной архитектуре каждому процессу доступно 232 байт памяти. Вся виртуальная память делится на пространство пользователя и пространство ядра. Пространство ядра занимает один гигабайт памяти, начиная с самого старшего адреса. Всё остальное пространство, то есть, три гигабайта отведено под пространство пользователя.

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

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

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

Куча (heap) используется для выделения памяти во время работы программы. В Linux для этого существует системный вызов mmap.

Область стека используется для вызова процедур.

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

Динамически подключаемые библиотеки и отображения файлов располагаются между стеком и кучей.

Иерархия процессов

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

Unix

Unix — одна из первых многозадачных ОС. Каждый процесс имеет уникальный числовой идентификатор PID. Процессы в ней имеют древовидную иерархию, где корнем является процесс init c PID 1. Новый процесс можно создать системным вызовом fork, он будет являться точной копией процесса-родителя. Любой процесс кроме init всегда имеет процесс-родитель (атрибут PPID (англ. Parent PID)); процессы, родитель которых завершил свою работу, становятся дочерними процессами init.

Процессы также объединяются в группы. За управление идентификатором группы (PGID) отвечают системные вызовы setpgid и getpgid. PGID равен PID’у лидера группы. Процесс-потомок наследует группу от родителя. Группы используются для управления заданиями.

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

Каждая сессия может иметь не более одного управляющего терминала. Эмулятор терминала имеет дочерним процессом оболочку команд (чаще всего bash или sh), которая перед запуском становится лидером новой сессии и устанавливает себе управляющим терминал.

Создание процесса

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

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

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

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

Linux

Граф переходов

Процесс в ОС Linux может находиться в одном из следующих состояний:

  • R (running/runnable) — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z (zombie) — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

Завершение процесса

Минимум 2 этапа завершения:

  1. Процесс удаляется из всех очередей планирования, то есть ОС больше не планирует выделение каких-либо ресурсов процессу,
  2. Сбор статистики о потреблённых процессом ресурсах с последующим удалением его из памяти.

Причины завершения процесса:

  • Обычный выход,
  • Выход по исключению или ошибке,
  • Недостаточный объём памяти,
  • Превышение лимита отведённого программе времени,
  • Выход за пределы отведённой области памяти,
  • Неверная команда (данные программы интерпретируются как инструкции для процессора),
  • Ошибка защиты (выполнение непривилегированной команды),
  • Завершение родительского процесса,
  • Ошибка ввода-вывода,
  • Вмешательство оператора.

См. также

  • Родительский процесс;
  • Дочерний процесс[en];
  • Группа процессов[en];
  • Фоновый процесс;
  • Процесс-зомби;
  • Процесс-сирота;
  • Легковесный процесс.

Примечания

  1. Э. Танненбаум. Современные операционные системы = Modern Operating Systems. — 2-е изд. — СПб.: Питер, 2002. — С. 59, 97. — 1040 с. — ISBN 5-318-00299-4.
  2. AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer’s Manual. AMD Corporation (декабрь 2016). Дата обращения: 25 марта 2017. Архивировано 13 июля 2018 года.

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4

Статусы процессов в современных ОС.

Проце́сс — это идентифицируемая абстракция совокупности взаимосвязанных системных ресурсов на основе отдельного и независимого виртуального адресного пространства в контексте которой организуется выполнение потоков. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Компьютерная программа сама по себе — лишь пассивная последовательность инструкций. В то время как процесс — непосредственное выполнение этих инструкций.

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

Представление процесса

Обычно процесс в вычислительной системе представлен (также говорят, «владеет») следующими ресурсами:

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу (хип) для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файл
  • файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.
Контекст текущего процесса выгружается в память, когда выполняется переключение на другой процесс[1].

Операционная система хранит большую часть информации о процессах в таблице процессов.

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

Для снижения вероятности влияния процессов друг на друга и вероятности отказа системы (например, взаимных блокировок или пробуксовки) операционная система обеспечивает изоляцию процессов и выделяет необходимые им ресурсы. Также операционная система предоставляет механизмы для взаимодействия процессов безопасными и предсказуемыми способами.

Представление процесса в памяти

В данном разделе рассмотрено представление процесса в памяти операционной системы Linux и архитектуры x86. Подобное представление мало отличается от многих других многозадачных операционных систем и архитектур. Например в amd64, наследнике x86, стек вызовов точно так же растёт сверху вниз, но размер адресного пространства увеличен до 248 байт.[2]

Представление программы в памяти в пространстве пользователя

Linux использует плоскую модель памяти, и поэтому в данной архитектуре каждому процессу доступно 232 байт памяти. Вся виртуальная память делится на пространство пользователя и пространство ядра. Пространство ядра занимает один гигабайт памяти, начиная с самого старшего адреса. Всё остальное пространство, то есть, три гигабайта отведено под пространство пользователя.

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

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

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

Куча (heap) используется для выделения памяти во время работы программы. В Linux для этого существует системный вызов mmap.

Область стека используется для вызова процедур.

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

Динамически подключаемые библиотеки и отображения файлов располагаются между стеком и кучей.

Иерархия процессов

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

Unix

Unix — одна из первых многозадачных ОС. Каждый процесс имеет уникальный числовой идентификатор PID. Процессы в ней имеют древовидную иерархию, где корнем является процесс init c PID 1. Новый процесс можно создать системным вызовом fork, он будет являться точной копией процесса-родителя. Любой процесс кроме init всегда имеет процесс-родитель (атрибут PPID (англ. Parent PID)); процессы, родитель которых завершил свою работу, становятся дочерними процессами init.

Процессы также объединяются в группы. За управление идентификатором группы (PGID) отвечают системные вызовы setpgid и getpgid. PGID равен PID’у лидера группы. Процесс-потомок наследует группу от родителя. Группы используются для управления заданиями.

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

Каждая сессия может иметь не более одного управляющего терминала. Эмулятор терминала имеет дочерним процессом оболочку команд (чаще всего bash или sh), которая перед запуском становится лидером новой сессии и устанавливает себе управляющим терминал.

Создание процесса

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

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

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

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

Linux

Граф переходов

Процесс в ОС Linux может находиться в одном из следующих состояний:

  • R (running/runnable) — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z (zombie) — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

Завершение процесса

Минимум 2 этапа завершения:

  1. Процесс удаляется из всех очередей планирования, то есть ОС больше не планирует выделение каких-либо ресурсов процессу,
  2. Сбор статистики о потреблённых процессом ресурсах с последующим удалением его из памяти.

Причины завершения процесса:

  • Обычный выход,
  • Выход по исключению или ошибке,
  • Недостаточный объём памяти,
  • Превышение лимита отведённого программе времени,
  • Выход за пределы отведённой области памяти,
  • Неверная команда (данные программы интерпретируются как инструкции для процессора),
  • Ошибка защиты (выполнение непривилегированной команды),
  • Завершение родительского процесса,
  • Ошибка ввода-вывода,
  • Вмешательство оператора.

См. также

  • Родительский процесс;
  • Дочерний процесс[en];
  • Группа процессов[en];
  • Фоновый процесс;
  • Процесс-зомби;
  • Процесс-сирота;
  • Легковесный процесс.

Примечания

  1. Э. Танненбаум. Современные операционные системы = Modern Operating Systems. — 2-е изд. — СПб.: Питер, 2002. — С. 59, 97. — 1040 с. — ISBN 5-318-00299-4.
  2. AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer’s Manual. AMD Corporation (декабрь 2016). Дата обращения: 25 марта 2017. Архивировано 13 июля 2018 года.

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4

Статусы процессов в современных ОС.

Проце́сс — это идентифицируемая абстракция совокупности взаимосвязанных системных ресурсов на основе отдельного и независимого виртуального адресного пространства в контексте которой организуется выполнение потоков. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

Компьютерная программа сама по себе — лишь пассивная последовательность инструкций. В то время как процесс — непосредственное выполнение этих инструкций.

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

Представление процесса

Обычно процесс в вычислительной системе представлен (также говорят, «владеет») следующими ресурсами:

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу (хип) для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файл
  • файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.
Контекст текущего процесса выгружается в память, когда выполняется переключение на другой процесс[1].

Операционная система хранит большую часть информации о процессах в таблице процессов.

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

Для снижения вероятности влияния процессов друг на друга и вероятности отказа системы (например, взаимных блокировок или пробуксовки) операционная система обеспечивает изоляцию процессов и выделяет необходимые им ресурсы. Также операционная система предоставляет механизмы для взаимодействия процессов безопасными и предсказуемыми способами.

Представление процесса в памяти

В данном разделе рассмотрено представление процесса в памяти операционной системы Linux и архитектуры x86. Подобное представление мало отличается от многих других многозадачных операционных систем и архитектур. Например в amd64, наследнике x86, стек вызовов точно так же растёт сверху вниз, но размер адресного пространства увеличен до 248 байт.[2]

Представление программы в памяти в пространстве пользователя

Linux использует плоскую модель памяти, и поэтому в данной архитектуре каждому процессу доступно 232 байт памяти. Вся виртуальная память делится на пространство пользователя и пространство ядра. Пространство ядра занимает один гигабайт памяти, начиная с самого старшего адреса. Всё остальное пространство, то есть, три гигабайта отведено под пространство пользователя.

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

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

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

Куча (heap) используется для выделения памяти во время работы программы. В Linux для этого существует системный вызов mmap.

Область стека используется для вызова процедур.

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

Динамически подключаемые библиотеки и отображения файлов располагаются между стеком и кучей.

Иерархия процессов

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

Unix

Unix — одна из первых многозадачных ОС. Каждый процесс имеет уникальный числовой идентификатор PID. Процессы в ней имеют древовидную иерархию, где корнем является процесс init c PID 1. Новый процесс можно создать системным вызовом fork, он будет являться точной копией процесса-родителя. Любой процесс кроме init всегда имеет процесс-родитель (атрибут PPID (англ. Parent PID)); процессы, родитель которых завершил свою работу, становятся дочерними процессами init.

Процессы также объединяются в группы. За управление идентификатором группы (PGID) отвечают системные вызовы setpgid и getpgid. PGID равен PID’у лидера группы. Процесс-потомок наследует группу от родителя. Группы используются для управления заданиями.

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

Каждая сессия может иметь не более одного управляющего терминала. Эмулятор терминала имеет дочерним процессом оболочку команд (чаще всего bash или sh), которая перед запуском становится лидером новой сессии и устанавливает себе управляющим терминал.

Создание процесса

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

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

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

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

Linux

Граф переходов

Процесс в ОС Linux может находиться в одном из следующих состояний:

  • R (running/runnable) — процесс исполняется либо ожидает своей очереди исполняться;
  • D — непрерываемый сон — процесс ожидает определённого события;
  • S — прерываемый сон — процесс ожидает определённого события либо сигнала;
  • T — остановка — процесс приостановлен, например, отладчиком;
  • Z (zombie) — процесс уже завершился, но ещё не передал родительскому процессу свой код возврата.

Завершение процесса

Минимум 2 этапа завершения:

  1. Процесс удаляется из всех очередей планирования, то есть ОС больше не планирует выделение каких-либо ресурсов процессу,
  2. Сбор статистики о потреблённых процессом ресурсах с последующим удалением его из памяти.

Причины завершения процесса:

  • Обычный выход,
  • Выход по исключению или ошибке,
  • Недостаточный объём памяти,
  • Превышение лимита отведённого программе времени,
  • Выход за пределы отведённой области памяти,
  • Неверная команда (данные программы интерпретируются как инструкции для процессора),
  • Ошибка защиты (выполнение непривилегированной команды),
  • Завершение родительского процесса,
  • Ошибка ввода-вывода,
  • Вмешательство оператора.

См. также

  • Родительский процесс;
  • Дочерний процесс[en];
  • Группа процессов[en];
  • Фоновый процесс;
  • Процесс-зомби;
  • Процесс-сирота;
  • Легковесный процесс.

Примечания

  1. Э. Танненбаум. Современные операционные системы = Modern Operating Systems. — 2-е изд. — СПб.: Питер, 2002. — С. 59, 97. — 1040 с. — ISBN 5-318-00299-4.
  2. AMD Corporation. Volume 2: System Programming (PDF). AMD64 Architecture Programmer’s Manual. AMD Corporation (декабрь 2016). Дата обращения: 25 марта 2017. Архивировано 13 июля 2018 года.

Литература

  • Э. Таненбаум, А. Вудхалл. «Операционные системы: Разработка и реализация.» — СПб.: 2006. — ISBN 5-469-00148-2
  • Э. Таненбаум. «Современные операционные системы. 2-е изд.» — СПб.: Питер, 2005. — 1038 с.: ил. ISBN 5-318-00299-4


Эта страница в последний раз была отредактирована 12 июля 2023 в 13:51.

Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.

Понравилась статья? Поделить с друзьями:
  • Книга мозг инструкция по применению купить
  • Книга кто я инструкция к реальности отзывы
  • Книга инструкция по сигнализации на метрополитенах рф
  • Книга инструкция по применению человеческого организма читать
  • Книга инструкция по применению человеческого организма скачать бесплатно