- •Розділ 1. Загальні питання вивчення дисципліни
- •1.1. Вступ. Місце та значення вивчення обчислювальних мереж
- •Розділ 2. Комп’ютерні системи та обчислювальні мережі.
- •2.1. Комутаційне забезпечення персональних комп’ютерів.
- •2.1.1. Принципи побудови сучасних комп’ютерних мереж
- •2.1.2 Системи керування потоком
- •2.1.3 Системи керування інтерфейсом користувача
- •2.2. Глобальні комп'ютерні мережі і пакетні мережі.
- •2.2.1 Модель взаємодії відкритих систем
- •2.2.2 Багаторівневе представлення протоколів
- •2.2.3 Можливості X.25
- •2.2.4 Процедура laвv та процедури пакетного рівня.[1]
- •2.2.5 Стандарти 802.Х
- •2.2.6 Мережі Frame Relay
- •2.3. Локальні обчислювальні мережі.
- •2.3.1. Основні поняття та характеристики комп’ютерних систем та обчислювальних мереж
- •2.3.2 Апаратні і програмні засоби обчислювальних мереж
- •2.3.3. Сучасні засоби інтеграції комп’ютерних систем
- •2.3.4 Структура локальних та глобальних комп'ютерних мереж
- •2.3.5 Основні особливості локальних обчислювальних мереж
- •2.3.6. Топологія обчислювальних мереж
- •2.4 Інтернет та інтранет
- •2.4.1 Поняття Internet
- •2.4.2 Інформаційні та комунікаційні послуги Internet
- •2.4.3 Основні етапи розвитку Internet
- •2.5. Прикладні служби Internet
- •2.5.1 Служба ftp. Протокол ftp
- •2.5.2 Служба Telnet і протокол telnet
- •2.5.3 Служба www та протокол http
- •2.5.4 Способи підключення до Internet
- •2.5.6 Протокол icmp
- •2.5.8 Віртуальна частина мережі (vpn) і використання X.25 і Frame Relay. [11]
- •3. Локальні обчислювальні мережі
- •3.1. Асинхронні модеми і інтерфейси та їх програмування.
- •3 .1.1 Неможливість безпосередньої передачі даних
- •3.1.2 Рішення проблеми передачі за допомогою модему
- •3.1.3 Інтерфейси модему
- •Аналогова модуляція
- •Методи частотної модуляції в низько швидкісних модемах
- •3.1.4 Стандарт V.21
- •Модеми типу Bell System 212а і модеми V.22
- •Характеристики і можливості модемів
- •Стиснення даних і стандарт V.42bis
- •Алгоритм lzw
- •Параметри стиснення
- •Виявлення і виправлення помилок
- •3.1.6 Протокол mnp
- •3.1.7 Стандарти комунікаційних інтерфейсів
- •3.1.8 Інтерфейси rs-232 і v24
- •Конструкція інтерфейсу
- •Приклади використання інтерфейсу rs-232
- •3.1.9 Керування асинхронним модемом
- •3.1.10 Керування потоком
- •3.1.11 Інші інтерфейси
- •3.1.12 Команди модему
- •Факс-модеми
- •Тема 3.2. Передача даних в локальних мережах.
- •3.2.1 Способи і методи передачі даних. [14]
- •3.2.2 Ущільнення. [14]
- •3.2.3 Передача немодульованих та модульованих сигналів. [14]
- •3.2.4 Характеристика мережевого програмного забезпечення NetWare [15]
- •3.2.5 Керування км (Network Managment) [16]
- •3.2.6 Технологія відкритих протоколів (Open protocol technology) [16]
- •3.2.7 Стійкість до системних помилок (System fault tolerance) [17]
- •3.2.8 Технологія файл-серверу (Fileserver technology) [18]
- •3.3. Локальні комп'ютерні мережі Ethernet, Token-Ring та fddi.
- •3.3.1. Стандарти локальних комп'ютерних мереж [2]
- •3.3.2. Модель osi [2]
- •3.3.3. Fast Ethernet: разподіл фізичного рівня, повторювачі [2]
- •3.3.5. Локальні обчислювальні мережі з передачею маркера [2]
- •3.3.6. Мережі fddi [2]
- •Розділ 4. Програмування в локальних комп'ютерних мережах.
- •4.1. Мережеві операційні системи та програмне забезпечення підтримки комп'ютерних мереж.
- •4.1.1 Еволюція ос
- •4.1.2 Структура програмних засобів комп'ютерних систем
- •4.1.3 Класифікація операційних систем
- •4.1.4 Керування комп’ютерної системи
- •Керування інтерфейсом
- •Керування потоком
- •Керування ресурсами
- •Керування процесами
- •Стани процесів
- •4.1.5 Розподілення ресурсів між процесами Виклик віддалених процедур
- •Динамічне зв'язування
- •Семантика rpc при відмовах
- •Примітиви керування процесами
- •Концепція процесу
- •Загальна характеристика
- •Керування процесами.
- •Зародження процесів
- •Керування пам'яттю.
- •4.1.7. Мережеві продукти фірми Novell.
- •Версії ос NetWare.
- •Структура NetWare і її особливості
- •Способи забезпечення відкритості і розширюваності
- •Способи забезпечення надійності
- •Засоби захисту інформації
- •4.1.8 Операційні системи Windows'х
- •Основні відмінності w' 98
- •Операційні системи w' nt
- •4.2. Програмування обміну інформацією по протоколу ipx.
- •4.2.1 Основи програмування в комп'ютерних мережах. Визначення в комп’ютерній системі присутності мережевих пристроїв та присутності драйверів.[19]
- •4.2.2 Визначення в комп’ютерній мережі присутності мережевих пристроїв та присутності драйверів. [19]
- •4.2.3 Прийом і передача пакетів даних [19]
- •4.2.4 Мережеві функції ipx.
- •Тема 4.3. Програмування обміну інформацією по протоколу spx
- •4.3.1. Пакети даних в протоколі spx [20]
- •4.3.2. Робота з файлами. Програма роботи з файлами [20]
- •4.4. Програмування роботи з об’єктами, діагностика обчислювальних мереж.
- •4.4.1 Робота з об’єктами. [20]
- •4.4.2. Семафори
- •4.4.3 Обслуговування Транзакцій
- •4.4.4. Робоча станція Novell NetWare [20]
- •Розділ 5. Цифрові обчислювальні мережі.
- •5.1. Мережа isdn. [23]
- •5.1.1 Загальні відомості про isdn
- •5.1.2 Області застосування, основні та додаткові послуги [24]
- •5.1.3 Переваги isdn
- •5.1.4 Концепція isdn
- •5.1.5. З’єднання з мережею Internet через isdn
- •5.2.1 Основи доступу до морежі Internet через isdn
- •5.1.6 Пристрої isdn
- •5.1.7 Телефонні послуги isdn і мережа Інтернет
- •5.1.8 Апаратні і програмні засоби для отримання доступу до мережі Інтернет через isdn
- •5.2. Мережа atm
- •5.2.1 Концепція технології atm [26]
- •5.2.2 Архітектура та маршрутизація в atm. Служб (QoS).[25],[26]
- •5.2.3 Емуляція локальної мережі: клієнт lane, сервер lane, bus [25]
- •5.2.4 Превага технології atm відносно Ethernet, Token-Ring, fddi [25]
- •5.2.5 Підключення до мережі
- •5.3 Бездротові мережі
- •5.3.1 Мобільний зв'язок [27]
- •5.3.2 Взаємодія компонентів мобільного зв’язку [2]
- •5.3.3 Доступ в Інтернет, протокол wap [2]
- •5.3.4 Методи передачі сигналу [2]
- •5.3.5 Стандарт локальних мереж ieee 802.11 [2]
- •5.3.6 Служби та застосування бездротових обчислювальних мереж [2]
- •Розділ 6 Проектування і адміністрування комп’ютерних мережах.
- •Тема 6.1 Вимоги до комп’ютерних мереж та методи проектування.
- •6.1.1 Вимоги до комп’ютерних мереж: [2]
- •6.1.2 Мережеві пристрої
- •6.1.3 Питання адміністрування комп’ютерної мережі
- •6.1.4 Програмні аналізатори комп’ютерної мережі
- •6.2 Стандарти адміністрування обчислювальних мереж
- •6.2.1 Віддалений моніторинг
- •Додатки а. Перлік практичних занять
- •Б. Перлік лабораторних робіт
- •В. Завдання для самостійного вивчення (самостійна робота)
- •Г. Модульні контрольні роботи
Стани процесів
В багатозадачній системі процес може знаходитися в одному з трьох основних станів: ВИКОНАННЯ - активний стан процесу, під час якого процес володіє всіма необхідними ресурсами і безпосередньо виконується МП; ОЧІКУВАННЯ - пасивний стан процесу, процес заблокований, він не може виконуватися по своїх внутрішніх причинах, він чекає виконання деякої події, наприклад, завершення операції вводу/виводу, одержання повідомлення від іншого процесу, звільнення якого-небудь необхідного йому ресурсу; ГОТОВНІСТЬ - також пасивний стан процесу, але в цьому випадку процес заблокований у зв'язку з зовнішніми стосовно нього обставинами: процес має всі необхідні для нього ресурси, він готовий виконуватися, однак МП зайнятий виконанням іншого процесу.
У ході життєвого циклу кожен процес переходить з одного стану в інший відповідно до алгоритму планування процесів, реалізованим у даній ОС. Типовий граф станів процесу показаний на рис. 4.2.
Прийнятий
|
|
|
|
|
|
|
|
Помилка
Завершення вводу/виводу Очікування вводу/виводу Вихід
Рис 4.2 Граф станів процесу в багатозадачному середовищі
У стані ВИКОНАННЯ в однопроцесорній системі може знаходитися тільки один процес, а в кожному зі станів ОЧІКУВАННЯ і ГОТОВНІСТЬ - кілька процесів, ці процеси утворять черги відповідно очікуючих і готових процесів. Життєвий цикл процесу починається зі стану ГОТОВНІСТЬ, коли процес готовий до виконання і чекає своєї черги. При активізації процес переходить у стан ВИКОНАННЯ і знаходиться в ньому доти, доки або він сам звільнить МП, перейшовши в стан ОЧІКУВАННЯ якої-небудь події, або буде насильно "витиснутий" із процесора, наприклад, унаслідок вичерпання відведеного даному процесу кванта процесорного часу. В останньому випадку процес повертається в стан ГОТОВНІСТЬ. У цей же стан процес переходить зі стану ОЧІКУВАННЯ, після того, як очікуване подія відбудеться.
Отже, для однієї програми можуть бути створені декілька процесів в тому випадку, якщо за допомогою однієї програми в ЦП виконується декілька не співпадаючих послідовностей команд. За час існування процес багато разів змінює свій стан. Розрізняють наступні стани процесу: новий (процес тільки що створений); виконуваний (команди програми виконуються в МП); очікуваний (процес чекає завершення деякого випадку, найчастіші операції вводу/виводу); готовий (процес чекає звільнення МП); завершений (процес завершив свою роботу). Перехід з одного стану в інше не може виконуватися довільно.
Кожен процес представляється в ОС набором даних, так званою таблицею керування. У РСВ процес описується набором значень, параметрів, які характеризують його поточний стан і використовуваних ОС для керування проходження процесу через комп'ютер.
4.1.5 Розподілення ресурсів між процесами Виклик віддалених процедур
Виклик віддалених процедур (Remote procedure call, RPC) - протокол, якийо дозволяє програмі, запущеній на одному комп'ютері бути викликаною з іншого комп'ютераі без написання безпосередньо коду для цієї операції.
Ідея виклику віддалених процедур (Remote Procedure Call - RPC) полягає у розширенні добре відомого і зрозумілого механізму передачі керування і даних усередині програми, що виконується на одному комп'ютеру, на передачу керування і даних через КМ. Засоби віддаленого виклику процедур призначені для полегшення організації розподілених обчислень. Найбільша ефективність використання RPC досягається в тих програмах, в яких існує інтерактивний зв'язок між віддаленими компонентами з невеликим часом відповідей і відносно малою кількістю переданих даних. Такі програми називаються RPC-орієнтованими.
Існують багато технологій, що забезпечують RPC, такі як: Sun RPC (бінарний протокол на базі TCP та UDP); Net Remoting (бінарний протокол на базі TCP, UDP, HTTP); XML-RPC (текстовий протокол на базі HTTP); SOAP — Simple Object Access Protocol (текстовий протокол на базі HTTP); Java RMI — Java Remote Method Invocation; JSON-RPC JavaScript Object Remote Procedure Calls (текстовий, на базі HTTP).
Характерними рисами виклику локальних процедур є: асиметричність, де одна з взаємодіючих сторін є ініціатором; синхронність, де виконання викликаючої процедури призупиняється з моменту видачі запиту і відновлюється тільки після повернення з визваної процедури.
Реалізація віддалених викликів істотно складніше реалізації викликів локальних процедур. Почнемо з того, що оскільки викликаюча і викликана процедури виконуються на різних комп'ютерах, то вони мають різні адресні простори, і це створює проблеми при передачі параметрів і результатів, особливо якщо комп'ютери не ідентичні. Так як RPC не може розраховувати на розподілену пам'ять, то це означає, що параметри RPC не повинні містити посилань на нестекову пам'ять і значення параметрів повинні копіюватися з одного комп'ютера на інший.
Але в реалізації RPC беруть участь як мінімум два процеси — по одному в кожному комп'ютері. Якщо один з них аварійно завершиться, то виникають такі ситуації: при помильці викликаної віддалено процедури стануть «осиротілими», а при помилковому завершенні віддалених процедур стануть «непотрібними» викликаючі процедури, які будуть безрезультатно чекати відповіді від віддалених процедур.
Також, існує ряд проблем, пов'язаних з неоднорідністю мов програмування і ОС: структури даних і структури виклику процедур, підтримувані в будь-якому однією мовою програмування, не підтримуються точно так само у всіх інших мовах.
Ці та інші проблеми вирішує технологія RPC, що лежить в основі багатьох розподілених ОС, наприклад Plan 9.
Розглянемо базові операції RPC.
Спочатку розглянемо виконання виклику локальної процедури у автономному комп'ютері. Нехай це, наприклад, буде системний виклик: count = read (fd, buf, nbytes); де fd - ціле число, buf - масив символів, nbytes - ціле число.
Щоб здійснити виклик, викликаюча процедура (П1) записує параметри в стек у зворотному порядку. Після того, як виклик read виконаний, він поміщає значення, які повертаються в регістр, переміщує адресу повернення і повертає керування викликаючій процедурі, яка вибирає параметри з стека, повертаючи його в початковий стан. Відомо, що в мові С параметри можуть викликатися по посиланню (by name) або за значенням (by value). По відношенню до викликаючої процедури параметри-значення є ініціалізованими локальними змінними. Викликана процедура може змінити їх, і це не вплине на значення оригіналів цих змінних в викликаючій процедурі. Якщо в визвану процедуру передається покажчик на змінну, то зміна значення цієї змінної визваної процедури тягне зміну значення цієї змінної і для викликаючої процедури. Цей факт дуже істотний для RPC.
Існує також інший механізм передачі параметрів, який не використовується в мові С. Він називається call-by-copy/restore і полягає в необхідності копіювання викликаючою програмою змінних в стек у вигляді значень, а потім копіювання назад після виконання виклику поверх оригінальних значень викликаючої процедури.
Рішення про те, який механізм передачі параметрів використовувати, приймається розробниками мови. Іноді це залежить від типу переданих даних. У мові С, наприклад, цілі та інші скалярні дані завжди передаються за значенням, а масиви - по посиланню.
Ідея, покладена в основу RPC, полягає в тому, щоб зробити виклик віддаленої процедури по можливості схожим до виклику локальної процедури. Іншими словами - зробити RPC прозорим: викликаючій процедурі не потрібно знати, що викликається процедура знаходиться на іншому комп'ютері, і навпаки.
RPC досягає прозорості наступним шляхом. Коли викликана процедура дійсно є віддалена, в бібліотеку поміщається замість локальної процедури інша версія процедури, яка називається клієнтським стабом (stub - заглушка). Подібно оригінальної процедурі, стаб викликається з використанням викликаючої послідовності, так само відбувається переривання при зверненні до ядра. Тільки на відміну від оригінальної процедури він не поміщає параметри в регістри і не запитує у ядра дані, замість цього він формує повідомлення для відправки ядру віддаленому комп'ютеру.
4.3.2 Етапи виконання RPC
Після того, як клієнтський стаб був викликаний програмою-клієнтом, його першим завданням є заповнення буфера відправлені повідомленням. У деяких системах клієнтський стаб має єдиний буфер фіксованої довжини, якийо заповнюється кожного разу з самого початку при вступі кожного нового запиту. В інших системах буфер повідомлення являє собою пул буферів для окремих полів повідомлення, причому деякі з цих буферів вже заповнені. Цей метод особливо підходить для тих випадків, коли пакет має формат, який складається з великої кількості полів, але значення багатьох з цих полів не змінюються від виклику до виклику.
Потім параметри повинні бути перетворені у відповідний формат і вставлені в буфер повідомлення. До цього моменту повідомлення готове до передачі, тому виконується переривання за викликом ядра.
Коли ядро отримує керування, воно перемикає контексти, зберігає регістри МП і карту пам'яті (дескриптори сторінок), встановлює нову карту пам'яті, яка буде використовуватися для роботи в режимі ядра. Оскільки контексти ядра і користувача розрізняються, ядро має точно скопіювати повідомлення в свій власний адресний простір, так, щоб мати до нього доступ, запам'ятати адресу призначення (а, можливо, і інші поля заголовка), а також воно має передати його мережевому інтерфейсу. На цьому завершується робота на клієнтській стороні. Включається таймер передачі, і ядро може або виконувати циклічне опитування наявності відповіді, або передати керування планувальником, який обере будь-який інший процес на виконання. У першому випадку прискорюється виконання запиту, але відсутнє мультипрограмування.
На стороні сервера біти, що надходять, поміщаються приймаючої апаратурою або у вбудований буфер, або в ОП. Коли вся інформація буде отримана, генерується переривання. Обробник переривання перевіряє правильність даних пакету і визначає, якому стабу слід їх передати. Якщо жоден із стабів не очікує цей пакет, обробник повинен помістити його в буфер або взагалі відмовитися від нього. Якщо є очікуючий стаб, то повідомлення копіюється йому. Нарешті, виконується переключення контекстів, в результаті чого відновлюються регістри і карта пам'яті, приймаючи ті значення, які вони мали в момент, коли стаб зробив виклик receive.
Далір починає роботу серверний стаб, який розпаковує параметри і поміщає їх відповідним чином в стек. Коли все готово, виконується виклик сервера. Після виконання процедури сервер передає результати клієнту. Для цього виконуються всі описані вище етапи, тільки в зворотному порядку.
Існує 14 таких етапів виконання RPC:
Клієнт 1. Виклик стабу 2. Підготувати буфер 3. Упакувати параметри 4. Заповнити поле заголовка 5. Обчислити контрольну суму в повідомленні 6. Переривання до ядра 7. Черга пакету на виконання 8. Передача повідомлення контролеру по шині QBUS 9. Час передачі по КМ Ethernet. Сервер 10. Отримати пакет від контролера 11. Процедура обробки переривання 12. Обчислення контрольної суми 13. Переключення контексту в простір користувача 14. Виконання серверного стабу
