Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
operatsionnye_sistemy (1).docx
Скачиваний:
31
Добавлен:
02.04.2015
Размер:
229.45 Кб
Скачать

39 Процессы в системе юникс

Процесс в системах ЮНИКС – это процесс, в классическом понимании этого термина, то есть это программа, выполняемая в собственном виртуальном адресном пространстве.

Когда пользователь входит в систему, автоматически создается процесс, в котором выполняется программа командного интерпретатора. Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нем соответствующую программу, начиная с функции main. Эта запущенная программа, в свою очередь, может создать процесс и запустить в нем другую программу(та тоже должна содержать функциюmain) и так далее. Для образования нового процесса и запуска в нем программы используются 2 системных вызоваAPI–fork() &exec(имя_выполняемого_файла). Системный вызовfork() приводит к созданию нового адресного пространства , состояние которого абсолютно идентично состоянию адресного пространства основного процесса(то есть в нем содержатся те же программы и данные). Для дочернего процесса заводятся копии всех сегментов данных.

Процесс – объект, создаваемый в результате выполнения функции fork(). Каждый процесс имеет одного родителя, но может породить много процессов. Начальный процесс является особенным процессом, который создается в результате загрузки системы. После порождения нового процесса с идентификатором 1 начальный процесс становится процессом подкачки и реализует механизм виртуальной памяти.

40 Управление процессами ядром юникс

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

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

41 Системные вызовы управления процессами

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

42 Системные вызовы управления потоками

Сюда ХЗ!

43 Сигналы

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

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