Виклики віддалених процедур (rpc)
У багатьох випадках взаємодія процесів носить характер «клієнт-сервер». Один з процесів ( «клієнт») запитує в іншого процесу ( «сервера») НЕ-яку послугу (сервіс) і не продовжує своє виконання до тих пір, поки ця послуга не буде виконана (і поки процес-клієнт не отримає відповідні результати) . Видно, що семантично такий режим взаємодії еквівалент-тен викликом процедури. Звідси і відповідну назву. Крім цього, ОС UNIXпо своєї ідеології ідеально підходить для того, щоб бути мережевою операційною системою. І на її основі можна створювати розподілені системи і організовувати розподілені обчислення. Властивості переносимості позволя-ють створювати «операційно однорідні» мережі, що включають різнорідні комп-ютер. Однак залишається проблема різного уявлення даних в комп'ютерах різної архітектури. Тому однією з основних ідей RPC є автомати-чеський забезпечення перетворення форматів даних при взаємодії про-процесів, що виконуються на різнорідних комп'ютерах.
Реалізація технології викликів віддалених процедур (remoteprocedurecall-RPC) досить складна, оскільки цей механізм повинен забезпечити роботу взаємодіючих процесів, які знаходяться на різних комп'ютерах. Якщо в разі звернення до процедури, розташованої на тому ж комп'ютері, процес спілкується з нею через стек або загальні області пам'яті, то в разі віддаленого виклику передача параметрів процедурі перетворюється в передачу запиту по мережі. Відповідно, і отримання результату так само здійснюється за допомогою використання мережевих механізмів.
Віддалений виклик процедур включає наступні кроки [70]:
процес-клієнт здійснює локальний виклик процедури, яку називаючи-ють «заглушкою» (stub). Завдання цього модуля-заглушки - прийняти аргументи, перетворити їх в стандартну форму і сформувати мережевий запит. Упа-кування аргументів і створення мережевого запиту називається складанням (marshal-ling);
мережевий запит пересилається на віддалену систему, де відповідний мо-дуль чекає такий запит і при його отриманні витягує параметри виклику процедури (unmarshalling), а потім передає їх серверу віддаленої процедури. Після виконання здійснюється зворотна передача.
Операційна сістемаLinux
Linux- це сучасна POSIX-сумісна і UNIX-подібна операційна система для персональних комп'ютерів і робочих станцій.
Linux був створений за допомогою багатьох UNIX-програмістів і ентузіастів з Ін-тернета. До даного проекту добровільно долучилися ті, хто має достатньо практики і здатності розвивати систему. Більшість програм Linux розроб-ботан в рамках проекту GNUізFreeSoftwareFoundationв Кембриджі, Массачусетс. Але в нього внесли лепту також програмісти всього світу.
Спочатку Linux створювався як «саморобна» UNIX-подібна реалізація для ПК типу IBMPCс процесором i80386. Однак Linux став настільки популярний і його нині підтримує таку велику кількість компаній, що в даний час є реалізація цієї ОС практично для всіх типів процесорів і комп'ютерів на їх основі. На базі ОС Linux створюються і вбудовані системи, і суперкомп'ютери. Система підтримує кластеризацію і більшість сучасних інтерфейсів і технологій.
Linux підтримує більшість властивостей, властивих іншим реалізаціям UNIX, плюс ряд тих, яких більше ніде немає. Тому цей розділ можна вважати лише поверхневим оглядом характеристик ядра Linux.
Linux - це повноцінна багатозадачна розрахована на багато користувачів операційна система (точно так само, як і всі інші версії UNIX). Це означає, що одночасно багато користувачів можуть працювати на одній машині, одночасно виконуючи багато програм. Linux достатньо добре сумісний з рядом стандартів дляUNIX (наскільки можна говорити про стандартізацііUNIX) на рівні вихідних текстів, включаяIEEEPOSIX.l, SystemVіBSD. Така совмести-ність враховувалася при його створенні. Більшість вільно розповсюджуваних по мережі Інтернет програм дляUNIXможет бути відкомпілювати для LINUX практично без особливих змін. Крім того, всі вихідні тексти для Linux, включаючи ядро, драйвери пристроїв, бібліотеки, призначені для користувача програми та інструментальні засоби поширюються вільно. Інші специфічні внутрішні риси Linux включають контроль робіт по стандартуPOSIX (викорис-зуемое оболонками, такими какcshіbash), псевдотермінали (pty), підтримку національних і стандартних клавіатур динамічно завантажуються драйвера-ми клавіатур.
Linux підтримує різні типи файлових систем для зберігання даних. Деякі файлові системи, такі як файлова система ext2fs, були створені спеціально для Linux. Підтримуються також інші типи файлових систем, напрімерMinix-1 іXenix. Реалізована також система управління файлами на основеFAT, що дозволяє безпосередньо звертатися до файлів, які знаходять-ся в розділах з цієї файлової системою. Підтримується і файлова сістемаISO9660CD-ROMдля роботи з діскаміCD-ROM. Є системи управ-ня файлами і на томах сHPFSіNTFS, правда, вони працюють тільки на чте-ня файлів. Створені варіанти системи управління файлами і для доступу кFAT32.
Linux, як і всі UNIX-системи, забезпечує повний набір протоколів стека TCP / IP для мережевої роботи. Це включає драйвери пристроїв для багатьох популярних мережевих адаптерів технологііEthernet, протоколиSLIP (seriallineInternetprotocol, що забезпечує доступ по TCP / IP при послідовному со-єднанні), PLIP (parallellineInternetprotocol), PPP (point-to-pointprotocol), NFS (networkfilesystem) і т. Д . Підтримується весь спектр клієнтів і послуг TCP / IP, таких какFTP, telnet, NNTPіSMTP. Дуже часто на комп'ютерах, працюю-чих під управлінням Linux, реалізують DNS-сервер, WWW-сервери (Apache), фаєрволи для захисту локальних мереж при роботі в Інтернеті, поштові сервери, серверDHCP.
Ядро Linux відразу було створено з урахуванням можливостей захищеного режиму процесорів Intel80386 і 80486. Зокрема, Linux використовує парадигму опису пам'яті в захищеному режимі і інші нові властивості процесорів. На відміну від старих версійUNIX, в яких завдання вивантажувалися в зовнішню пам'ять на магнітних дисках цілком, ядро Linux підтримує завантаження тільки потрібних сторінок. Тобто з диска в пам'ять завантажуються ті сегменти програми, які дійсно використовуються. Можливе використання однієї сторінки, фізично один раз завантаженої в пам'ять, кількома виконуваними програмами, тобто реєнтерабельним коду, притаманна всім UNIX-системам, збереглася. В даний час є ядра для цієї системи, оптимізовані для роботи з процессораміIntelіAMDпоследнего покоління, хоча основні архі-тектурние особливості захищеного режиму роботи змінилися мало.
Ядро також підтримує універсальний пул пам'яті для користувальницьких про-грам і дискового кеша. При цьому для кешування може використовуватися вся вільна пам'ять, і навпаки, кеш зменшується при роботі великих програм. Цей механізм агресивного кешування дозволяє збільшити продуктивність системи.
Виконувані програми використовують динамічно зв'язуються бібліотеки, тобто виконувані програми можуть спільно використовувати бібліотечну про-граму, представлену одним фізичним файлом на диску. Це дозволяє виконуваних файлів займати менше місця на диску, особливо тим, які багаторазово використовують бібліотечні функції. Є також статичні зв'язуються бібліотеки для тих, хто бажає користуватися налагодженням на рівні об'єктних кодів або мати «повні» виконуються програми, які не злидні-ються в поділюваних бібліотеках. У Linux колективні бібліотеки динамічно зв'язуються під час виконання, дозволяючи програмісту замінювати бібліотеч-ні модулі своїми власними.