Андрей Робачевский - Операционная система UNIX
Здесь есть возможность читать онлайн «Андрей Робачевский - Операционная система UNIX» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 1997, ISBN: 1997, Издательство: BHV - Санкт-Петербург, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.
- Название:Операционная система UNIX
- Автор:
- Издательство:BHV - Санкт-Петербург
- Жанр:
- Год:1997
- Город:Санкт-Петербург
- ISBN:5-7791-0057-8
- Рейтинг книги:4 / 5. Голосов: 1
-
Избранное:Добавить в избранное
- Отзывы:
-
Ваша оценка:
- 80
- 1
- 2
- 3
- 4
- 5
Операционная система UNIX: краткое содержание, описание и аннотация
Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Операционная система UNIX»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей
Операционная система UNIX — читать онлайн бесплатно полную книгу (весь текст) целиком
Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Операционная система UNIX», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.
Интервал:
Закладка:
TPI определяет набор и формат сообщений, с помощью которых протоколы верхнего уровня взаимодействуют с модулем транспортного протокола. Таким образом, TPI является интерфейсом между поставщиком транспортных услуг (transport provider) и пользователем этих услуг (transport user). Эти сообщения определяют транспортные примитивы (transport primitive), или команды, и могут иметь следующий формат:
□ Сообщение состоит из блока типа M_PROTO,
за которым может следовать несколько блоков M_DATA
. Блок M_PROTO
содержит управляющую информацию, включая тип команды и ее аргументы. В блоках M_DATA
передаются ассоциированные с командой данные прикладной программы.
□ Сообщение состоит из одного блока M_PCPROTO
, который содержит управляющую информацию, включая тип команды и ее аргументы.
□ Сообщение состоит из одного или более блоков M_DATA
, в которых передаются данные прикладной программы.
Таблица 6.10. Основные управляющие сообщения TPI
Транспортный примитив | Тип сообщения | Значение |
---|---|---|
T_BIND_REQ |
M_PROTO |
Запрос на связывание. Этот примитив инициируется пользователем транспортных услуг и запрашивает связывание потока с адресом протокола. Сообщение состоит из одного блока M_PROTO , который содержит значение адреса и заказанное максимальное число запросов, ожидающих обслуживания со стороны пользователя. Последний параметр игнорируется для транспортных услуг без предварительного установления связи. Блок M_PROTO содержит следующие поля: |
PRIM type |
Тип примитива — T_BIND_REQ |
|
ADDR_length |
Размер адреса протокола | |
ADDR_offset |
Смещение адреса в блоке M_PROTO |
|
CONIND_number |
Максимальное число запросов, ожидающих обслуживания | |
T_BIND_ACK |
M_PCPROTO |
Подтверждение получения запроса на связывание. Этот примитив отправляется пользователю транспортных услуг и означает, что поток был связан с адресом протокола, заказанное максимальное число ожидающих запросов допустимо и поток был активизирован. Сообщение состоит из одного блока M_PCPROTO , содержащего значения указанных параметров. Заметим, что возвращаемый адрес может не совпадать с адресом, указанным в запросе T_BIND_REQ . Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_BIND_ACK |
|
ADDR_length |
Размер адреса протокола | |
ADDR_offset |
Смещение адреса в блоке M_PROTO |
|
CONIND_number |
Максимальное число запросов, ожидающих обслуживания | |
T_UNBIND_REQ |
M_PROTO |
Запрос на уничтожение связывания. Этот примитив инициируется пользователем транспортных услуг и запрашивает у поставщика уничтожение ранее созданного связывания потока с адресом протокола и деактивизацию потока. |
T_CONN_REQ |
M_PROTO |
Запрос на установление связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи. Он инициируется пользователем транспортных услуг и запрашивает установление связи с указанным адресатом. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные, определенные пользователем. Заметим, что протокол TCP не позволяет передавать прикладные данные вместе с запросом. Блок M_PROTO содержит значение адреса получателя и опции, связанные с этим примитивом. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_CONN_REQ |
|
DEST_length |
Размер адреса протокола | |
DEST_offset |
Смещение адреса получателя в блоке M_PROTO |
|
ОРТ_length |
Размер опций | |
ОРТ_offset |
Смещение опций в блоке M_PROTO |
|
T_CONN_IND |
M_PROTO |
Индикация установления связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и свидетельствует о том, что удаленным пользователем с указанным адресом был сделан запрос на установление связи. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные, определенные пользователем. Блок M_PROTO содержит значение адреса удаленного пользователя, отправившего запрос на установление связи, а также опции, связанные с этим примитивом. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_CONN_IND |
|
SRC_length |
Размер адреса протокола | |
SRC_offset |
Смещение адреса отправителя в блоке M_PROTO |
|
OPT_length |
Размер опций | |
OPT_offset |
Смещение опций в блоке M_PROTO |
|
SEQ_number |
Идентификатор соединения | |
T_CONN_RES |
M_PROTO |
Ответ на запрос на установление связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и свидетельствует о том, что поставщик транспортных услуг принимает предшествующий запрос на установление связи. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные, определенные пользователем. Блок M_PROTO содержит указатель на очередь чтения потока, который будет обрабатывать запрос. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_CONN_RES |
|
QUEUE_ptr |
Указатель на очередь потока, который должен быть использован в качестве узла созданного соединения | |
OPT_length |
Размер опций | |
OPT_offset |
Смещение опций в блоке M_PROTO |
|
SEQ_number |
Идентификатор соединения | |
T_CONN_CON |
M_PROTO |
Подтверждение установления связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи. Он отправляется пользователю транспортных услуг в качестве подтверждения установления связи с удаленным пользователем. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные, определенные пользователем. Блок M_PROTO содержит значение размера адреса, сам адрес удаленного пользователя, обслуживающего соединение, а также опции, связанные с этим примитивом. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_CONN_CON |
|
RES_length |
Размер адреса протокола | |
RES_ offset |
Смещение адреса удаленного узла в блоке M_PROTO |
|
OPT_length |
Размер опций | |
ОРТ_offset |
Смещение опций в блоке M_PROTO |
|
Т_DISCON_REQ |
M_PROTO |
Запрос на разрыв связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи. Он инициируется пользователем транспортных услуг и свидетельствует либо об отказе пользователем в установлении связи, либо о желании пользователя разорвать уже существующее соединение для данного потока. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные, определенные пользователем. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_DISCON_REQ |
|
SEQ_number |
Идентификатор соединения | |
Т_DISCON_IND |
M_PROTO |
Индикация разрыва связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и свидетельствует о том, что удаленный пользователь либо отказывает в установлении связи, либо желает разорвать существующее соединение. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные, определенные пользователем. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_DISCON_IND |
|
DISCON_reason |
Причина разрыва связи | |
SEQ_number |
Идентификатор соединения | |
Т_ORDREL_REQ |
M_PROTO |
Запрос на "аккуратное" прекращение связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и указывает поставщику транспортных услуг, что пользователь завершил передачу данных. При этом соединение переходит в симплексный режим, позволяя пользователю принимать данные от удаленного узла. Сообщение состоит из одного блока M_PROTO . |
Т_ORDREL_IND |
M_PROTO |
Индикация "аккуратного" прекращения связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и отправляется пользователю транспортных услуг, свидетельствуя о том, что удаленный пользователь соединения завершил передачу данных. При этом соединение переходит в симплексный режим, позволяя пользователю передавать данные удаленному узлу. Сообщение состоит из одного блока M_PROTO . |
T_UNIDATA_REQ |
M_PROTO |
Запрос на передачу данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и отправляется пользователем транспортных услуг в качестве запроса на передачу дата- граммы. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные пользователя. Блок M_PROTO содержит значение размера адреса и сам адрес получателя датаграммы, а также опции, связанные с этим примитивом. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_UNIDATA_REQ |
|
DEST_length |
Размер адреса протокола | |
DEST_offset |
Смещение адреса получателя в блоке M_PROTO |
|
OPT_length |
Размер опций | |
ОРТ_offset |
Смещение опций в блоке M_PROTO |
|
Т_UNITDATA_IND |
M_PROTO |
Индикация получения данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и указывает пользователю, что поставщиком транспортных услуг получена датаграмма от удаленного узла. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные пользователя. Блок M_PROTO содержит значение адреса отправителя датаграммы, а также опции, связанные с этим примитивом. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_UNIDATA_IND |
|
SRC length |
Размер адреса протокола | |
SRC_offset |
Смещение адреса отправителя в блоке M_PROTO |
|
OPT_length |
Размер опций | |
ОРТ_offset |
Смещение опций в блоке M_PROTO |
|
T_UDERROR_IND |
M_PROTO |
Сообщение об ошибке датаграммы. Этот примитив применим только для транспортных услуг без предварительного установления связи и указывает пользователю, что датаграмма с указанным адресом получателя и опциями вызвала ошибку. Сообщение состоит из одного блока M_PROTO , содержащего размер адреса и сам адрес получателя, опции, а также код ошибки, зависящий от конкретного транспортного протокола. Блок M_PROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_UDERROR_IND |
|
DEST_length |
Размер адреса протокола | |
DEST_offset |
Смещение адреса отправителя в блоке M_PROTO |
|
OPT_length |
Размер опций | |
OPT_offset |
Смещение опций в блоке M_PROTO |
|
ERROR_type |
Код ошибки | |
T_DATA_REQ |
M_PROTO |
Запрос на передачу данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и информирует поставщика транспортных услуг, что сообщение содержит пакет данных интерфейса (Transport Interface Data Unit, TIDU). Одно или более таких сообщений формируют пакет данных протокола TSDU. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные пользователя. Блок M_PROTO содержит флаг MORE_flag , указывающий, является ли следующее сообщение T_DATA_REQ частью того же TSDU. На основании этого флага поставщик транспортных услуг компонует транспортные пакеты TSDU. Передача данных с помощью запросов T_DATA_REQ позволяет сохранить границы записи при передаче. Заметим, что протоколом TCP данная возможность не поддерживается. |
T_DATA_IND |
M_PROTO |
Индикация получения данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и информирует пользователя, что сообщение содержит пакет данных интерфейса TIDU. Сообщение состоит из одного блока M_PROTO , за которым может следовать один или несколько блоков типа M_DATA , содержащих прикладные данные удаленного пользователя. Блок M_PROTO содержит флаг MORE_flag , позволяющий пользователю определить границы TSDU. |
Т_EXDATA_REQ |
M_PROTO |
Запрос на передачу экстренных данных. Этот примитив аналогичен T_DATA_REQ , но служит для передачи экстренных данных. Протокол TCP поддерживает передачу экстренных данных с помощью функции t_snd(3N) с аргументом flags , содержащим флаг T_EXPEDITED и, возможно, T_MORE . |
T_EXDATA_IND |
M_PROTO |
Индикация получения экстренных данных. Этот примитив аналогичен T_DATA_IND , но служит для передачи пользователю экстренных данных. |
T_OK_ACK |
M_PCPROTO |
Положительное подтверждение. Этот примитив сообщает пользователю транспортных услуг, что предшествующий примитив, инициированный им, был успешно принят поставщиком транспортных услуг. В то же время, получение подтверждения не означает, что поставщиком были совершены какие-либо действия, связанные с предыдущим примитивом. Сообщение состоит из одного блока M_PCPROTO в котором хранится тип подтвержденного примитива CORRECT_prim . |
T_ERROR_ACK |
M_PCPROTO |
Сообщение об ошибке. Этот примитив сообщает пользователю услуг, последний примитив, инициированный им, вызвал ошибку. Получение этого примитива может рассматриваться как отрицательное подтверждение, свидетельствующее, что никаких действий, связанных с ошибочным примитивом, не было предпринято. Сообщение состоит из одного блока M_PCPROTO , содержащего тип примитива, вызвавшего ошибку, код TLI и код системной ошибки UNIX. Блок M_PCPROTO содержит следующие поля: |
PRIM_type |
Тип примитива — T_ERROR_ACK |
|
ERROR_prim |
Тип ошибочного примитива | |
TLI_error |
Код ошибки TLI | |
UNIX_error |
Код системной ошибки UNIX | |
T_INFO_REQ |
M_PCPROTO |
Запрос на получение параметров транспортного протокола. Этот примитив служит для запроса пользователем значений размеров различных параметров протокола, а также информации о текущим состоянии поставщика транспортных услуг. Сообщение состоит из одного блока M_PCPROTO . |
T_INFO_ACK |
M_PCPROTO |
Параметры транспортного протокола. Этот примитив служит для передачи пользователю ранее запрошенных с помощью T_INFO_REQ параметров транспортного протокола. Сообщение состоит из одного блока M_PCPROTO , содержащего информацию, часть из которой возвращается функцией t_open(3N) , рассмотренной в разделе "Программный интерфейс сокетов" ранее в этой главе. Блок M_PCPROTO состоит из следующих полей: |
PRIM_type |
Тип примитива — T_INFO_ACK |
|
TSDU_size |
Определяет максимальный размер пакета данных протокола TSDU | |
ETSDU_size |
Определяет максимальный размер пакета экстренных данных протокола ETSDU | |
CDATA_size |
Определяет максимальный объем данных, передаваемых при установлении связи. Соответствует полю connect структуры info функции t_open(3N) |
|
DDATA_size |
Определяет максимальный объем данных, передаваемых при разрыве связи. Соответствует полю discon структуры info функции t_open(3N) |
|
ADDR_size |
Определяет максимальный объем транспортного протокола. Соответствует полю addr структуры info функции t_open(3N) |
|
OPT_size |
Определяет размер опций для данного протокола. Соответствует полю options структуры info функции t_open(3N) |
|
TIDU_size |
Определяет размер пакета данных интерфейса TIDU | |
SERV_type |
Определяет тип транспортных услуг, предоставляемых поставщиком. Соответствует полю servtype структуры info функции t_open(3N) |
|
CURRENT_state |
Определяет текущее состояние поставщика транспортных услуг | |
PROVIDER_flag |
Определяет дополнительные характеристики поставщика транспортных услуг | |
T_OPTMGMT_REQ |
M_PROTO |
Управление опциями протокола. Этот примитив позволяет пользователю получить или установить опции протокола. Сообщение состоит из одного блока M_PROTO , включающего следующие поля: |
PRIM_type |
Тип примитива — T_OPTMGMT_REQ |
|
OPT_length |
Размер опций | |
ОРТ_offset |
Смещение опций в блоке M_PROTO |
|
MGMT_flags |
Флаги, определяющие характер запроса пользователя: T_NEGOTIATE — установить опции, указанные пользователем. В результате опции, установленные поставщиком, могут отличаться от заказанных; T_CHECK — проверить, поддерживаются ли опции, указанные пользователем, поставщиком; T_DEFAULT — возвратить значения опций протокола. |
|
T_OPTMGMT_ACK |
M_PCPROTO |
Положительное подтверждение. Этот примитив подтверждает завершение операции с опциями протокола, заказанными пользователем. Сообщение состоит из одного блока M_PROTO , включающего те же поля, что и T_OPTMGMT_REQ . |
Взаимодействие с прикладными процессами
Интервал:
Закладка:
Похожие книги на «Операционная система UNIX»
Представляем Вашему вниманию похожие книги на «Операционная система UNIX» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.
Обсуждение, отзывы о книге «Операционная система UNIX» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.