Загальні принципи побудови обчислювальних мереж, в’язь комп’ютера з периферійними пристроями,
Під час створення обчислювальних мереж їх розробникам довелося вирішити багато проблем. У цьому розділі ми розглянемо лише найважливіші їх, причому у тій послідовності, у якій вони природно виникали у розвитку та вдосконалення мережевих технологій.
Механізми взаємодії комп'ютерів у мережі багато чого запозичили у схеми взаємодії комп'ютера з периферійними пристроями, тому почнемо розгляд принципів роботи мережі з цього випадку.
Для обміну даними між комп'ютером та периферійним пристроєм (ПУ) у комп'ютері передбачено зовнішній інтерфейс (рис. 1.6), тобто набір проводів, що з'єднують комп'ютер та периферійний пристрій, а також набір правил обміну інформацією з цих проводів (іноді замість терміну інтерфейс використовується термін протокол - Докладніше про ці важливі терміни ми ще поговоримо). Прикладами інтерфейсів, що використовуються в комп'ютерах, є паралельний інтерфейс Centronics, призначений, як правило, для підключення принтерів і послідовний інтерфейс RS-232C, через який підключаються миша, модем і багато інших пристроїв. Інтерфейс реалізується з боку комп'ютера сукупністю апаратних та програмних засобів: контролером ПУ та спеціальною програмою, що керує цим контролером, яку часто називають драйвером відповідного периферійного пристрою.
З боку ПУ інтерфейс найчастіше реалізується апаратним пристроєм управління, хоча зустрічаються і програмно-керовані периферійні пристрої.
Програма, що виконується процесором, може обмінюватися даними за допомогою команд вводу/виводу з будь-якими модулями, підключеними до внутрішньої шини комп'ютера, у тому числі з контролерами ПУ.
Периферійні пристрої можуть приймати від комп'ютера як дані,наприклад байти інформації, яку потрібно роздрукувати на папері, так і команди управління, у відповідь на які ПУ може виконати спеціальні дії, наприклад, перевести головку диска на необхідну доріжку або виштовхнути аркуш паперу з принтера. Периферійний пристрій використовує зовнішній інтерфейс комп'ютера як прийому інформації, а й передачі у комп'ютер, тобто обмін даними із зовнішньому інтерфейсу, зазвичай, є двунаправленным. Так, наприклад, навіть принтер, який за своєю природою є пристроєм виведення інформації, повертає до комп'ютера дані про свій стан.
Контролери ПУ приймають команди та дані від процесора у свій внутрішній буфер, який часто називається регістром або портом, потім виконують необхідні перетворення цих даних та команд відповідно до форматів, зрозумілих ПУ, і видають їх на зовнішній інтерфейс.
Розподіл обов'язків між контролером та драйвером ПУ може бути різним, але зазвичай контролер виконує набір простих команд з управління ПУ, а драйвер використовує ці команди, щоб змусити пристрій робити більш складні дії за деяким алгоритмом. Наприклад, контролер принтера може підтримувати такі елементарні команди, як «Друк символу», «Переклад рядка», «Повернення каретки» тощо. операції. Для одного й того ж контролера можна розробити різні драйвери, які керуватимуть даними ПУ по-різному – одні краще, а інші гірше – залежно від досвіду та здібностей програмістів, які їх розробили.
Мал. 1.6. Зв'язок комп'ютера з периферійним пристроєм
Окрім інформаційних біт, контролер може передаватибіт контролю парності підвищення достовірності обміну. Пристрій управління, виявивши на відповідній лінії стартовий біт, виконує підготовчі дії і починає приймати інформаційні біти, формуючи їх байт у своєму приймальному буфері. Якщо передача супроводжується бітом парності, виконується перевірка правильності передачі: при правильно виконаної передачі у відповідному регістрі пристрою управління встановлюється ознака завершення прийому інформації.
Зазвичай драйвер покладаються найскладніші функції протоколу (наприклад, підрахунок контрольної суми послідовності переданих байтів, аналіз стану периферійного пристрою, перевірка правильності виконання команди). Але навіть найпримітивніший драйвер контролера повинен підтримувати як мінімум дві операції: "Взяти дані з контролера в оперативну пам'ять" і "Передати дані з оперативної пам'яті в контролер".
Існують як спеціалізовані інтерфейси, придатні для підключення вузького класу пристроїв (наприклад, графічних моніторів високої роздільної здатності фірми Vista), так і інтерфейси загального призначення, які є стандартними і дозволяють підключати різні периферійні пристрої. Прикладом такого інтерфейсу є інтерфейс RS-232C, який підтримується багатьма терміналами, принтерами, графобудівниками, маніпуляторами типу «миша» та багатьма іншими пристроями.
У найпростішому випадку взаємодія комп'ютерів може бути реалізована за допомогою тих самих засобів, які використовуються для взаємодії комп'ютера з периферією, наприклад, через послідовний інтерфейс RS-232C. На відміну від взаємодії комп'ютера з периферійним пристроєм, коли програма працює, як правило, тільки з одного боку - з боку комп'ютера, в цьомуУ разі відбувається взаємодія двох програм, що працюють на кожному з комп'ютерів.
Програма, працюючи одному комп'ютері, неспроможна отримати безпосередній доступом до ресурсів іншого комп'ютера - його дискам, файлам, принтеру. Вона може лише «попросити» про це програму, що працює на комп'ютері, якому належать ці ресурси. Ці «прохання» виражаються у вигляді повідомлень, що передаються каналами зв'язку між комп'ютерами. Повідомлення можуть містити не тільки команди на виконання деяких дій, а й власне інформаційні дані (наприклад, вміст файлу).
Мал. 1.7. Взаємодія двох комп'ютерів
Драйвер СОМ-порту разом з контролером СОМ-порту працюють приблизно так само, як і в описаному вище випадку взаємодії ПУ з комп'ютером. Однак при цьому роль пристрою керування ПУ виконує контролер і драйвер СОМ-порту іншого комп'ютера. Разом вони забезпечують передачу кабелем між комп'ютерами одного байта інформації. (У «справжніх» локальних мережах подібні функції передачі в лінію зв'язку виконуються мережними адаптерами та його драйверами.)
Драйвер комп'ютера В періодично опитує ознаку завершення прийому, що встановлюється контролером при правильно виконаній передачі даних, і при його появі зчитує прийнятий байт з буфера контролера в оперативну пам'ять, роблячи його тим самим доступним для програм комп'ютера. У деяких випадках драйвер викликається асинхронно, по перериванням від контролера.
Таким чином, у розпорядженні програм комп'ютерів А і є засіб для передачі одного байта інформації. Але завдання, що розглядається в нашому прикладі, значно складніше, тому що потрібно передати не один байт, а певну частину заданого файлу. Усі пов'язані з цим додатковіпроблеми повинні вирішити програми вищого рівня, ніж драйвери СОМ-портів. Для визначеності назвемо такі програми комп'ютерів А і додатком А і додатком відповідно. Отже, додаток А має сформувати повідомлення-запит додатка У. У запиті необхідно вказати ім'я файлу, тип операції (у разі - читання), зміщення і розмір області файла, що містить потрібні дані.
Програмні клієнт і сервер виконують системні функції з обслуговування запитів додатків комп'ютера А на віддалений доступ до файлів комп'ютера В. Щоб програми комп'ютера могли користуватися файлами комп'ютера А, описану схему потрібно симетрично доповнити клієнтом для комп'ютера В і сервером для комп'ютера А.
Схема взаємодії клієнта та сервера з додатками та операційною системою наведена на рис. 1.8. Незважаючи на те, що ми розглянули дуже просту схему апаратного зв'язку комп'ютерів, функції програм, що забезпечують доступ до віддалених файлів, дуже схожі на функції модулів мережної операційної системи, що працює в мережі з складнішими апаратними зв'язками комп'ютерів.
Мал. 1.8. Взаємодія програмних компонентів при зв'язку двох комп'ютерів