Теория и практика программирования на Си в Unix

       

вот цель этой книги, задуманной


100 % практики - вот цель этой книги, задуманной как помощь разработчикам и программистам в решении задач распределенной обработки научных данных в системе UNIX. Намеренно сосредоточившись на уровне средств, позволяющих обеспечить решение этих задач, данное пособие рассматривает только понятия и внутренние механизмы, необходимые для качественной реализации программ распределенной обработки данных. Авторы стремились создать не справочник, а вводное пособие, в котором значительная часть посвящена примерам. Распределенная обработка данных уже применяется во многих областях. Системы все в большей степени объединяются в сети; микро-компьютеры и рабочие станции постепенно вытесняют пассивные терминалы. Основной целью распределенной обработки данных является максимальное использование возможностей каждой машины. Пособие ограничивается услугами, имеющимися в области двух существующих стандартов: операционной системы UNIX и протоколов UDP/TCP/IP. Данное ограничение, однако, является не слишком строгим, так как и другие операционные системы и сетевые протоколы располагают подобными же средствами, в частности, протоколы OSI. В данном пособии вкратце напоминаются основные элементы систем UNIX и протоколов TCP/IP. Для понимания примеров необходимы хорошие навыки чтения программ, написанных на языке Си. Данная книга, в основном ориентирована на решение научных задач, хотя в ней и дается краткое описание средств распреде- ленной работы с базами данных. В конце каждой главы указана литература, где поднятые в кни- ге проблемы изложены более подробно; в конце книги данная ли- тература собрана в алфавитном порядке.


Минувшее десятилетие характеризовалось быстрым развитием персональной вычислительной техники, рождением мира рабочих станций и бурным развитием сетей, позволяющих осуществлять обмен информацией между компьютерами. ОС UNIX появилась как операционная система, используемая на рабочих станциях. Кроме того, эта система может использоваться практически на всех компьютерах, от микро-компьютеров типа PC (Personal Computer) и Macintosh до супер-ЭВМ семейств Cray и IBM. Успех UNIX повлек за собой успех TCP/IP в качестве протокола сетевого обмена. Несмотря на постепенное внедрение стандартизованных протоколов OSI, протокол TCP/IP все еще достаточно широко применяется, в том числе и при работе в отличных от UNIX операционных системах. После краткой исторической справки в данной главе изложены основные понятия системы UNIX и протоколов TCP/IP, необходимые для правильного понимания проблемы.



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



В данной главе речь идет о взаимодействиях между процессами UNIX, в рамках одной машины (рис. 3.1.), взаимодействиях, которые мы квалифицируем как "внутрисистемные" (intra-UNIX), в отличие от связывающих несколько систем UNIX, называемых "межсистемными" (inter-UNIX) (рис. 3.2.). Действительно, модель "клиент-сервер" может быть воплощена и в виде совокупности процессов на одной машине. Мы увидим также, как осуществляется запуск удаленного процесса - этап, предшествующий межсистемным взаимодействиям. IPC (InterPprocess Communications) внутри системы делятся на две группы:
- взаимодействия, применение которых сходно с применением файлов: программные каналы и именованные программные каналы;
- взаимодействия System V: файлы сообщений, семафоры и общая память.
Здесь мы даем только краткие сведения. Мы отсылаем читателя к многочисленным изданиям, которые подробно рассматривают этот вопрос. Реализацию этих IPC можно проиллюстрировать на примере службы типа "эхо строки символов" между процессом-клиентом и процессом-сервером. Этот пример будет рассмотрен и для межсистемных IPC. Читатель увидит, как реализуется одна и та же служба как для внутренних, так и для межсистемных взаимодействий.




    Рис 3.1. Внутри системные взаимодействия

    Рис 3.2. Межсистемные взаимодействия
    Различают термин "буфер" (buffer) обозначающий область памяти, управляемую программами пользователей и термин "буфер" (tampon) обозначающий промежуточную область памяти, используемую службами ядра (буферы ввода-вывода, например). Процесс-клиент посылает серверу определенное количество буферов - buffers (содержащих символы) различного размера, а сервер посылает ему эти буфера обратно (эхо). Если необходимо, размер буферов пересылается серверу перед первой передачей. В примерах использованы отдельные функции управления ошибками, представленные в Приложении А.2. Сервер активизируется в режиме фоновой задачи:
    #serveur &
    Активизация клиента осуществляется в интерактивном режиме:



    Версия BSD 4.2. системы UNIX была первой версией, в которой TCP/IP был включен в состав ядра операционной системы, и в которой был предложен программный интерфейс этого протокола : сокеты (sockets). Сокеты, таким образом, представляют собой API (Application Program Interface), то есть интерфейс между прикладными программами и сетевыми уровнями.



    TLI ( Transport Level Interface) был введен в 1986 году фирмой AT&T вместе с системой UNIX System V Release 3.0. До TLI только сокеты могли предоставлять механизмы, необходимые для межпроцессных взаимодействий между удаленными машинами. TLI функционирует подобно сокетам, предоставляя доступ к виртуальной транспортной службе, способной адаптироваться к транспортным протоколам как OSI, так и TCP или UDP. TLI основан на применении нового системного механизма, также внедренного фирмой AT&T - STREAMS.



    Созданная в 1985 году фирмой Sun, NFS (Network File System) стала фактическим стандартом для систем управления распределенными данными.
    NFS создает общую файловую систему из файловых систем нес- кольких машин, соединенных в сеть, создавая при этом у пользо- вателя иллюзию, что он работает с одной файловой системой. Система NFS,часто используемая для связи нескольких машин в среде ОС UNIX и для включения в среду UNIX PC с помощью PC-NFS, доступна, кроме того,на машинах серий Cray,IBM,Dec ...



    Созданная в 1986 году фирмой AT&T одновременно с ОС UNIX System V Release 3, система RFS (Remote File Sharing) предс- тавляет собой средство, предназначенное для управления распре- деленными файлами. Назначение системы - обеспечить прозрачное разделение дисковых ресурсов и периферийных устройств между машинами UNIX, объединенными в локальную сеть.
    Несмотря на все усилия AT&T, RFS не получила большого расп- ространения. В настоящий момент эта система используется в SVR4 и SunOS.



    Разработанный MIT в 1985 году, X Window (сокращенно X), все чаще и чаще заявляет о себе, как о стандарте для реализации графических интерфейсов. Речь идет о продукте freeware, который, таким образом, можно получить бесплатно. Нашей целью будет дать не полное и исчерпывающее описание X Window, а лишь описать те стороны этого продукта, которые имеют отношение к функциональным возможностям и механизмам реали- зации распределенных прикладных программ. Мы ограничимся опи- санием версии X11R4,и лишь упомянем о некоторых изменениях, внесенных в версию X11R5.
    PHIGS (Programmer Hierarchical Interactive Graphic System) - был принят в качестве стандарта для трехмерной графики. PEX (PHIGS Extension to X Window) - должен позволять распределять прикладные программы, обрабатывающую трехмерную графику.



    Несмотря на то, что большинство графических станций исполь ует для внутреннего представления данных формат IEEE, ОС UNIX в настоящее время настолько широко распространена, что пересылка двоичных данных между системами часто превращается в проблему.
    Например, целое число на ЭВМ Cray состоит из 64 бит, в то время как на станциях Sun или HP целое число занимает 32 бита. Более того, даже при одинаковом двоичном представлении структуры языка Си могут быть выравнены поразному - в зависимости от компилятора архитектуры системы.
    Система XDR (eXternal Data Representation), предложенная фирмой Sun одновременно с NFS, предлагает стандарт представления данных для обмена информацией между машинами разных типов.


    Содержание раздела