- •Лекция 5. Процессы и потоки. Прерывания. Процесс. Состояния процесса. Операции над процессами. Процесс
- •Состояния процесса
- •Блок управление процессом
- •Реализация мультизадачности
- •Операции над процессами
- •Создание процесса.
- •Уничтожение процесса.
- •Приостановка процесса.
- •Процессы и потоки windows
- •Ресурсы
- •Создание нового процесса
- •Контекст процесса
- •Состояние процесса
- •Идентификаторы пользователя
- •Приоритет процесса
- •Состояние процесса (unix)
Ресурсы
Ресурс – объект, который запрашивается, используется и освобождается процессами в период их активности.
Делимые ресурсы – ресурсы, которые несколько процессов могут использовать одновременно.
Используемые параллельно – в течение некоторого интервала времени процессы используют попеременно.
Unix
Создание нового процесса
Когда возникает необходимость создания нового процесса , текущий процесс выполняет системный вызов fork. При этом создаётся новый процесс, представляющий собой копию исходного процесса и его контекста. Новый процесс отличается тем, что у него другой PID, а родителем для него является запустивший процесс. Далее дочерний процесс с помощью системного вызова exec запускает вместо себя другую программу, заново проинициализировав свои код и данные.
Контекст процесса
Каждому процессу соответствует контекст, в котором он выполняется. Этот контекст включает пользовательский контекст (т. е. содержимое виртуального адресного пространства, сегментов программного кода, данных, стека, разделяемых сегментов и сегментов файлов, отображаемых в виртуальную память), содержимое аппаратных регистров — регистровый контекст (регистр счетчика команд, регистр состояния процессора, регистр указателя стека и регистры общего назначения), а также структуры данных ядра (контекст системного уровня), связанные с этим процессом. Контекст процесса системного уровня в ОС UNIX состоит из «статической» и «динамических» частей. Для каждого процесса имеется одна статическая часть контекста системного уровня и переменное число динамических частей.
Статическая часть контекста процесса системного уровня включает следующее:
Идентификатор процесса (PID) - уникальный номер, идентифицирующий процесс. По сути, это номер строки в таблице процессов — специальной внутренней структуре ядра операционной системы, хранящей информацию о процессах.
В любой момент времени ни у каких двух процессов номера не могут совпадать, однако после завершения процесса его номер освобождается и может быть в дальнейшем использован для идентификации любого вновь запущенного процесса.
Идентификатор родительского процесса (PPID) - в операционной системе UNIX процессы выстраиваются в иерархию — новый процесс может быть создан только одним из уже существующих процессов, который выступает для него родительским.
Очевидно, что в такой схеме должен присутствовать один процесс с особым статусом: он должен быть порожден ядром операционной системы и будет являться родительским для всех остальных процессов в системе. В UNIX такой процесс имеет собственное имя — init.
Состояние процесса
Каждый процесс в любой момент времени находится в одном из нескольких определенных состояний: инициализация, исполнение, приостановка, ожидание ввода-вывода, завершение и т. п.
Большинство этих состояний совпадает с классическим набором состояний процессов в многозадачных операционных системах. Для операционной системы UNIX характерно особое состояние процесса — зомби. Процесс получает это состояние, если он завершился раньше, чем этого ожидал его родительский процесс. В UNIX перевод процессов в состояние зомби служит для корректного завершения группы процессов, освобождения ресурсов и т. п.
