о процессе, которые нужны ядру
Структура user, называемая также u-area или u block, содержит данные о процессе, которые нужны ядру при выполнении процесса. В отличие от структуры
proc, адресуемой с помощью указателя
curproc, данные user размещаются в определенном месте виртуальной памяти ядра и адресуются через переменную
u. u area также содержит стек фиксированного размера – системный стек или стек ядра (kernel stack). При выполнении процесса в режиме ядра операционная система использует стек, а не стек процесса.
Современные процессоры поддерживают разбивку адресного пространства на области переменного размера – сегменты, и области фиксированного объема – страницы.
Процессоры Intel позволяют разделить память на несколько логических сегментов. Виртуальный адрес при этом состоит из двух частей – селектора сегмента и смещения в пределах сегмента. Поле селектора INDEX указывает на дескриптор сегмента, где записано его положение, размер и права доступа RPL (Descriptor Privilege Level).
При запуске программы командный интерпретатор порождает процесс, который наследует все 4 идентификатора и имеет те же права, что и shell.Так как в сеансе пользователя прародителем всех процессов является login shell, то их идентификаторы будут идентичны. При запуске программы сначала порождается новый процесс, а затем загружается программа.
Процесс порождается с помощью системного вызова
fork:
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
Порожденный процесс (дочерний) является точной копией родительского процесса. Дочерний процесс наследует следующие атрибуты:
- идентификатор пользователя и группы
- все указатели и дескрипторы файлов
- диспозицию сигналов и их обработчики
- текущий и корневой каталог
- переменные окружения
- маску файлов
- ограничения, налагаемые на процесс
- управляющий терминал
Конфигурация виртуальной памяти также сохраняется (те же сегменты программ, данных, стека и пр.). После завершения вызова fork оба процесса будут выполнять одну и ту же инструкцию. Отличаются эти процессы PID, PPID (идентификатор родительского процесса), дочерний процесс не имеет сигналов, ждущих доставки, отличаются и код, возвращаемый системным вызовом fork (родителю возвращается PID дочернего процесса, а дочернему - 0).
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий