русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сессии и группы процессов


Дата добавления: 2013-12-23; просмотров: 2275; Нарушение авторских прав


Все процессы объединены в сессии. Процессы, принадлежащие к одной сессии, определяются общим идентификатором сессии (sid). Лидер сессии - это процесс, который создал сессию вызо­вом setsid(2). Идентификатор процесса лидера сессии совпадает с его sid. Сессия может выде­лить себе управляющий терминал для того, чтобы дать пользователю возможность управлять ис­полнением заданий (групп процессов) внутри сессии. При входе в систему создается сессия, ко­торая имеет идентификатор сессии, равный идентификатору процесса вашего входного shell'а. Также, при открытии каждого окна xterm(1) или закладки gnome-terminal(1), создается сессия, идентификатор которой совпадает с идентификатором дочернего процесса, запущенного терми­нальным эмулятором.

Если ваш командный процессор не предоставляет управления заданиями, все процессы в вашей сессии являются также членами единственной в этой сессии группы процессов, которая была со­здана вызовом setsid(2). В этом случае, функциональность сессии совпадает с функционально­стью группы процессов.

В командном процессоре, предоставляющем управление заданиями (ksh(1), jsh(1), bash(1)), управляющий терминал совместно используется несколькими группами процессов, так как для каждой команды, запущенной с управляющего терминала, создается своя группа процессов. Ко­мандный процессор называет такие команды «заданиями» (jobs). Одновременно работающие за­дания идентифицируются номерами, обычно совпадающими с порядком их запуска.

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



Кроме того, если процесс из фоновой группы пытается читать с терминала или выводить на него данные, он получает сигнал, соответственно, SIGTTIN или SIGTTOUT. Оба эти сигнала приво­дят к остановке соответствующего процесса. Shell при этом выводит сообщение [имя програм­мы] stopped: tty input. Для продолжения исполнения такой программы необходимо перевести со­ответствующую группу процессов на первый план командой fg.

Обычные команды запускаются как задания первого плана. Shell ожидает завершения лидера группы этого задания и выдает приглашение только после его завершения. Если в конце ко­манды стоит символ &, shell запускает такую команду как фоновое задание и не дожидается ее завершения. Если пользователь во время работы команды первого плана введет символ VSUSP (Ctrl-Z), группа получает сигнал SIGTSTP и останавливается, а shell выдает приглашение. Поль­зователь может вернуться к взаимодействию с этой группой процессов, введя команду fg, или продолжить её исполнение в фоне командой bg. Если пользователь имеет несколько приоста­новленных или фоновых заданий, он может выбирать между ними, идентифицируя их по номе­рам. Так, переключение на задание 3 делается командой fg %3.

Вывести список заданий, их номера и состояния можно командой jobs.

Также, встроенная команда kill у shell'ов с управлением заданиями, может принимать номер за­дания вместо номера процесса; при этом сигнал будет послан всем процессам соответствующей группы.



<== предыдущая лекция | следующая лекция ==>
Передача двоичного файла - Пример | Установить идентификатор группы процессов - Пример


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.136 сек.