Создание процесса- порождение процесса другим процессом.
Типичные функции ядра ОС
-создание и завершение процессом
-планирование и диспетчеризация проыессов
-переключение процессов
-синхронизация и поддержка обмена инцормацией между процессами
-организация управляющих блоков процессов
Новый процесс в Windows создается вызовом функции CreateProcess функция CreateProcess возвращает ненулевое значение, если процесс был создан успешно. Процесс, который создает новый процесс, называется родительским по отношению к создаваемому процессу. По вызову функции ExitProcess завершаются все потоки процесса с кодом возврата, который является параметром этой функции. Кроме CreateProcess в Win32 есть около 100 функций управления процессами.
В ОС UNIX с технической точки зрения новый процесс формируется следующим образом: текущий процесс выполняет системный запрос на создание нового процесса. Системный запрос заставляет ОС создать новый процесс. В UNIX существует только один системный запрос на создание нового процесса: fork. Этот запрос создает дубликат существующего процесса. Обычно дочерний процесс делает системный вызов execve для изменения своего образа памяти и запуска новой программы. Завершение процесса происходит вызовом exit. Также процесс может завершится в результате ошибки. В UNIX и Windows родительский и дочерний процесс имеют собственные различные адресные пространства.
Диспетчеризацией заведует ос которая реализует определенное стратегическое распределение ресурсов между процессами.
Программный код может выполняться либо в контексте самого процесса, способы вызова в разных ос по-разному, программное прерывание, вызов супервизора.
11. Управление процессами в ОС семейства UNIX
Каждому процессу соответствует контекст, в котором он выполняется. Этот контекст включает пользовательский контекст (т. е. содержимое виртуального адресного пространства, сегментов программного кода, данных, стека, разделяемых сегментов и сегментов файлов, отображаемых в виртуальную память), содержимое аппаратных регистров — регистровый контекст (регистр счетчика команд, регистр состояния процессора, регистр указателя стека и регистры общего назначения), а также структуры данных ядра (контекст системного уровня), связанные с этим процессом. Контекст процесса системного уровня в ОС UNIX состоит из «статической» и «динамических» частей. Для каждого процесса имеется одна статическая часть контекста системного уровня и переменное число динамических частей.
Статическая часть контекста процесса системного уровня включает следующее:
Идентификатор процесса (PID)
Уникальный номер, идентифицирующий процесс. По сути, это номер строки в таблице процессов — специальной внутренней структуре ядра операционной системы, хранящей информацию о процессах.
Идентификатор родительского процесса (PPID)
В операционной системе UNIX процессы выстраиваются в иерархию — новый процесс может быть создан только одним из уже существующих процессов, который выступает для него родительским.
Состояние процесса
Каждый процесс в любой момент времени находится в одном из нескольких определенных состояний
В UNIX перевод процессов в состояние зомби служит для корректного завершения группы процессов, освобождения ресурсов и т. п.
Идентификаторы пользователя
Идентификатор пользователя и группы, от имени которых исполняется процесс, используются операционной системой для определения границ доступа для процесса.
Приоритет процесса
Число, используемое при планировании исполнения процесса в операционной системе.
Таблица дескрипторов открытых файлов
Список структур ядра, описывающий все файлы, открытые этим процессом для ввода-вывода.
Динамическая часть контекста процесса — это один или несколько стеков, которые используются процессом при выполнении в режиме пользователя и в режиме ядра (в процессе прерываний и системных вызовов).
12. Потоки – определение, виды многопоточности
Поток определяет последовательность исполнения кода в процессе. При запуске программы ОС всегда создает один поток – главный. Именно в нем программа начинает свое выполнение. В зависимости от типа программы и настроек компилятора в главном потоке может выполняться функция main, WinMain, _tmain или функция, заданная пользователем. Главный поток живет до тех пор, пока самая первая функция в стеке не завершила свое выполнение.
Создание потока в Windows происходит с помощью вызова API фукнции:
Многопото́чность — свойство платформы или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени.