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

3. Процессы в ос Linux. Общие понятия.

1)Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").

4. Процессы в ос Linux. Этапы создания процесса.

Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").

Механизм создания нового процесса. Для создания нового процесса используется системный вызов fork; при этом процесс выполняет эмулированное прерывание в ядро и создаёт структуру задач, а также несколько других структур (таких как, стек режима ядра и структура thread_info). Большая часть содержимого дескриптора дочернего процесса заполняется значениями из дескриптора родителя. Затем Линукс ищет доступный PID и обновляет элемент хеш-таблицы. Также система настраивает поля task_struct, чтобы они указывали на соответствующий процесс в массиве задач. Далее выделяется память для данных потомка, сегментов стека и текста. После данного этапа дочерний процесс готов начать работу. После того как дочерний процесс начинает работу, его код делает системный вызов exec; при этом ядро находит и проверяет исполняемый файл. После этого процесс начинает работу.

Работа fork:

Выделить структуру задач для потомка

Заполнить структуру задач потомка данными родителя

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

Заполнить область пользователя дочернего процесса из соответствующей области

Выделить PID для дочернего процесса

Настроить дочерний процесс на использование программы родительского процесса

Копировать таблицы страниц для данных и стека

Настроить совместное использование открытых файлов

Копировать регистры родительского процесса в дочерний

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]