Операционная система UNIX

На нашем литературном портале можно бесплатно читать книгу Операционная система UNIX, Робачевский Андрей Михайлович-- . Жанр: ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Операционная система UNIX
Название: Операционная система UNIX
Дата добавления: 16 январь 2020
Количество просмотров: 436
Читать онлайн

Операционная система UNIX читать книгу онлайн

Операционная система UNIX - читать бесплатно онлайн , автор Робачевский Андрей Михайлович

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

В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).

Для широкого круга пользователей.

 

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 63 64 65 66 67 68 69 70 71 ... 156 ВПЕРЕД
Перейти на страницу:

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

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

region
.

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

pregion
(per process region), которые в свою очередь адресуют области, используемые процессом. Указатель на список структур
pregion
для каждого процесса находится в записи таблицы процессов — структуре
proc
.

Основные поля структур

region
и
pregion
приведены на рис. 3.10.

Операционная система UNIX - img_35.jpeg

Рис. 3.10. Управление адресным пространством процесса в SCO UNIX

Помимо указателей

p_next
, организующих структуры
pregion
в виде связанного списка, и
p_reg
, обеспечивающих адресацию соответствующей структуры region, в каждой структуре
pregion
определен набор флагов определяющий права доступа к области, режим блокирования в памяти и т.д. Поле
p_type
указывает на тип области. Оно может содержать одно из следующих значений:

Значение Описание
PT_UNUSED Область не используется
PT_TEXT Область содержит сегмент кода
PT_DATA Область содержит сегмент данных
PT_STACK Область используется в качестве стека процесса
PT_SHMEM Область используется в качестве разделяемой памяти
PT_LIBTXT Область содержит код библиотек
PT_LIBDAT Область содержит данные библиотек
PT_SHFIL Область используется для хранения файла, отображенного в память

Наконец, поле

p_regva
задает виртуальный адрес области в адресном пространстве процесса.

Поля структуры

region
, приведенные на рис. 3.10, имеют следующие значения. Поле
r_pgsz
определяет размер области в страницах, из которых r_
nvalid
страниц присутствуют в оперативной памяти (см. далее раздел "Страничное замещение"). Несколько процессов могут ссылаться на одну и ту же область, поле
r_refcnt
хранит число таких ссылок. Поле
r_pde
  адресует таблицу страниц области [33]. Поле
r_iptr
адресует inode файла, где располагаются данные области (например, для области кода,
r_iptr
будет указывать на inode исполняемого файла).

Фактическую информацию о структурах управления адресным пространством процесса можно получить с помощью команды crash(1M). В следующем примере таким образом определяется содержимое структур

pregion
процесса и характеристики соответствующих областей.

# <b>crash</b>

dumpfile = /dev/mem, namelist = /unix, outfile = stdout

&gt; <b>pregion 101</b>

SLOT PREG REG#      REGVA  TYPE FLAGS

 101    0   12   0x700000  text rdonly

        1   22   0x701000  data

        2   23 0x7ffffffc stack

        3  145 0x80001000 lbtxt rdonly

        4  187 0x80031000 lbdat pr

Как можно увидеть из вывода команды crash(1М), с рассматриваемым процессом связаны пять областей: сегмент кода, данных и стека, а также сегменты кода и данных подключенной библиотеки. Столбец

REG#
определяет запись таблицы областей, где расположена адресуемая каждой
pregion
область
region
. Заметим, что значение в столбце
REG#
лишь отчасти соответствует полю
p_reg
структуры
pregion
, поскольку последнее является указателем, а не индексом таблицы. Столбец
REGVA
содержит значения виртуальных адресов областей.

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

&gt;region 12 22 23

SLOT PGSZ VALID SMEM NONE SOFF KEF SWP NSW FORW BACK INOX TYPE FLAGS

  12    1     1    1    0    0  11   0   0   15    5  154 stxt done

  22    3     1    0    0    0   1   0   0  238   23  154 priv done

  23    2     1    1    0    0   1   0   0  135   24      priv stack

Столбец

PGSZ
определяет размер области в страницах, а столбец
VALID
— число страниц этой области, находящихся в оперативной памяти. Как можно заметить, для сегментов данных и стека страниц недостаточно, поэтому может возникнуть ситуация, когда процессу потребуется обращение к адресу, в настоящее время отсутствующему в памяти. Заметим также, что столбец
INOX
содержит индексы таблиц inode, указывающие на метаданные файлов, откуда было загружено содержимое соответствующих сегментов.

Мы можем взглянуть на дополнительные сведения об этом файле:

&gt;<b>inode 154</b>

INODE TABLE SIZE = 472

SLOT MAJ/MIN FS INUMB RCNT LINK UID GID SIZE    MODE MNT M/ST FLAGS

154    1,42   2  1562    3    1 123  56 8972 f---755   0 R130 tx

Из этой таблицы мы можем определить файловую систему, в которой расположен файл (

MAJ
/
MIN
), а также номер его дискового inode —
INUMB
. В данном случае он равен 1562. Выполнив команду ncheck(1), мы узнаем имя исполняемого файла, соответствующего исследуемому процессу:

1 ... 63 64 65 66 67 68 69 70 71 ... 156 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название