Операционная система UNIX. Руководство программиста


     Японская косметика купить еще по теме. |     

Операционная система UNIX. Руководство программиста

В 1983 году Кен Томпсон и Деннис Ритчи были удостоены Премии Тьюринга Ассоциации Пользователей Вычислительных Машин (ACM) за разработку операционной системы UNIX. В аннотации, в частности, говорилось:
Успех системы UNIX основывается на удачном выборе нескольких ключевых идей и их элегантной реализации. Благодаря системе UNIX появилось поколение разработчиков программного обеспечения с новой идеологией программирования, основой которой является многократное использование имеющихся программ.
Должны ли программисты, использующие ОС UNIX, интересоваться тем, что делали Томпсон и Ритчи? Имеет ли это сегодня какой-либо смысл? Это необходимо, поскольку понимание идеологии, заложенной в проект системы, а также знание атмосферы, в которой проходила ее реализация, способствует наиболее быстрому ее освоению.

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

Выбор языка программирования
Поддерживаемые языки программирования
Язык C
Фортран
Паскаль
Ассемблер
Специализированные языки программирования
Awk(1)
Lex(1)
Yacc(1)

Еще о строках, столбцах и подпрограмме initscr( )
Определив размеры экрана терминала, initscr() присваивает значения переменным LINES и COLS. Эти значения берутся из переменных terminfo, называемых lines и columns. Последние, в свою очередь, извлекаются из базы данных terminfo, если не установлены значения переменных окружения $LINES и $COLUMNS.

Атрибуты вывода
Атрибуты вывода - 2
Звонки, свист, вспышки
Опции ввода
Опции ввода - 2
Работа с окнами
Ввод/вывод
Подпрограммы wnoutrefresh( ) и doupdate( )
Новые окна
Прочие возможности пакета curses

Управление семафорами
Результат системного вызова semctl(2) в случае успешного завершения зависит от выполняемого управляющего действия. Как правило он равен 0, но четыре действия (GETVAL, GETPID, GETNCNT и GETZCNT) являются исключениями. При возникновении ошибки всегда возвращается -1. Аргументы semid и semnum определяют множество или отдельный семафор, над которым выполняется управляющее действие. В качестве аргумента semid должен выступать идентификатор множества семафоров, предварительно полученный при помощи системного вызова semget(2). Аргумент semnum задает номер семафора в множестве. Семафоры нумеруются с нуля.

Операции над множествами семафоров
Использование semop
Программа-пример
Разделяемые сегменты памяти
Использование разделяемых сегментов памяти
Создание разделяемых сегментов памяти
Управление разделяемыми сегментами памяти
Использование shmctl
Программа-пример
Программа-пример - 2

Неоднозначности и конфликты
Есть ситуация, в которой приведенные выше методы разрешения конфликтов не подходят. Имеется в виду разбор арифметических выражений. Большинство конструкций, обычно используемых в арифметических выражениях, можно естественным образом описать при помощи понятия уровней старшинства (приоритетов) операций и информации о левой или правой ассоциативности. Применяя данный механизм, можно использовать неоднозначные грамматики с соответствующими правилами разрешения неоднозначностей для порождения алгоритмов разбора, которые быстрее и легче задавать, чем алгоритмы, построенные из однозначных грамматик.

Старшинство операций
Старшинство операций - 2
Старшинство операций - 3
Обработка ошибок
Обработка ошибок - 2
Окружение YACC'А
Советы по подготовке спецификаций
Стиль
Левая рекурсия
Уловки анализа лексики

Протоколы TCP-IP

Чтобы понимать сетевой обмен и круг вопросов, рассматриваемых в книге, важно представлять, что сетевые исследования и разработки прошли через три стадии развития До 1960 года, основным вопросом был "Как передавать биты по среде коммуникации эффективно и надежно?". Результаты включают разработку теории информации, теоремы Котельникова и других идей, которые в совокупности называют обработкой сигналов. От начала и до середины 60-х внимание было сконцентрировано на пакетной коммутации и основным вопросом стал: "Как передавать пакеты по среде коммуникации эффективно и надежно?" . Результатами этого этапа стали разработка технологий пакетной коммутации, локальных вычислительных сетей и статистический анализ времени передачи пакетов по сети в зависимости от загрузки. Приблизительно с середины 70-х и до нынешнего времени самым главным направлением стали сетевые архитектуры и вопрос "Как обеспечить средства взаимодействия взаимосвязанных сетей?". Результатами последнего этапа стала разработка технологий межсетевого обмена, многоуровневых моделей протоколов, дейтаграммных и потоковых транспортных средств и парадигмы взаимодействия клиент-сервер.

Введение
Одной из главных идей, лежащих в основе TCP/IP и вынесенной в название книги, является межсетевой обмен. Мощь коммуникационной системы напрямую связана с числом сущностей в этой системе. Телефонная сеть очень полезна, так как (почти) все телефоны находятся в одной сети(по крайней мере, так кажется пользователям). Системы компьютерного взаимодействия и сети в настоящее время отделены друг от друга и фрагментированы. Цель взаимного соединения и взаимодействия для создания одной мощной компьютерной коммуникационной сети являлась основной при проектировании TCP/IP.

Необходимость Интернета.
Передача данных стала фундаментальной частью вычислений. Сети, разбросанные по всему миру, собирают данные о таких разных предметах, как атмосферные условия, производство продуктов и воздушных перевозках. Группы создают электронные справочные списки, которые позволяют им получать информацию, интересную всем. Любители обмениваются программами для их домашних компьютеров.

Интернет TCP/IP
Средства Интернета
Средства Интернета прикладного уровня.
Средства Интернета прикладного уровня. - 2
Средства Интернета сетевого уровня.
Средства Интернета сетевого уровня. - 2
История создания Интернета
История создания Интернета - 2
История создания Интернета - 3
Группа Активности Интернета(IAB).

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

Технология Ethernet
Технология Ethernet - 2
Технология Ethernet - 3
Свойства Ethernet'а
Обнаружение коллизий и восстановление
Пропускная способность Ethernet'а
Вариации Ethernet'а
Адресация Ethernet'а
Формат кадра Ethernet'а
Мосты(bridges) и их важность

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

Взаимодействие на прикладном уровне
Взаимодействие на сетевом уровне
Взаимодействие на сетевом уровне - 2
Свойства объединенной сети(интернета)
Архитектура Интернета
Соединение через IP-шлюзы(маршрутизаторы)
Взгляд пользователя
Все сети равны
Вопросы, которые остались без ответа
Итоги

Универсальные идентификаторы
Предыдущая глава определила интернет TCP/IP как виртуальную сеть, созданную в результате соединения физических сетей шлюзами. Эта глава описывает адресацию, существенный компонент, который помогает программному обеспечению TCP/IP скрывать детали физических сетей и создавать впечатление об интернете как о единой сущности.

Универсальные идентификаторы
Три основных класса IP-адресов
Адреса описывают сетевые соединения
Сетевые и широковещательные адреса
Ограниченное широковещание
Интерпретация нуля как символа "это"
Групповая адресация
Недостатки адресации Интернета
Недостатки адресации Интернета - 2
Точечная(dotted) десятичная нотация

Проблема разрешения адресов
Рассмотрим две машины А и В, которые присоединены к одной физической сети. Каждая из них имеет назначенный IP-адрес Ia и Ib, а также физический адрес Pa и Pb. Нашей целью является разработка низкоуровневого программного обеспечения, которое скрывало бы физические адреса и позволяло бы программам более высокого уровня работать только с межсетевыми адресами. Тем не менее, в конечном счете взаимодействие реализуется физическими сетями, использующими какую-либо схему физических адресов.

Проблема разрешения адресов
Два типа физических адресов
Разрешение с помощью прямого отображения
Разрешение - динамическое связывание
Кэш разрешения адресов
Уточнение ARP
Реализация ARP
Реализация ARP - 2
Инкапсуляция и идентификация ARP
Формат протокола ARP

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

Протокол обратного разрешения адресов
Протокол обратного разрешения адресов - 2
Повторение транзакций RARP
Основные и дублирующие серверы RARP.
Итоги
Для дальнейшего изучения

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

Архитектура Интернета и его философия
Понятие ненадежной доставки
Система доставки без установления соединения
Цель межсетевого протокола
Межсетевая дейтаграмма
Формат дейтаграммы
Тип сервиса для дейтаграммы и приоритет
Инкапсуляция дейтаграмм
Размер дейтаграммы, сетевая МЕП(MTU
Размер дейтаграммы, сетевая МЕП(MTU) - 2

Маршрутизация в Интернете
Эта глава добавляет к описанию средства без установления соединения описание того, как шлюзы маршрутизируют IP-дейтаграммы и доставляют их к месту назначения. Можно сказать, что формат дейтаграммы из главы 7 характеризует статические аспекты Межсетевого Протокола. Описание маршрутизации в этой главе характеризует его операционные аспекты. Следующая глава завершит рассмотрение нами IP описанием того, как обрабатываются ошибки; последующие главы покажут, как другие протоколы используют его для реализации средств более высокого уровня.

Прямая и косвенная доставка
Доставка дейтаграммы по одной сети
Косвенная маршрутизация
IP-маршрутизация на основе таблиц.
IP-маршрутизация на основе таблиц. - 2
IP-маршрутизация на основе таблиц. - 3
Маршруты по умолчанию
Маршруты, специфичные для ГВМ
Итоговый алгоритм
Алгоритм:

Межсетевой протокол управляющих сообщений
Если шлюз не может маршрутизировать или доставить дейтаграмму, или если шлюз обнаружил необычные условия при работе, такие как переполнение сети, влияющие на его способность отправлять дейтаграммы, ему нужно сообщить первоначальному источнику, что требуется предпринять действия для решения возникшей проблемы. Эта глава рассматривает механизм, используемый шлюзами и ГВМ для передачи управляющей информации и информации об ошибках.

Доставка сообщения ICMP
Формат сообщения ICMP
Тестирование достижимости назначения
Формат сообщения запроса эха и ответа эха
Сообщения о недостижимости назначения
Сообщения о недостижимости назначения - 2
Управление потоком дейтаграмм и переполнение
Формат подавления источника
Запросы изменения маршрута от шлюзов
Запросы изменения маршрута от шлюзов - 2

Необходимость нескольких протоколов
Эта глава рассмотрит общую структуру программного обеспечения, находящегося в шлюзах и ГВМ, которое решает задачу сетевого взаимодействия. Она опишет общий принцип разделения на уровни, покажет, как это разделение делает программное обеспечение Межсетевого Протокола легче для понимания и построения, и проследит путь дейтаграмм через протокольное программное обеспечение, который они проходят при передаче через интернет TCP/IP.

Необходимость нескольких протоколов
Необходимость нескольких протоколов - 2
Концептуальные уровни протокольного ПО
Концептуальные уровни протокольного ПО - 2
Возможности уровней
Семиуровневая справочная модель ВОС
Х.25 МККТТ и его связь с моделью ВОС
Х.25 МККТТ и его связь с моделью ВОС - 2
Х.25 МККТТ и его связь с моделью ВОС - 3
Модель уровней Интернета TCP/IP

Определение окончательного места назначения.
Эта глава дополняет описание стека протоколов TCP/IP и описывает механизм, котоpый позволяет различать несколько получателей на данном хост-компьютере, позволяя нескольким работающим на одном компьютере программам посылать и получать дейтаграммы независимо дpуг от дpуга.

Определение окончательного места назначения.
Протокол пользовательских датаграмм (UDP)
Фоpмат UDP-сообщений
Псевдо-заголовок UDP.
Инкапсуляция UDP и разделение протоколов на
Разделение на уpовни и вычисление UDP.
Мультиплексиpование, демультиплексиpование
Заpезеpвиpованные и свободные номеpа UDP.
Резюме.
Для дальнейшего изучения

Ipsysctl tutorial 1.0.4

Этот документ предназначен для всех, кто стремится расширить свои познания как операционной системы Linux в целом, так и TCP/IP в частности. Для понимания этого документа вы должны обладать хорошими знаниями о TCP/IP, вы должны знать -- что такое заголовок пакета и из каких частей он состоит. Вам так же понадобится понимание принципов маршрутизации и основы построения сетей на базе TCP/IP.
Этот документ не предназначен для новичков в Linux, но едва ли это будет серьезным ограничением, если вы испытываете определенные потребности в изучении приводимого здесь материала. Одно лишь замечание -- перед внесением изменений в настройки убедитесь на 100% в том, что достаточно четко представляете себе, что именно вы делаете, поскольку некоторые изменения могут привести к весьма неожиданным результатам.
Этот документ рекомендуется всем, кто интересуется компьютерами и компьютерными сетями. Здесь вы найдете основые сведения о различных переменных, доступных через интерфейс ipsysctl, это поможет вам продвинуться вперед в понимании того, для чего предназначена каждая из них.

Предисловие
Я приступил к работе над этим документом в надежде на то, что он поможет вам понять настройки IP (от англ. Internet Protocol -- Межсетевой Протокол, прим. перев), предоставляемые ядром Linux 2.4. Этим руководством я надеюсь дать необходимые знания, которые помогут вам изменять настройки ядра "на лету". Часть настроек может быть использована для увеличения производительности, а так же для повышения уровня безопасности. В этом документе не будут обсуждаться все возможности, которые заключает в себе механизм управления системой -- sysctl, здесь мы сосредоточим все свое внимание на управлении сетевой подсистемой.

Виртуальные файловые системы
Файловая система /proc -- это виртуальная файловая система, которой не существует в действительности, иначе как в "голове" ядра. Файловая системв /proc -- это особенность ядра Linux. Она может присутствовать и в других операционных системах, но с иной функциональностью и другим предназначением.

Виртуальные файловые системы
Файловая система /proc
Краткое описание файловой системы /proc
Краткое описание файловой системы /proc - 2

Как произвести запись в переменные
Информация в переменные ipsysctl может заноситься двумя способами, которые обусловливают два совершенно различных метода. Первый из них -- с помощью команды sysctl, которая имеется в большинстве современных дистрибутивов. Второй способ -- посредством файловой системы /proc, которая должна иметься в любом дистрибутиве Linux, в котором ядро собрано с поддержкой этой файловой системы.

С помощью sysctl
С помощью файловой системы /proc

Переменные IPv4
В этой главе будут рассмотрены все переменные IPv4, которые доступны через интерфейс sysctl или /proc. Здесь вы найдете описание каждой переменной, за что она отвечает, значение по-умолчанию и, если это возможно, набор допустимых значений. Мы не будем углубляться в дискуссию -- почему та или иная переменная должна быть изменена, если на это не будет особых причин. Структура этой главы отражает структуру каталога ipv4

Переменные IP
Ip_default_ttl
Ip_dynaddr
Ip_forward
Ip_local_port_range
Ip_no_pmtu_disc
Ip_nonlocal_bind
Ipfrag_high_thresh
Ipfrag_low_thresh
Ipfrag_time

Тики
"Тики" -- это отрезки времени, используемые ядром Linux. Это понятие базируется на константе HZ, определение которой вы найдете в /usr/include/asm/param.h. Величина этой константы различна для разных аппаратных платформ. Так например, для архитектуры i386 один "тик" равен 1/100 секунды, а для платформа Alpha -- 1/1024 секунды. Полный список соответствий аппаратных платформ и количество "тиков", укладывающихся в 1 секунду, приведен ниже.

Приложение B. Ссылки
Приложение C. Хронология
Приложение D. GNU Free Documentation License
PREAMBLE
APPLICABILITY AND DEFINITIONS
VERBATIM COPYING
COPYING IN QUANTITY
MODIFICATIONS
MODIFICATIONS - 2
COMBINING DOCUMENTS

Введение в IP сети

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

Сетевой уровень и модель OSI
Физический уровень
Канальный уровень
Сетевой уровень
Транспортный уровень
Сеансовый уровень
Уровень представления
Прикладной уровень
Функции сетевого уровня
Функции сетевого уровня - 2


Теория Фибоначчи - перейти
Числа Фибоначчи - перейти
Инструменты Фибоначчи - перейти
Торговля с Фибо и ДиНаполи - перейти
Теория Эллиотта - перейти
Теория Доу - перейти
Волны Эллиотта - перейти
Волновой анализ - перейти
Основы реляционных баз данных - перейти
Основы SQL - перейти
Компоненты SQL - перейти
Создание и поддержка простой базы данных - перейти
Создание многотабличной реляционной БД - перейти
Манипуляции данными из базы - перейти
Определение значений - перейти