- •Раздел 4. Операционная система unix
- •Оглавление
- •Введение
- •1. Основание и история
- •2. Основные понятия ос unix
- •2.1. Основные понятия
- •2.2. Ядро ос unix
- •2.2.1. Общая организация традиционного ядра ос unix
- •2.2.3. Принципы взаимодействия с ядром
- •2.2.2. Основные функции
- •2.2.4. Принципы обработки прерываний
- •2.3. Файловая система
- •2.3.1. Структура файловой системы
- •2.3.2. Монтируемые файловые системы
- •2.3.3. Интерфейс с файловой системой
- •2.3.4. Разновидности файлов
- •2.3.5. Распределенные файловые системы
- •2.4. Управление устройствами
- •2.4.1. Устройство как специальный файл
- •2.4.2. Драйверы устройств
- •2.4.3. Внешний и внутренний интерфейсы устройств
- •2.5. Принципы защиты
- •2.5.1. Идентификаторы пользователя и группы пользователей
- •2.5.2. Защита файлов
- •2.6. Базовые механизмы сетевых взаимодействий
- •2.6.1. Потоки (Streams)
- •2.6.2. Стек протоколов tcp/ip
- •2.6.3. Программные гнезда (Sockets)
- •2.6.4. Вызовы удаленных процедур (rpc)
- •3. Основные функции и компоненты ядра ос unix
- •3.1. Управление памятью
- •3.1.1. Виртуальная память
- •3.1.2. Аппаратно-независимый уровень управления памятью
- •3.1.3. Страничное замещение основной памяти и swapping
- •3.2. Управление процессами и нитями
- •3.2.1. Пользовательская и ядерная составляющие процессов
- •3.2.2. Принципы организации многопользовательского режима
- •3.2.3. Механизм управления процессами на уровне пользователя
- •3.2.4. Понятие нити (threads)
- •3.2.5. Организация нитей и управлению ими в ос unix
- •3.3. Управление вводом/выводом
- •3.3.1. Принципы системной буферизации ввода/вывода
- •3.3.2. Системные вызовы для управления вводом/выводом
- •3.3.3. Блочные драйверы
- •3.3.4. Символьные драйверы
- •3.3.5. Потоковые драйверы
- •3.4. Взаимодействие процессов
- •3.4.1. Разделяемая память
- •3.4.2. Семафоры
- •3.4.3. Очереди сообщений
- •3.4.4. Программные каналы
- •3.4.5. Программные гнезда (sockets)
- •4. Мобильное программирование в среде ос unix. Стандартные библиотеки
- •4.1. Библиотека системных вызовов
- •4.2. Библиотека ввода/вывода
- •4.3. Дополнительные библиотеки
- •4.4. Файлы заголовков
- •5. Средства интерактивного интерфейса пользователей
- •5.1. Командные языки и командные интерпретаторы
- •5.1.1. Общая характеристика командных языков
- •5.1.2. Базовые возможности семейства командных интерпретаторов
- •5.2. Команды и утилиты
- •5.2.1. Организация команды в ос unix
- •5.2.2. Перенаправление ввода/вывода и организация конвейера
- •5.2.3. Встроенные, библиотечные и пользовательские команды
- •5.2.4. Программирование на командном языке
- •6. Средства графического интерфейса пользователей
- •6.1. Оконная система X как базовое средство графических интерфейсов в среде ос unix
- •6.1.1. Общая организация X-Window
- •6.1.2. Клиентская и серверная части
- •6.1.3. Базовые библиотеки
- •6.2. Средства разработки графических интерфейсов
- •7. Современное состояние ос unix
- •7.2. Системы, основанные на System V Release 4
- •7.3. Свободно распространяемые и коммерческие варианты ос unix семейства bsd
- •7.4. Другие свободно распространяемые варианты ос unix
- •7.5. Стандарты ос unix
- •Заключение
- •Литература
2.6.2. Стек протоколов tcp/ip
TCP/IP (Transmission Control Protocol/Internet Protocol) представляет собой семейство протоколов, основным назначением которых является обеспечение возможности полезного сосуществования компьютерных сетей, основанных на разных технологиях. В 1969 году Агентство перспективных исследовательских проектов министерства обороны США (DARPA - Department of Defense Advanced Research Project Agency) поддержало и финансировало проект, посвященный поиску общей основы связи сетей с разной технологией. В результате выполнения этого проекта была образована единая виртуальная сеть, получившая название Internet. В Internet для связи независимых сетей, или доменов используется набор шлюзов. Каждый индивидуальный узел сети (Host) идентифицируется уникальным адресом, называемым адресом в Internet.
Для разрешения проблемы различий в форматах кадров, используемых в разных сетях, был определен универсальный формат пакета данных, называемого IP-датаграммой (Internet Protocol Datagram), состоящего из заголовка и порции данных и поэтому похожего на обычный сетевой кадр. Однако порция данных IP-датаграммы сама содержится внутри сетевого кадра, т.е. IP-датаграмма погружается в сетевой кадр конкретного формата и поэтому может передаваться в разных сетях, входящих в Internet. Все узлы, шлюзы и сети Internet должны быть в состоянии понимать IP-датаграммы.
Узлы, взаимодействующие в Internet, не устанавливают между собой физические соединения для целей индивидуального взаимодействия. Поэтому датаграммы не обрабатываются в каком-либо конкретном порядке. Напротив, каждая датаграмма обрабатывается независимо от других, что позволяет эффективно разделять ресурсы для всего множества (логически) связанных узлов. Но это, к сожалению, означает, что сервис, предоставляемый Internet, не является надежным, поскольку не гарантирует доставку пакетов в нужном порядке, отсутствие потерь датаграмм или отсутствие их дублирования.
Эту проблему решает протокол TCP (Transmission Control Protocol), обеспечивающий надежную доставку сообщений за счет подтверждений доставки датаграмм и их повторной передачи в случае надобности. Если узел, посылающий датаграмму, не получает подтверждение о ее доставке в течение установленного промежутка времени, то считается, что датаграмма не доставлена, и она посылается повторно.
Полное семейство протоколов, основанных на использовании IP-датаграмм, называется TCP/IP. Наиболее важными и базисными протоколами этого семейства (или стека) являются кратко описанные выше протоколы IP и TCP. Для определенности остальные протоколы семейства TCP/IP перечислены в таблице 2.2. Большая часть коммуникационных средств ОС UNIX основывается на использовании протоколов стека TCP/IP.
Таблица 2.2.
Семейство протоколов TCP/IP
Название протокола |
Описание протокола |
TCP |
Протокол управления передачей (Transmission Control Protocol) |
UDP |
Протокол пользовательских датаграмм (User Datagram Protocol) |
ARP |
Протокол разрешения адресов (Address Resolution Protocol) |
RARP |
Протокол обратного разрешения адресов (Reverse Address Resolution Protocol) |
IP |
Протокол Internet (Internet Protocol) |
ICMP |
Протокол управляющих сообщений Internet (Internet Control Message Protocol) |
FTP |
Протокол пересылки файлов (File Transfer Protocol) |
TFTP |
Простой протокол пересылки файлов (Trivial File Transfer Protocol) |
В UNIX System V Release 4 протокол TCP/IP реализован как набор потоковых модулей плюс дополнительный компонент TLI (Transport Level Interface - Интерфейс транспортного уровня). TLI является интерфейсом между прикладной программой и транспортным механизмом. Приложение, пользующееся TLI, получает возможность использовать TCP/IP.
Интерфейс TLI основан на использовании классической семиуровневой модели ISO/OSI, которая разделяет сетевые функции на семь областей, или уровней. Цель модели в обеспечении стандарта сетевой связи компьютеров независимо от производителя аппаратуры компьютеров и/или сети. Семь уровней модели можно кратко описать следующим образом.
Уровень 1: Физический уровень (Physical Level) - среда передачи (например, Ethernet), отвечает за передачу неструктурированных данных по сети.
Уровень 2: Канальный уровень (Data Link Layer) - уровень драйвера устройства, называемый также уровнем ARP/RARP в TCP/IP, отвечает за преобразование данных при исправлении ошибок, происходящих на физическом уровне.
Уровень 3: Сетевой уровень (Network Level) - отвечает за выполнение промежуточных сетевых функций, таких как поиск коммуникационного маршрута при отсутствии возможности прямой связи между узлом-отправителем и узлом-получателем. В TCP/IP этот уровень соответствует протоколам IP и ICMP.
Уровень 4: Транспортный уровень (Transport Level) - уровень протоколов TCP/IP или UDP/IP семейства протоколов TCP/IP. Уровень отвечает за разборку сообщения на фрагменты (пакеты) при передаче и за сборку полного сообщения из пакетов при приеме таким образом, что на более старших уровнях модели эти процедуры вообще незаметны. Кроме того, на этом уровне выполняется посылка и обработка подтверждений и, при необходимости, повторная передача.
Уровень 5: Уровень сессий (Session Layer) - отвечает за управление переговорами взаимодействующих транспортных уровней. В NFS (сетевая файловая система) этот уровень используется для реализации механизма вызовов удаленных процедур (RPC - Remote Procedure Calls).
Уровень 6: Уровень представлений (Presentation Layer) - отвечает за управление представлением информации. В NFS на этом уровне реализуется механизм внешнего представления данных (XDR - External Data Representation), машинно-независимого представления, понятного для всех компьютеров, входящих в сеть.
Уровень 7: Уровень приложений - интерфейс с такими сетевыми приложениями, как telnet, rlogin, mail и т.д.
Интерфейс TLI соответствует трем старшим уровням этой модели (с пятого по седьмой) и позволяет прикладному процессу пользоваться сервисами сети (без необходимости знать о деталях транспортного и более низких уровней). В System V Release 4 TLI реализован на основе механизма потоков. Для доступа используются не специальные системные вызовы, а функции библиотеки /usr/lib/libnsl_s.a.
