Младший номер (minor number)

Младший номер определяет собой: расположение устройства и его драйвер-зависимые характеристики. Некоторые примеры младших номеров файлов устройств приведено ниже. Более полную информацию можно почерпнуть из руководства “Configuring HP-UX for Peripherals”.

 

SCSI Disk device. Рассмотрим что означает младший номер 0x023000 у SCSI устройства.

 

bits 8-11 12-15 16-19 20-23 24-27 28-31
Binary 0000 0010 0011 0000 0000 0000
hex 0 2 3 0 0 0

 

0000 0010       Первые восемь бит идентифицируют интерфейс или интерфейсную карту

 

           0011                 SCSI адрес диска

 

оставшиеся биты нулевые.

 

SCSI ленточный накопитель.

 

  Bits 16-19 20-23 24-27 28-31
Binary SCSI номер SCSI LUN

24 – поведение как у BSD систем при закрытии

25 – без перемотки

26 – конфигурационный метод (если 1 то биты от 27 до 31 означают индекс, если 0 то плотность записи)

27-31 Индекс/плотность записи

 

Создавать файлы устройств можно с помощью команды mknod. Она имеет следующий синтаксис:

 

           mknod file_name [c|b] major minor

например

 

       mknod /dev/null c 3 0x000002

 

 

Инсталирование периферии на примере ленточного накопителя.

Прежде чем перейти к включению ленточного накопителя нужно убедится в том что его SCSI id не совпадает ни с одним из уже установленных устройств (диски, CD-ROM, …). После физического подключения накопителя к SCSI шине необходимо в ядро. В случае использования SAM для этого необходимо войти в раздел Kernel Configuration -> Drivers, в списке драйверов найти stape, и активировать его выбрав опцию Actions -> Add driver to Kernel. После выхода из окна конфигурации ядра SAM предложит перестроить я дро и перегрузить компьютер, также создаст все необходимые файлы устройств в каталоге /dev/rmt. Все тоже самое можно сделать используя командыв hpux как это было указано выше. В качестве имя драйвера нужно использовать stape.

 

           # cd /stand/build

       # /usr/lbin/sysadm/system_prep –v –s system

       # vi system

       # /usr/sbin/mk_kernel –s system

       # mv /stand/system /stand/system.prev

       # mv /stand/vmunix /stand/vmunix.prev

       # mv /stand/build/system /stand/system.prev

       # mv /stand/build/vmunix_test /stand/vmunix

       # shutdown –r now

       # ioscan –f –C tape

           

Class I H/W Path Driver S/W State H/W Type Description

================================================================

tape 0 2/0/1.3.0 stape  CLAIMED DEVICE  HP HP35480A

 

# lsdev | grep tape

205     -1    stape      tape

 

# mkdir /dev/rmt

# cd /dev/rmt

# mknod 0m c 205 0x003000

# mknod 0mn c 205 0x003040

# mknod 0mnb c 205 0x0030c0

 

Примечание: младшие номера для файла устройств можно узнать из файла /usr/include/sys/mtio.h (раздел Masks for minor number bits)

Инсталирование софта

Для работы с программными пакетами существует целая серия команд. Эти команды носят название SD-UX команды. Приведем список основных из них:

 

           swintsall           инсталирование программных пакетов

           swremove        удаление программных пакетов

           swlist                 список инсталированого програмного обеспечения

           swacl                просмотр и модификация прав для защиты программных компонент

 

 

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

 

Что такое процесс?

 

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

 

· програмными данными (переменные, массивы, записи …)

· номером процесса PID, номером процесса родителя PPID, и номером группы процессов PGID

· идентификатором пользователя и группы PID, GID

· информацией о открытых файлах

· текущей рабочей директорией

 

Взаимоотношения процессов

 

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

swapper) принадлежат к группам процессов.

 

 

Процесс ID и родительский процесс ID.

 

Во время создания процесса HP-UX назначает ему уникальный номер известный как процесс ID (PID), именно по этому номеру ядро идентифицирует процесс при выполнении системных вызовов. Помомо PID процесс имеет параметр как PPID (PID родителя). Используя программу ps можно посмотреть эти параметры:

 

           $ ps -f

      UID PID PPID C STIME TTY TIME COMMAND

        torry 3865 3699 2 13:35:43 ttyp3 0:00 ps -f

        torry 3699 3698 0 12:58:21 ttyp3 0:00 ksh

 

Идентификаторы пользователя и группы. (реальные и эффективные)

 

Помимо PID и PPID процесс имеет еще ряд идентификационных номеров:

 

           * реальный идентификатор пользователя (a real user ID)

           * реальный идентификатор  группы (a real group ID)

           * эффективный идентификатор пользователя (effective user ID)

           * эффективный идентификатор группы effective group ID.

 

Реальный идентификатор пользователя это целое число показывающее владельца процесса. Реальный идентификатор  группы это целое число показывающее группу к которой принадлежал пользователь создатель процесса. Комманда id показывает оба этих значения.

           %id

       uid=513(torry) gid=20(users)

       % grep 513 /etc/passwd

       torry:EqqHevH:513:20:Torry Ho,[44MY],474-1969,:/home/torry:/usr/bin/csh

 

Эффективный идентификатор пользователя и группы процесса позволяет процессу получать доступ к файлам или выполнять программы как пользователь имеющим ID равным эффективному. Обычно реальный и эффективные идентификаторы процессов совпадают, но не всегда. Когда эффективный идентификатор равен нулю, процесс начинает выполнять системные вызовы как администратор системы.

Эффективный идентификатор пользователя и группы остаються установленными до:

 

           * окончания процесса.

 

* пока они не заменяться при выполнении системного вызова exec() программы c   

установленными битами setuid или setgid.

 

* пока эффективный, реальный или сохраненные идентификаторы группы и         пользователя не будут установлены системными вызовами setuid(), setgid(), setresuid().

 

 

Группы процессов

 

Каждый процесс за исключением системных процессов таких как init и swapper принадлежат к группе процессов. Когда созхдается задание, шелл присваивает всем процессам в задании одну и туже группу процессов. Сигналы при этом могут распостраняться на все процессы в группе, в этом и заключается преимущество управления заданиями. Каждая группа процессов идентифицируется целым числом которое называется Process Group ID (PGID). PGID у группы процессов равен PID лидера группы – создателя группы. Все процессы в группе имеют одинаковый GID. PGID не может быть использован системой пока живет группа процессов. Время жизни группы процессов определяется как период времени между созданием группы и когда процесс покидает группу. Процесс покидает группу если:

 

           * когда другой процесс вызывает wait() или waitpid() функции на неактивный процесс.

 

           * при вызове setsid или setpgid системных вызовов.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: