Европейский Университет в Санкт-Петербурге
Опубликован: 10.10.2005 | Доступ: свободный | Студентов: 1716 / 298 | Оценка: 4.30 / 3.85 | Длительность: 16:22:00
ISBN: 978-5-94774-820-8
Лекция 7:

Управление процессами

Аннотация: Лекция описывает процессы в Solaris, представление процессов на уровне ядра, управление ими и утилиты мониторинга процессов.
Ключевые слова: portability, guide, issue, заголовки, Unix, среда окружения, UCB, CCS, спецификация программы, процесс, ядро, управление процессами, поток, приоритет, планирование процессов, приложение, ПО, LWP, планировщик , отображение, идентификатор, эффективный идентификатор пользователя, класс планирования, PPID, parent process, EUID, сигнал, interactive, IA, system, real-time, fixed, priority, share, scheduling, класс, робототехника, очередь, процессор, диспетчер, доступ к процессору, сервер, scheduler, алгоритм, память, диск, x86, SPARC, свопинг, менеджер, пейджинг, paging, сканер, администрирование, компьютер, звезда, место, консоль, права, ACL, файл, пароль, запись, выход, администратор, программа, set, USER, ID, право доступа, sticky-notes, BIT, интерактивный процесс, фоновый процесс, терминал, механизмы, управление доступом, вывод, стандартный ввод, дескриптор, перенаправление потока, cpu time, границы блока, System V IPC, освобождение семафора, installation guide, идентификатор набора семафоров, интерактивный режим, системный администратор, управляющий терминал, скрипт, размер файла, очереди сообщений, контроль

Замечание о совместимости утилит

Несмотря на то что Solaris удовлетворяет многочисленным стандартам, некоторые программы в системе (точнее, их возможности и ключи) расходятся со стандартом XPG4. Этот стандарт (The X/Open Portability Guide, Issue 4 - XPG4) представляет собой спецификацию, описывающую программы, заголовки и интерфейсы. В частности, описывается ожидаемое поведение ряда программ UNIX и их ключи.

Что находится в каталоге /usr/bin/xpg4

В тех случаях, когда поведение и ключи программ Solaris расходились со спецификацией XPG4, изначальная версия программы под Solaris не изменялась. вместо этого программа, совместимая с XPG4 с примерно такими же функциональными особенностями и точно таким же именем, помещалась в каталог /usr/xpg4/bin. Таким образом, для того, чтобы выбрать, какие программы - оригинальные или XPG4-совместимые вы предпочитаете использовать в своей системе, достаточно указать первым в переменной среды окружения PATH тот каталог, в котором лежат нужные вам "по умолчанию" программы. Если первым указан каталог /usr/bin, то при вызове команды по ее короткому имени, например, grep, а не по полному имени файла, например, /usr/xpg4/bin/grep, будет вызываться /usr/bin/grep - оригинальная программа. Если указать в PATH первым /usr/xpg4/bin, то будет запускаться XPG4-совместимая версия. Помните, что оригинальные программы могут располагаться также в /bin, /usr/ucb и /usr/ccs/bin.

Спецификация XPG4 включает в себя спецификации программ из IEEE Std 1003.2-1992 и IEEE Std 1003.2a-1992 (которые вместе носят название POSIX 2).

Иерархия процессов в Solaris

Процессы делятся на процессы ядра и на все остальные процессы (последние называются пользовательскими процессами ). Пользовательский процесс не обязательно запущен неким пользователем, то, что он - "пользовательский", означает лишь, что он не принадлежит ядру.

Само ядро Solaris представляет собой множество потоков (threads), которые выполняются параллельно. Действительно, у ядра много разных дел, было бы странно, если бы ядро пыталось все делать последовательно, а не параллельно. Термин threads часто переводят как "нить", но мы будем говорить в контексте управления процессами именно о "потоках", понимая под этим "потоки команд", в отличие от "потоков данных", которые будут рассмотрены ниже.

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

Solaris реализует многоуровневую поточную модель. Ее назначение - разделить управление потоками пользовательского уровня и работу ядра. Потоки пользовательского уровня имеют свою схему приоритетов. Их планирование проводится с помощью потока-планировщика. Такой поток создается библиотекой потоков, когда многопоточное приложение компилируется и выполняется. Внутри одного пользовательского процесса могут работать свои потоки, передача управления между которыми осуществляется внутренним планировщиком этого процесса. Благодаря этому многопоточные приложения могут порождать тысячи потоков без существенной загрузки ядра. Оно будет видеть это приложение как один процесс. По сути, ядро не видит пользовательские потоки, пока они не присоединяются к легковесному процессу (lightweight process, LWP), имеющему определенное положение в операционной системе. Поток-планировщик отвечает за отображение пользовательских потоков в легковесный процесс (LWP), который связан с потоком ядра для выполнения процессором. Каждый LWP имеет поток ядра, но необязательно каждый поток ядра имеет LWP. Часть потоков ядра задействованы исключительно операционной системой, поэтому LWP здесь не требуется.