Pthread_t – ағындар дескрипторы; pthread_attr_t – ағындардың атрибуттар жиынтығы.

POSIX стандарты ағындарды басқару келесі функциялар жиынтығымен спецификацияланады:

  1. pthread_create():ағынды құру
  2. pthread_exit(): ағынды аяқтау
  3. pthread_cancel(): ағынды болдырмау
  4. pthread_join(): келесі ағын тоқтағанға дейін ағынның орындалуын бұғатау.
  5. pthread_detach(): ағындар орын алатын ресурстарды босату pthread_attr_init(): ағындар атрибуттарының құрылымын инициализациялау
  6. pthread_attr_setdetachstate(): ағын аяталғаннан кейін ол автоматты түрде ресурстарды босатуды жүйеде көрсетеді.
  7. pthread_attr_destroy(): ағын атрибуттарын жадыдан босатады.

POSIX ағынын синхрондаудың мынандай примитивтері бар:мюьтекстер (mutexes)– семафора ұқсастықтары және шартты айнымалылар (conditional variables)

  1. pthread_mutex_init() –мюьтексті құру;
  2. pthread_mutex_destroy() – мюьютексті жою;
  3. pthread_mutex_lock() –мюьтексті аяқтау;
  4. pthread_mutex_trylock() – мюьтексті алдын-ала жабу
  5. pthread_mutex_unlock() – мюьтексті ашу;
  6. pthread_cond_init() – шартты айнымалыларды құру;
  7. pthread_cond_signal() – шартты айнымалыларды бұғаттау;
  8. pthread_cond_wait() – шартты айнымалы бойынша күту.

Си тілінде POSIX ағындарын қолдану мысалын қарастырайық .

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <pthread.h>

static void wait_thread(void)

{

time_t start_time = time(NULL);

while (time(NULL) == start_time)

{

// никаких действий, кроме занятия процессора на время до 1 с.

}

}

static void *thread_func(void *vptr_args)

{ int i;

for (i = 0; i < 20; i++) {

fputs(" b\n", stderr);

wait_thread();

}

return NULL;

}

int main(void)

{ int i;

pthread_t thread;

if (pthread_create(&thread, NULL, thread_func, NULL) != 0) {

return EXIT_FAILURE;

}

for (i = 0; i < 20; i++) {

puts("a");

wait_thread();

}

if (pthread_join(thread, NULL) != 0) {

return EXIT_FAILURE;

}

return EXIT_SUCCESS;

}

Бұл мысалда негізгі ағынның параллелді орындалуын иллюстрациялайды. Ағындарды құруға (pthread_create), оның денесін көрсетуге (thread_func) және тән ағынның аяқталуын күтуге (pthread_join) ерекше көңіл бөлген жөн.

Solaris операциялық жүйесінің ағындары мен үрдістері

Solaris операциялық жүйесінде көп/көп ағындар моделі қолданылады. Сонымен қатар бұл жүйеде жеңілдетілген үрдістер пайдаланылады. Solaris операциялық жүйесінде қолданушылық ағын өзінің жеңілдетілген үрдісінде бейнеленіледі, өз кезегінде ядро ағынында бейнелінеді, соңғысы компьютерлік жүйенің кез-келген үрдісінде орындалады.

Сурет 5.Solaris ағындарын ұйымдастыру схемасы

Сурет 6. Solaris операциялық жүйесінде үрдістерді ұйымдастыру

Суретте көргеніміздей әрбір үрдіс үрдістерді басқару ақпараттық блогынының стандартынан басқа өзінің жеңілдетілген үрдістерінің тізімінен тұрады.

Windows 2000 ағындар

Windows операциялық жүйесінде көпағындықдың «бір/бір» моделін жүзеге асырады. Әрбір ағын мыналардан тұрады:

  1. ағын идентификаторы (thread id);
  2. регистрлер жиынтығы
  3. қолданушылық және жүйелік процедураларға арналған жеке стектер
  4. ағындардың жергілікті мәліметтеріне арналған жады аймағы (thread-local storage – TLS).

Linux-тағы ағын

Linux жүйесінде ағын threadsемес, tasks (задачами)деп аталады.Ағын clone () жүйелік шақырумен құрылады. Жүйелік шақыру қыздарының тапсырмасы ата-аналық тапсырмасымен(үрдісімен) ортақ адресті аймақты қолдануға мүмкіндік береді.

Java-дағы ағын

Java – көпесептілікті тілдік және базалық кітапхана деңгейінде бағдарламаны өңдеуге арналған алғашқы платформа. Java ағындары келесі жолдар арқылы құрылады:

  1. Threadкласстың кеңейтілуі түрінде
  2. құрамында жалғыз әдіс run - орындалатын ағын денесі кіретін Runnableинтерфейсі бар класстүрінде

Java-дағы ағындар JVM арқылы басқарылады.ағындар тобының және сондай топтардың иерархиясы түрінде құрылуы мүмкін.

Java –дағы ағындар мүмкін болатын жағдайыны 7-суретте көрсетілген. АЖ-дегі ағындарға ұқсайды, Java-дағы ағындар жаңа болып құрылады және новыйқалпында болады, одан кейін – выполняемый; wait, sleepжәнет.б типті әдісті шақыру кезінде ағын күту режиміне ауысады;runәдісі аяқталған кезде ағын аяқталады.

Сурет 7. Java-дағы ағындар жағдайы.

Кілттік терминдер

Mac C-threads – MacOS жүйесіндегі қолданушылық ағын.

POSIX Pthreads – POSIX спецификацияланған стандартында және POSIX қосымшасында қолданылатын ағындар

Solaris threads – Solaris ОЖ-де қолданылатын ағын.

Thread– Java тіліндегі ағындарды көрсететін класс .

Ағын атрибуттары – pthread_attr_t типінде сипатталатын POSIX ағынындағы атрибуттардың сәйкестігі.

Ағындар тобы(thread group) – өзінің аты бар ағындар үстіндегі топтық операциялармен анықталған ағындардың сәйкестігі.

Дескриптор потокаPOSIX-ағынынасілтеу типом pthread_t типімен сипатталады.

Тапсырма (task)–Linux-дағы ағын аты.

Ерекшелік (exception) –АЖ-дегі және объектілі-бағытталған тілдердегі қатені өңдеу кезіндегі жоғары деңгейлі

Ағынның локальді берілгендері(thread-local storage - TLS) – белгілі бір анықталған ағынға жататын және сол ағын ғана қолданатын деректер.

Көпағындық моделі– ағын ядросындағы қолданылатын ағынның көрсетілу тәсілі.

Көп/көп моделі– әр түрлі қолданушылық ағындар әр түрлі ядро ағынында көрсетілуі мүмкін көпесептілік моделі

Көп/бір моделі– көпағындық моделі, бірнеше қолданушылық ағындар бір ғана ядро ағынында көрсетілуі мүмкін көпесептілік моделі.

Бір/бір моделі– әрбір қолданушылық ағындар белгілі бір анықталған ядро ағынында көрсетілуі мүмкін көпесептілік моделі

Мьютекс(mutex)– АЖ-де қолданылатын өзара ерекшелігін қамтитын семафорлар аналогтары.

Жеңілдетілген процесс(lightweight process) – жалпы виртуалды жады аймағында ата-ана үрдісімен жұмыс істейтін.

Ағын (thread)– ата-ана процессінің сол адресті кеңістікте орындалатын паралельді үрдістің эффективті нұсқасы түріндегі қандай да бір іске қосылатын процесс.

Қолданушы деңгейіндегі ағын(user thread)– қолданушының АЖ интерфейсіне қосылған операциялардың жоғары деңгейлі ағыны.

Ядро ағыны(kernel thread)– АЖ ядросының деңгейінде қоданылатын және қолдайтын төмен деңгейлі жүйелік ағын.

Ағын пулы(ThreadPool)– NET тобындағы ағынды құрастырудың эффективті механизмі.

Сигналдар(в UNIX) – қате жағдайындағы төмен деңгейлі өңдеу механизмі.

"Күрделі"(heavyweight) процесс – оңайлатылған үрдіске қарама-қарсыөзініңадрестік кеңістігі бар классикалық үрдіс аты.

Шартты айнымалы(conditional variable) – wait және signal операцияларымен АЖ-де қолданылатын синхрондалатын объект.

Көпағындылық (multi-threading) –компьютердің паралельді архитектурасының кең тарауына байланысты бағдарламалаудың қазіргі заманғы бағыты. Ағын – жалпы адресті кеңістікте ата-ана үрдісімен орындалатын үрдістің ерекше түрі.Ағын өзінің стегімен, басқару ағынымен және регистр мағыналарымен сипатталады.

Облегченный процесс (lightweight process) – АЖ-дегі ағын іске асатын механизм.

Алғашқы процесс ұғымы қазіргі ағын концепциясына жақын болды, яғни 1970 жылдың аяғында "Эльбрус" жүйесінде іске асқан. Көпағындылық UNIX-та, содан кейін Solaris-та және Windows NT-да пайда болды. Әр түрлі АЖ-дегі кітапхана архитектурасын қолдайтын көпағындылық бір-бірінен ерекшеленеді. Алғашқы көпағындылықтың тілдік және базалық кітапхана деңгейдегі іске асуы Java-технологиясында артынан .NET-та іске асты.

Ағындар архитектурасы – көп деңгейлі:жүйелік ағын(ядро ағыны) көмегімен қолданушылық деңгейінде ағынның іске асады. Көпағындылықтың әр түрлі модель түрі бар(жүйедегі қолданушылық ағынның көрсетілуі) – бір-бір, бір-көп, көп-бір.

Көпағындылық қызықты проблемаларды қарастырады: fork және exec жүйелік семантикалық шақыруларын; ағынның тоқталуы; сигналдарды өңдеу;топтағы ағын құрылымын; жергілікті ағын деректерін қолдау (TLS);ағын синхронизациясы; тығырықтар және олардың тоқталуы

POSIX threads (Pthreads) –API АЖ-нің UNIX типті көпағындылықты қолдайтын стандартизациясы.Ағын өзінің дескрипторы және атрибуттарымен сипатталады. Ағындарды синхрондау үшін мьютекстер мен шартты айнымалылар қолданылады.

Solaris АЖ-дегі ағын жүйелік және қолданушылық түсінігімен қоса жеңілдетілген процесс түсінігі арқылы ерекшеленеді.Әрбір дәстүрлі үрдіс құрастырылған жеңілдетілген үрдісі бар тізімді сақтайды. Көпағындылықтың "көп-көп" моделі қолданылады.

Windows 2000 "бір-бір" көпағындылық моделін қолданады. Әрбір ағын өзінің нөмірін, регистр жинақтарын, жүйелік және қолданушылық процедура үшін жеке стектерін, жергілікті ағын жадын(TLS) сақтайды.).

Linux ағындары тапсырма (tasks) деп аталады және clone жүйелік шақырулары арқылы и құрылады.

Java-дағы ағындар тілдік және базалық деңгейдегі кітапханасын қолдайды. Thread объект класстарымен және классастымен көрсетіледі. Виртуалды Java машинасымен басқарылады. Ағын тобын құруға болады. АЖ қолданатын ағындар жағдайы аналогті болады.

ТАҚЫРЫП 12-13. ЖЕЛІЛЕРДЕГІ ҮРДІСТЕР

КОММУНИКАЦИЯСЫ

Мақсаты:Желілердегі үрдістер коммуникациясының құралдары мен хаттамаларынының ерекшеліктеріне тоқталу

Кілттік сөздер: желі, жүйе, байланыс жүйесі, коммуникациялық модуль, ақпараттық арна, логикалық элемент, хаттама, хабарла, дыбыстық байланыс, модем, сандық сигнал, аналогтық сигнал, софт-модем, байланыс протоколдары

Дәріс жоспары (2 сағат)

  1. Желілік жүйелік құралдар. OSI моделі.
  2. Деңгейлік хаттамалар. TCP/IP желілеріндегі адрестелу. Транспорттық хаттамалар.
  3. Үлестірілген жүйелерде үрдістерді синхорндау.
  4. Үлестірілген жүйелердің тұйықталған түйіндері (тығырықи).
  5. Үлестірілген жүйелерде үрдістерді үлестіру және жоспарлау.

Коммуникациялық жүйе, байланыс жүйесі (коммуникационная система, система связи) — мәліметтерді жеткізу кешенін қүрайтын аппараттық құралдардың, бағдарламалық жасақтамалардың және сол мәліметтерді жеткізу арналарының бірлестігі.

Коммуникациялық модуль (коммуникационный модуль) — ақпаратты бағдарлауды және ақпараттық арналарды басқаруды жасақтайтын есептеу желісінің логикалық элементі.

Коммуникациялық сервер (коммуникационный сервер) — терминал, компьютер және принтер сияқты құрылғылардын желіге қосылуын жеке коммуникациялық хаттамасыз-ақ іске асыратын, байланысқа сәйкес бағдарламалық жасақтамамен қамтамасыз етілгей компьютер. Жергілікті желілерде — жұмыс станцияларының үлкен электрондық есептеу машина- ларына, модемдерге, факс-модемдерге және басқа құрылғыларға қатынас құруын қамтамасыз ететін компьютер де осылай аталады.

Коммуникациялық хаттама (коммуникационный протокол) — қысқа мерзімде стандартгы пішімді пайдаланып, мәліметгерді желінің бір торабынан (түйінінен) екіншісіне жеткізуді атқаратын мүмкіндіктер (спецификациялар) жиыны.

Коммуникациялық бағдарлама (коммуникационная бағдарлама) — компьютер мен модемнің басқа компьютермен және модеммен қатынас құруына мүмкіндік беретін қолданбалы бағдарлама. Ол компьютерлер арасындағы байланыс түзілімін ұйымдастыратын телефон нөмірлерін жадында сақтап, оларды автоматты түрде теруді жүзеге асырып, жалпы қатынас қүруды оңайлатады. Байланыс орнатылған сон, бұл бағдарлама келіп түскен мәліметтерді дискіде сақтап, қажетті файлдарды дискіден әрі карай жөнелтеді.

ДК-ң коммуникациялық құрылғылары компьютерлер, компьютер және өшірілген енгізу-шығару құрылғылары арасында деректер алмасуға, сонымен қатар деректерді локальді(Local. Area Network, LAN) немесе глобальді (Wide Area Network , WAN ) желілерге (Интернетті қоса алғанда) біріктіруге арналған. Деректерді алмастыру түрлі мақсаттарға арналуы мүмкін: перифериялық құрылғылардың ортақ пайдаланылуындағы файлдарды жіберу (мысалға, принтерлер), Интернеттің және жергілікті желілердің түрлі ақпараттық қызметтеріне қатынау, факсимильді хабарламаларды жіберу және қабылдау, пейджерлер және мобильді телефондарға хабараламалар жіберу, дыбыстық байланыс орнату ( IP -телефония), дыбыстық видеобайланыс және желі бойынша ортақ ойындарды орындау.

Коммуникациялық құрылғылар: желілік және желілік емес локальді желілердің модемдері және адаптерлері. Компьютерлер арасындағы байланыс басқа да құрылғылармен орнатылуы мүмкін LPT -порттар, FireWire бірізде шиналар және USB .

Басқа есептеу жүйелерімен байланыс жасау құрылғылары

Сенсорлық экран – жарық қаламұшының әр түрлі мүмкіндіктерін қамтитын құрылғы. Экранға жақындатып кескінді қозғауға болады, сондай-ақ компьютерге кейбір орындауға арналған командаларды беруге болады.

Сенсорлық дисплей, сервер (сенсорный дисплей, сервер; the touch display, server) ол:

1) өз дискілерін, сондай-ақ сыртқы құрылғыларын, мысалы, принтерлер мен модемдерін, ұжымдық пайдалануға

Беретін желі торабы. Сонымен қатар, онда көп пайдаланылатын бағдарламалар да орындалуы мүмкін;

2) клиенттік бөлімнің сұраныстарын орындайтын үлестірілген қосымша бағдарламаның бөлігі.

Модем– телефондық канал бойынша бір компьютерді екіншісімен қосуды қамтамасыз ететін құрылғы. Компьютерге қосу тәсілдері бойынша модемдер жүйелік блокқа қойылатын және сыртқы коммуникациялық портқа арқылы жалғанатын болып бөлінеді.

Модемдер бір-бірінен мәліметтерді тасымалдаудың максимал жылдамдығы арқылы өлшенеді. Ол Бодпен (1 бод=1 бит/сек) өлшенеді.

Модем (ағылш. модем) — сандық сигналдарды аналогтық сигналдарға айналдыратын және керісінше амал жасайтын электрондық құрылғы.

Деректерді әр түрлі арқаулар арқылы, мысалы телефон сымы арқылы немесе радиосигналдар түрінде беруге болады. Телефон сымы арқылы аналогтық сигналдар деп аталатын импульстарды беруге болады. Аналогтық сигналдар шуыл немесе электрлік-магнитті импульстар түріндегі кедергілердің әсеріне ұшырауы мүмкін.

Дыбыстық сигналдар дерек берудің едәуір жаңа әдісі болып табылады, онда дерек беру және қабылдау үшін екілікті пішім қолданылады (нөлдер мен бірліктер тізбегімен жұмыс істейтін кодтау/кодты ағыту жүйесі). Дерек беру мен қабылдау үшін компьютерлерде дәл осы пішім қолданылады. Алайда сандық сигналдарды телефон желісі арқылы беру мүмкін емес. Сондықтан телефон сымы арқылы дыбыстық сигналдарды берер алдында оларды аналогтық сигналдарға айналдыру керек. Және тиісінше деректі қабылдаушы жақ алынған деректі сандық сигналдарға айналдыруға тиіс. Модем осындай айналдыруды жүзеге асырады – сандық пішімнен аналогтық пішімге және керісінше.

Коммутациялық модем (номер терімі бар модем) (коммутационный модем (модем с набором номера) — жұмыс істеу үшін жеке немесе арендалық телефон желілерін пайдаланбай, қарапайым коммутациялау желісін пайдаланатын модем.

Софт-модем, винмодемдер (ағыл. Һост басед софт-модем) – аппараттық модемде, алайда микробағдарламасы бар тұрақты есте сақтау құрылғысы болмайды. Мұндай типті модемнің микробағдарламасы компьютер жадысында сақталады, оған модем жалғанған болады. Сонымен бірге модемде аналогтық сұлба мен түрлендіргіштер болады: АСТ (аналогты-санды түрлендіргіш), САТ (санды-аналогты түрлендіргіш), интерфейс контроллері(мысалы ҰСБ). Драйверлер болған жағдайда ғана жұмыс істеуге қабілетті, олар сигналдарды кодтау бойынша, қателерге тексеру және протоколдарды басқару барлық операцияларды өңдейді, сәйкесінше бағдарламалы түрде жүзеге асырылады және компьютердің орталық процессорымен өңделеді.

Жартылай бағдарламалы (Цонтроллер басед софт-модем) – модем функцияларының бір бөлігін модем қосылған компьютер орындайтын модемдер. Қосылу типі бойынша:

Коммутацияланатын телефондық желілер үшін модемдер – модемдердің ең тарағын түрі.

• ISDN – сандық коммутацияланытын телефондық желілер үшін модемдер

• DSL – бөлінген (коммутацияланбайтын) желілерді қарапайым телефон желісі көмегімен ұйымдасытыру үшін пайдаланылады. Коммутацияланатын модемдерден айырмашылығы – басқа жиілік диапазонын қолданады, және де телефон желелері бойынша сигнал тек АТС-ке дейін ғана беріледі. Көбінесе бір уақытта мәліметтермен алмасуды және телефон желісін пайдалануды қамтамасыз ете алады.

Кабельдік – арнайы кабельдер бойынша ғана мәліметтермен алмасу үшін қолданылады – мысалы, ДОЦСЫС протоколы бойынша ұжымдық телекөрсетілім кабелі бойынша.

Ұялы – тек қана ұялы байланыс протоколдары – GPRS, 3Г, 4Г және т.с.с бойынша ғана жұмыс істейді. Жиі ҰСБ-салпыншақ(брелок) түрінде келеді. Мұндай модемдер ретінде көбінесе ұялы байланыс терминалдары қолданылады.

xDSL Технологиялар:

xDSL технологиялары қарапайым телефон желісінің абоненттік желісінің аналогтықтан сандыққа айналуына негізделеді. (Digital Subscriber Line — сандық абоненттік желі).

ADSL (Asymmetric Digital Subscriber Line) – ассиметриялық технология, абоненттік жылдамдығы (downstream) 6,1 Мбит/с дейін, абоненттен — 16–640 Кбит/с. Жылдамдық абоненттік желі ұзындығына және оның сапасына байланысты.

UADSL технологиясы (Universal ADSL), яғни DSL Lite, — кішкене жылдамдықтағы ADSL-дің жақсартылған нұсқасы (желі ұзындығы 3,5 км дейін болса — жылдамдық 1,5 Мбит/с және 384 Кбит/с түрлі бағыттарда; при желі ұзындығы 5,5 км — 640 және 196 Кбит/с). Құрылғылар оңай орнатылады және салыстырмалы түрде қымбат емес.

RADSL (Rate Adaptive Digital Subscriber Line) — желі (линия) сапасына тәуелді деректерді беру жылдамдығы адаптивті өзгерісті технология.

HDSL (High Data-Rate Digital Subscriber Line) — жоғары жылдамдықты технология, 1,536 немесе 2,048 Мбит/с жылдамдықпен қамтамасыз етеді. Желі ұзындығы — 3,7 км дейін, төрт сымды желіні талап етеді.

SDSL (Single-Line Digital Subscriber Line) — симметриялы жоғары жылдамдықты (1,536 немесе 2,048 Мбит/с) технология, екі сымды желі, з км-ге дейін.

VDSL (Very High Data-Rate Digital Subscriber Line) — өте жоғары жылдамдықты (56 Мбит/с дейін), симметричная технология. Қашықтық —1,5 км. Дейін. Технология айтарлықтай қымбат, бірақ желіні коллективті түрде қолдануға арналған.

Желі – мәліметтерді компьютерлер арасында жеткізу құралдарымен біріктірілген компьютерлердің жиынтығы. Есептеу желісі – бір-бірімен байланысқан желі элементтері арасында мәліметтер жеткізуге арналған бағдарламалық және аппараттық құрауыштардың күрделі жүйесі. Аппараттық жабдықтар ішінде әртүрлі типті және класты компьютерлермен қатынастық жабдықтарды атауға болады. Бағдарламалық құрауыш операциялық жүйе мен желілік қолданбалардан тұрады. Желінің тиімді жұмыс істеуі үшін ОЖ-дің арнайы түрлері – желілік ОЖ қолданылады. Желілік ОЖ – есептеу желісін бір орталықтан басқаруға арналған бағдарламалар кешені (Windows NT, Novell NetWare, т.б.). Желілік қолданбала р– желілік ОЖ-нің мүмкіндіктерін кеңейтетін қолданбалы бағдарламалық кешендер (пошталық бағдарламалар, желілік мәліметтер қорлары, т.с.с.).

Желіге қосылатын барлық құрылғыларды үш функционалдық топқа бөледі, олар:

- жұмыс станциялары;

- желі серверлері;

- қатынастық тораптар.

Компьютерлік желілер (Computer NetWork, net - желі, work - жұмыс) берілген ережелерге сәйкес компьютерлер арасында мәлімет алмасу жүйесі немесе ресурстарды ортақ пайдалану мақсатында бір-бірімен мәлімет алмасу арналарымен байланысқан компьютерлер тобы.

Желіге қойылатын талаптар:

  1. Жұмыс өнімділігінің жоғары болуы;
  2. Қауіпсіз және сенімді жұмыс атқаруы;
  3. Кеңейтілетін мүмкіндігі болуы;
  4. Жеңіл, әрі көрнекі түрде басқарылуы;
  5. Құрылғылар мен сигналдардың өзара сәйкестігі болуы тиіс.

Желілер мынадай қасиеттеріне қарай жіктеледі:

  1. географиялық қамтылу аймағына қарай;
  2. өндірістік бөлімдер көлеміне (масштабына) байланысты;
  3. топологиясына – бір-бірімен байланысу схемасына немесе құрылымына қарай;
  4. басқарылуына байланысты.

Географиялық қамтылу аймағына қарай желілер мынадай топтарға бөлінеді:

  1. Жергілікті (локальный-Local Area Network, LAN) - бір мекеменің ғимараты көлеміндегі немесе жақын тұр-ған ғимараттарда орналасқан компьютерлер жабық желісі. Мұндай желіге 10-20 шамасында компьютер-лер біріктіріледі (ара қашықтықтары 10 км-ға дейін).
  2. Ауқымды, ғаламдық (глобальные-Wide Area Network, WAN) – бірнеше мемлекетті, континенттерді немесе бүкіл әлемді қамтитын ашық желі түрі.
  3. Аймақтық, интранет (региональный -Metropolitan Area Network MAN) – бір қала, аудан, мемлекет ішіндегі біртектес мекемелер компьютерлерін біріктіреді. Бұлар бір компанияға, фирмаға не министрлікке кіретін жабық желілер, мысалы, қорғаныс министрлігінің, мұнай компанияларының ішкі желісі.

Өндірістік бөлімдер көлеміне (масштабына) байланысты желілер:

  1. бөлімдер желісі;
  2. кампустар желісі;
  3. корпоративтік желілер тәрізді топтарға бөлінеді

Топологиясына – бір-бірімен байланысу схемасына немесе құрылымына қарай желілердің жіктелуі:

Әр топологияның өз артықшылықтары мен кемшіліктері бар:

Толық байланысты топологияең қымбаты, бірақ ең сенімді жұмыс істейтін топология, оның бір байланыс арнасы істен шыққанмен, мәлімет басқа арналық жолдармен жеткізіле береді.

Шиналық топология – ең арзан түрі, бірақ бір байланыс арнасы істен шықса, желі жұмысы бұзылады. Оның үстіне, бір мезетте бір ғана арна арқылы бірнеше компьютердің мәлімет алмасуы үшін арнайы бағдарламалық жабдықтама жасалуы керек.

Сақина тәрізді топология да қарапайым желі түрі, мұнда информация бір бағытта ғана айна-лыста болады және әрбір компьютер мәліметті қабылдап алып ары қарай жөнелтіп отырады. Желінің компьютерлер арасындағы бір байланыс арнасы істен шықса, желі жұмыс істей алмай қалады.

Басқару тәсіліне қарай желілер былай жіктеледі:

  1. БІР ОРТАЛЫҚТАН БАСҚАРЫЛАТЫН ЖЕЛІ, МҰНДА БІР КОМПЬЮТЕР-СЕРВЕР ЖЕЛІ ЖҰМЫСЫН БАСҚАРАДЫ. Сервер – арнайы бағдарламалық жабдықтама орналасқан дискілерінің көлемі үлкен, әрі қуатты компьютер. Желідегі басқа қарапайым компьютерлер жұмыс станциялары деп аталады. Жергілікті желілер көбінесе бір сервер арқылы басқарылады.
  2. БІР ДЕҢГЕЙЛІ КОМПЬЮТЕРЛЕР ЖЕЛІСІ (БІР РАНГІЛІ) – МҰНДА ЖЕЛІНІ БАСҚАРУДА БАРЛЫҚ КОМПЬЮТЕРЛЕР ТЕҢ ҚҰҚЫҚТЫ БОЛЫП САНАЛАДЫ. Басқаша айтсақ, кез келген машина мәлімет алмасу үшін бір-бірімен сәйкес келетін бағдарламалармен жабдықталған. Олардың барлығы да желіні кезектесіп басқару ісіне араласа алады.

Бір орталықтан басқарылатын жергілікті компьютер желісі

(шиналық топология) :

Мұнан әрбір компьютердің (жұмыс станцияларының) тек сервер арқылы ортақ принтерді пайдаланып, ортақ дискідегі мәліметтерге қол жеткізіп, басқа желілермен байланыса алатынын көреміз.

Желілік технология – компьютерлік желі құруға қажетті стандартты протоколдар мен солардың жұмысын жүзеге асыратын бағдарламалық-аппараттық құралдар жиыны.

Протоколдар (хаттамалар) – мәлімет тасымал-даудың алдын ала бекітілген заңдылықтары мен ережелері жиыны, яғни мәлімет беру/алу кезінде екі компьютер арасында тағайындалған келісімдер жиыны.

Желілік технологиялардың кең тараған түрлері:

  1. Arcnet (Attached ResourceComputer NETWork);
  2. Ethernet;
  3. Token Ring.

Arcnet – арзан, қарапайым сенімді жұмыс істей-тін технология. Мұнда “шина” және “жұлдыз” топологиялары қолданылады. Мұнда маркерлік шина (Token bus) арқылы басқару тәсілі қолда-нылады, яғни бір компьютер маркер жібереді. Сол маркер алынған соң, желідегі құрылғылар-дың тек біреуі ғана мәлімет жібере алады. Ол маркерге өз мәліметін және адрестерін қосып ары қарай жөнелтеді.

Бұл технология бойынша мәлімет тасымалдау жылдамдығы – 2,44 Мегабит/сек, тасымалдау үшін коаксиальды кабель, есілген қоссым, оптоталшықты кабельдердің бірі пайдаланыла береді.

Бұл технологияның өз желілік адаптері болады. Адаптердің кабель қосылатын разъемы – ажыра-тып/қосқышы бар. Әрбір адаптердің осы желіге арналған өзіндік нөмірі (0-255) болады.Адаптер орнатылғанда сол нөмірді де сәйкестендіріп қою керек. Мәлімет беру қашықтығы 6 км, бірақ жылдамдығы төмен (2,44 мбит/с).

Ethernet технологиясында шиналық топология-ны қолданып, мәліметті бірден барлық желі компьютерлеріне (станцияларына) береді. Бірақ оны адресіне сәйкес тек біреуі ғана қабылдайды. Бұл технология желіге компьютерлерді біріктіріп тұратын концентраторларды және интерфейстік желі тақшасын керек етеді, олар бірігіп орнала-сады. Көбінесе арнайы кабельдер және телефон арналары қолданылады. Мәлімет тасу жылдам-дығы 10 мегабит/c, бірақ жаңа мүмкіншіліктер пайда болуына байланысты (оптоталшық) жыл-дамдығын өсіруге болады.

Token Ring технологиясын IBM фирмасы ұсынған. Мәлімет тасу орталығы – есілген қоссым және оптоталшықты кабель. Мәлімет тасу жылдамдығы – 4 Мбит/с және 16 Мбит/с. Мәлімет тасымалдауда маркерлі сақина қолданылады. Топологиясы - сақиналы не жұлдыз. Мәлімет тасу қашықтығы - 120 м (бір ғимаратта).

Компьютерлік желілерге қажет жабдықтар

  1. Байланыс арналары мен интерфейстер
  2. Желілік карта (Сетевая карта)
  3. Трансивер (transceiver)
  4. Қайталауыш (Repeater)
  5. Концентратор (Hub)
  6. Көпір (Мост-Bridge)
  7. Коммутатор (Switch)
  8. Маршрутизатор (Router)

Байланыс арналары

Интерфейстер

RJ-45 интерфейсі

BNC интерфейсі

Желілік карта

Желілік карта желі операциялық жүйесі арқылы келген командалар мен мәліметтерді қабылдап, оларды бір стандартты форматқа түрлендіріп, оны картаға жалғанған кабель арқылы ары қарай жібереді. Әрбір картаның айрықша өз нөмірі болады.

Трансивер

Трансивертікелей кабельге жалғанып орнала-сады да, компьютердің желілік картасы арқы-лы қоректенеді. Трансивер желіліккартаға AUI (Attachment Unit Interface) типті интер-фейстік кабельмен қосылып тұрады.

Қайталауыш

Қайталауыштарбірдей немесе әртүрлі құрылғыларды пайдаланатын сегменттерді байланыстырады, сигналдарды алғашқы қалпына келтіріп, мәліметті тасымалдау қашықтығын арттырады, информацияны екі бағытта да өткізеді. Қайталауыштар коаксиалды кабельді пайдаланатын желілерді кеңейтіп. олардың мүмкіндігін арттырады.

Концентратор

MicroHub TP1008C

Концентратордеп физикалық түрде бірнеше байланыс арналарын біріктіріп тұратын бірнеше порттары бар қайталауышты айтады. Концентратор желінің физикалық топологиясын өзгертеді, бірақ оның логикалық топологиясы өз-гермейді. Егер оның бір портына мәлімет келіп түссе, ол оны көбейтіп барлық басқа порттар арқылы жөнелтеді.

Үш портты концентратор схемасы

Концентраторлы желі мысалы

Көпір

Көпіржелінің жалпы мәлімет тасу ортасын бөліктерге бөліп тұрады да, ол келіп түскен мәліметті басқа сегментке тек адресіне байланысты жөнелтіп отырады.

Көпірді пайдалану мысалы

Коммутатор

Коммутаторқызметі көпірге ұқсас, бірақ мұның жұмыс өнімділігі жоғары, өйткені көпір бір мезетте тек екі порт арасын ғана байланыстырады.Ал коммутатор өзіндегі барлық порттар арасын бірден байланыстыра алады.

Коммутаторды пайдалану мысалы

Маршрутизатор

Маршрутизатор көпір мен коммутаторға қарағанда желінің мәлімет тасу ортасын өте тиімді бөліктерге бөледі. Ол келесі желі торабын адреске қарап тауып, әрбір мәліметтің ең ыңғайлы маршрутын таңдап алады, т.с.с. Желі күрделі болған сайын маршрутизатордың жұмыс тиімділігі де арта түседі.

Маршрутизаторды пайдалану мысалы

Компьютерлердің байланысу деңгейлері мен желідегі мәлімет тасу протоколдары

Мәліметтерді тасымалдау ісін стандарттау жұмысы Халықаралық стандарттар институ-тының (ISO - International Standards Organization)техникалық ұсыныстарына байланысты жүргізіліп, желі параметрлерін сәйкестендіру ісі OSI (ашық жүйелердің әрекеттесу моделі — Model of Open System Interconnections) деп аталған модель негізінде жасалып шықты. Осы ISO/OSIмоделіне сәйкесмәлімет алмасу схемасы 7 сатыға бөлініп қарастырылады. Олардың жоғарғысы қолданбалы деңгей, ал ең төменгісі–физикалық деңгей болып саналады.

IP-адрестеу

Интернетке қосылған әрбір ЭЕМ-нің өзіндік қайталанбас физикалық адресі болады. (IP-адресі). Адрес нүктемен бөлінген 4 ондық саннан тұрады, олардың әрқайсысы - 0 мен 255 санының арасындағы кез келген сан. Желідегі компьютерді осы сандарға қарап анықтайды. Мысалы:

194.84.93.29 немесе 128.29.15.124

Осылай адрестеу жүйесі 2564 4,3 миллиард компьютер адресін анықтай алады. Дәлірек айтқанда физикалық адрес 32-разрядты екілік сан (4 байт) ретінде жазылады.

Физикалық адресті пайдалану ыңғайсыз (адамдарға цифрлар тізбегін есте сақтау қиын), сондықтан мұндай адрестерге символдық(домендік)адрестерді сәйкестендіреді. Символдық адрестер белгілі мағынасы бар сөз тіркестерінен тұрады.

Символдық немесе домендік адрестер былай жазылады:

протокол://машина аты.домен аты[/каталог/ подкаталог/файл аты]

OSI эталондық моделі. Желілік бағдарламалық жабдықтарды құруды реттеу мақсатында және кез келген есептеу жүйелерінің әрекеттесу мүмкіндіктерін қамтамассыз ету үшін Стандарттаудың Халықаралық Ұйымы (International Standart Organisation — ISO) ашық жүйелер әрекеттестігі эталондық моделін (Open System Interconnection -OSI) құрды. Бұл есептеу желілері жұмысының жеті деңгейлі логикалық үлгісі, ол деңгейлер:

1) физикалық деңгей;

2)тасымалдау деңгей;

3) желілік деңгей;

4)байланысу деңгей;

5) сеанстық деңгей;

6) ұсынылу деңгей;

7) қолданбалы деңгей .

Әрбір деңгей жоғарыдағы модельмен анықталған өз қызметтерін (функцияларын) атқарып, мәліметті келесі деңгейге беріп отырады. Осылай компьютерлер әрекеттесуінің әрбір деңгейінің өзіне ғана тән протоколы, яғни мәлімет алмасу ережесі болады

ТАҚЫРЫП 14-15. ПРОЦЕДУРАЛАРДЫҢ

ҚАШЫҚТЫҚТАН ШАҚЫРТУЛАРЫ

Мақсаты:Процедуралардың қашықтықтан шақыртуларын талдау

Кілттік сөздер:түрлендіру, аутентификация, режим, қосымшалар, интерфейс, сервер, клиенттік қосымшалар, тапсырма, үдеріс, сегмент, код

Дәріс жоспары (2 сағат)

  1. Бағдарламалаудың төменгі деңгейлі және жоғары деңгейлі интерфейсі.
  2. XDR–түрлендірулер, аутентификация, кеңжолақты режим.
  3. Үлестірілген қосымшаларды құру үшін DCOM және COBRA технологияларын қолдану. IDL интерфейсін сипаттау тілі.
  4. SMB хаттамасы, оның тағайындалуы, Samba серверін және қолдану және клиенттік қосымшаларды пайдалану.
  5. Желідегі жұмыста қауіпсіздікті қамтамасыз ету. Жергілікті компьютердегі жұмыста қауіпсіздікті қамтамасыз ету.
  6. Жергілікті компьютерде және желіде қауіпсіздікті қамтамасыз ету құралдары.

Процедуралар мен тапсырмаларды шақыру құралдары

Операциялық жүйе тапсырмаларға операциялық жүйе үдерістерінің шақыру құралдарын қамтамасыз етеді. Ол сонымен бірге тапсырмаларды қосу үшін құралдары болу керек. Ал көп тапсырмалы жұмыста – тапсырмадан тапсырмаға жылдам қосылу құралдары болу қажет. Үдерісті шақыру тапсырманың қосылу айырмашылығында бірінші кезекте виртуалды адрес аралығының тапсырмасы сол күйінде қалады. Ал шақыру тапсырмасында бұл аралық өзгереді.

Процедураларды шақыру

Pentium процессорының қорғалған режимінде үдерістің шақырылуы код сегментіне ауыспай JMP және CALL командасы арқылы жүзеге асырылады.

Бағынбайтын сегменттен үдерісті тік шақыру. Бұл тәсіл жаңа код сегменті дескрипторына нұсқайтын селектордағы JMP және CALL командасы жолындағы нұсқаулардан тұрады. Бұл сегмент шақырылыатын үдеріс кодынан тұрады.

Бұл шақырылу Сурет 1-те көрсетілген. Осында және ары қарай виртуалды аралықтан тік адрес алу кезеңі көрсетілгген.

С=0 болғандағы шақырылатын сегмент бағынышты емес болып табылады. Ал шақыру рұқсат етіледі, егер шақырылатын кодтың артықшылық деңгейі шақырылатын сегмент артықшылық деңгейімен сәйкес келгенде ғана шақыруға рұқсат етіледі.

Сурет 1.Үдерістің тікелей шақырылуы.

Тыйым бiрiншi жағдайда қолданбалы бағдарламалардан кез келген ерекше құқықты процедуралардың шақыруынан ОЖ табиғи қорғау құралы болып табылады. ОЖ-ның қорғауының жүйесi абсолюттi болуы керек болатыны анық қосымша, өйткенi ОЖ жүйелiк шақыру iске асыратын нақтылы процедураларға айналу мүмкiндiгiн алуы керек. Бағынбайтын кодтық сегменттер көмегiмен оны жасау мүмкiн емес, онда бұл мәселенiң шешiмi үшiн басқа әдiстер бар болады - шақыруларды қол астындағы сегменттер және төменде қаралатын шлюздар.

Тыйым екiншi жағдайда осылай сезiледi: егер соңғы артықшылық төменде болса код басқа кодты шақыра алмайды. Бұл сырттай қарағанда оғаштанады. Артықшылықтардың деңгейi бiр жағынан қосымшаның кодқа қарағандағы жоғарынан басқару жүйесi бұл ережемен сәйкес бағынбайтын сегменттен қосымшасының кодын шақыра алмайды. Мәндер бойынша алайда, бұл тыйым Pentium процессорларының қорғау жүйесiнiң құрастыруын иерархиялық қағидасының жалпы көрiнiсi болып табылады - ерекше құқықты код, артықшылықтардың деңгейi, және бұл қағида аласалаулармен процедуралармен сенiмсiз жағдайларда пайдалана алмайды, процедураны шақырудың барлық әдiстерi үшiн сақталғанында емес, мәлiмет үшiн ғана емес.

Бағынышты сегменттен процедураны тік шақыру. Мысалы, процессор ОЖ қызметтерге қолданбалы бағдарламалары тиiстi жүйелiк шақырулар көмегiмен енгiзу-шығаруды орындауға рұқсат ала алу үшiн ОЖ-нiң модулдардың қауiпсiз шақыруына әдiс қолдануы керек. Бiрнеше әдiстердiң бар болу мүмкiндiгiнiң iске асырылуы үшiн, және солардың бiрi ОЖ-ның процедураларының (С=1 ) бағынышты сегментiнде орналастыру болып табылады. Қол астындағы сегмент (DPL CPL) артықшылықтардың деңгейiмен тең немесе аласалаулармен бағдарламалардың кодынан CALL немесе JMPнiң командаларындағы оның селекторын жөн-жоба арқылы шақыруға болады.

Шлюз арқылы жанама процедураны шақыру. Процедураны шақырудың екі әдісі қарастырылған жоғары жүйелiк шақыруларды iске асыру үшiн жақындамайтыны анық. Бiрiншi әдiсте бағынбайтын сегментте артықшылықтар жоғары деңгейлi болатын басқару жүйелерiнің процедурасының артықшылықтардың үшiншi деңгейi бар қолданбалы бағдарламасынан шақыруға негiзiнен мүмкiндiк бермейдi. Екiншi әдiс көмегiмен ОЖ-ның процедурасын шақыруға, қол астындағы сегментте бола алатын, дегенмен олар артықшылықтардың қолданбалы деңгейiмен орындалады және жүйелiк шақыруларды көпшiлiк үшiн керек жүйелiк мәлiметтерін ұсына алмайды. Pentium процессоры сондықтан iшкi программаны шақыруда тағы бiр әдiстi қолданады - қолданбалы кодтарға артықшылықтардың өз биiк деңгейiмен жұмыс iстейтiн ерекше құқықты процедуралар шақырылуға мүмкiндiк беретiн (шұра ) шлюз арқылы. Шақырудың шлюздары тағы бiр артықшылықтарға ие болады - шақырылатын процедураларда кiру нүктелерiнiң бақылауының мүмкiндiгi көрiнiп қалады. Демек, шамданған процедураның CALL командасында жылжуды дұрыс емес мәннiң тапсырмасының мүмкiндiгi бар болуға тап қалған жылжумен шақырылатын процедураға кiру нүктесiнiң адресіне екі әдіс қарастырылған, жоғары басқару тапсыруы керек командаға емес немесе тiптi команданың ортасында нәтижеде не бола алатыны анықталады. Шақырудың шлюздары осы кемшiлiктен еркiн.

Кiру нүктелерiнiң ерекше құқықты кодтық сегменттерi жиынмен алдын ала анықталады, және бұл кiру нүктелерi арнайы дескрипторлар көмегiмен суреттеледi - процедураны шақырудың шлюздарының дескрипторлары.

Процедураны шақыруды схема Сурет 2-да шлюз арқылы көрсетiлген.

Сурет 2. Шлюз арқылы программаны шақыру.

Шамданған және шақырылатын процедуралардың аралығында параметрлердi тапсыру мәселесі артықшылықтардың әр түрлi деңгейге ие болатын кодтардың шақыруында пайда болады. Процессорда оны шешiм үшiн артықшылықтардың әрбiр деңгейге, стекке әртүрлi деңгейлер, бiр-бiрленген стектерiнiң болуы ескерiлген. Демек, стек қолданылатын кодтық сегментпен CPL мәнiне кодтың сегменттiң артықшылықтарының ағымдағы деңгейiне әрдайым сәйкес келедi.

Тапсырмаларды шақыру.

Есептердiң арасындағы шақыруды тетiк ауыстырып қосуда процедураны шақырудың тетiктен айырмашылығы болады. CALL командасының селекторы осы жағдайда TSS жүйелiк сегментi дескрипторға көрсетуi керек. Демек, TSS сегмент үзiлген кез келген уақыт есептерінде орындауын қалпына келтiруi үшiн керек мәлiметтi есептiң контекстi сақталады. Есептiң контекстi ашық файлдарға процессордың регистрлерiнiң мәнi, нұсқағыштар қосады және басқару жүйесі тәуелдi болатын кейбiр басқа айнымалы.

Қашықтатылған процедураны (RPC) шақыру

Қашықтатылған процедураны шақырудың тұжырымдамасы

Қашықтатылған процедураларды шақыру идеясы (Remote Procedure Call - RPC) бір машинада орындалатын, басқаруды және деректерді желі арқылы беретін жақсы танымал және түсінікті механизмнің кеңейтілуінен тұрады. Қашықтатылған процедуралар құралы өндірісте есептеуді бөліп беруді жеңілдетуге парналған. RPC қолданудың тиімділігі аз жауабымен қашықтатылған компоненттер мен аз мөлшерде берілетін деректер арасында интерактивті байланысы бар қосымшаларда болады. мұндай қосымшалар RPC-бағытталған деп аталады.

Локальді процедуралардың шақыруының ерекше белгiлерi:

  1. Асимметриялылық, яғни өзара тараптардың бiрi бастаушы болса.
  2. Синхрондылық, яғни сұрауды беру кезіндегі тоқтату мен шақыртылған процедураны жаңарту кезінде қайтарылғаннан кейін шақыртылатын процедураның орындалуы.

Қашықтатылған шақыртуларды орындау локальді шақыртуларды орындауға қарағанда әлдеқайда қиынырақ. Шақыратын және шақыртылатын процедуралар әртүрлі машинада орындалатынын ескеретін болсақ, онда олар адрестік кеңістіктен тұрады және бұл, әсіресе машиналар сәйкес келмесе параметр мен нәтижені беру кезінде қиындықтар тудырады. RPC бөлінген жадты есептей алмаса, бұл RPC параметрлері стекті емес жадтар ұяшықтарына сілтемеден тұруы керек және параметрлер мағынасы бір компьтерден екіншісіне көшірілуі керек екендігін білдіреді. RPC-тің локальді шақыртудан келесі айырмашылығы төмен орналасатын байланыс жүйесінде міндетті түрде қолдануы, бірақ бұл процедураны анықтау кезінде де, процедураның өзінде де анық көрінбеуі керек. Алшақтық қосымша кедергілер енгізеді. Бағдарламаны шақыруды және локальді процедураны шақыртуды бір машинада орындау бірыңғай процесс айналасында орындалады. Бірақ RPC-ді іске асыру кезінде екі процесс қатысады- бір-бірден әр машинада. Екеуінің біреуі авариялы тоқтатылған жағдайда келесі жағдайлар пайда болу мүмкін: шақыратын процедураның авариялық жағдайында қашықтатылған шақыртылған процедуралар «жетімсіреп» қалады, ал қашықтатылған процедуралдың авариялық аяқталу кезінде шақыратын процедуралар «ата-анасынан қаріп» болып қалады.

Одан басқа бағдарламалау тілінің біркелкі болмауіы мен операциялық ортасымен байланысты кез-келген бағдарламалау тілін қолдайтын деректер құрылымы және процедуралар шақыру құрылымы басқа тілдерде сияқты қолдамайтын кедергілер реті бар.

Осы және басқа кедергілер көптеген операциялық жүйелерді бөлу негізінде жататын RPC технологиясын кең көлемде таратуды шешеді.

RPC-дің базалық операциялары

RPC жұмысын түсіну үшін, ең алдымен, кәдімгі машинада орындалатын автономды жұмыс істейтін локальді процедураны шақыруды қарстырайық. Мысалы бұл жүйелік шақырту болсын

count=read (fd,buf,nbytes);

мұндағы fd –бүтін сан,

buf – символдар массиві,

nbytes –бүтін сан.

Шақыртуды жүзеге асыру үшін шақыратын процедура стектегі параметрді кері ретпен қозғайды. Read шақыруы орындалғаннан кейін ол бастапқы жағдайына келтіре отырып парметрден стек таңдайтын қайтарылатын мәнді регистрге орналастырады, қайтару адресін ауыстырады және шақыратын процедураның басқаруын қайтарады. С тілінде парметрлер шақыртылуы мүмкін немесе сілтеме (by name), мәні (by value) бойынша да шақыртылады. Шақырылатын процедураға қарағанда параметр-мәндер локальді айнымалыларға сәйкестендірілген болады. Шақыртылатын процедуралар оларды өзгерте алады және осы айнамалылар түпнұсқасының мәніне әсер етпейді.

Егер шақырылатын процедураға айнымалыға сілтеуіш берілсе, онда осы айнымалының мәнінің процедурамен өзгертілуі шақыратын процедура мен айнымалының мәнінің өзгертілуіне алып келеді. RPC үшiн бұл айғақ тiптi мағыналы. С тілінде қолданылмайтын параметрлерді берудің таға да басқа механизмдері бар. Ол call-by-copy/restoreдеп аталады және айнымалыларды мән түрінде стекке шақыратын бағдарламамен көшірудің қажеттілігінен тұрады.

Параметрлерді берудің қандай механизмін қолдану керектігін тілді құрастырушылармен шешіледі. Кейде бұл берілетін деректер типіне байланысты болып келеді. С тілінде, мысалы, бүтін және скалярлы деректер мән бойынша беріледі, ал массивтер сілтеме бойынша.

RPC негізіне жататын идея қашықтатылған процедураны шақырудың локальді процедураға ұқсас болып көрінуінде. Басқаша айтқанда – RPC-ді мөлдір етіп көрсетуінде.

RPC мөлдірлікке келесі жолдармен жетеді. Шақырылатын процедура шынымен де қашықтатылған болса кітапханаға локальді процедура орнына клиенттік стаб (stub - заглушка) деп аталатын процедураның басқа түрі орналасады. Түпнұсқа процедураға ұқсас стаб реттелген шақырумен орындалады және де ядроға қарау үзілісі пайда болады. Бірақ түпнұсқа процедураға қарағанда ол параметрлерді регистрге орналастырмайды және ядродан деректер сұрастырмайды, оның орнына ол қашықтатылған машина ядросына жіберетін хабарлама құрастырады.

RPC орындау этаптары

Клиенттік стаб бағдарлама-клиентпен шақырылғаннан кейін оның бірінші мақсаты буферді жіберілген хабарламалармен толтыру болып табылады. Кейбір жүйелерде клиенттік стаб әр кез басынан жаңа сұраныс кеген сайын толтырылатын бекітілген ұзындықты жалғыз буферден тұрады. Басқа жүйелерде хабарлама буфері бөлек хабарламалар үшін өздерінің буферінің пулы болады, және де кейбір буферлер толтырылған болады. Бұл әдіс әсіресе үлкен сандар жолынан тұратын форматтан тұратын пакетке арналған, бірақ бұл жолдар мәні шақыртудан шақыртуға өзгермейді. Содан кейін параметрлер сәйкес келген форматқа ауысу керек және хабарлама буферына қойылуы керек. Осы мезетте хабарлама жіберілуге дайын, сол үшін ядроның шақырылуы тоқтатылады.

Ядро басқару алғанда ол контексті қайта қосады, процессордың регистрлерін және карталық жадты сақтайды.(беттердің дескрипторы), ядроның режимінде жұмыс жасайтын жаңа карта жадын орналастырады. Ядроның және қолданушлық контекстісі ерекшелінеді, оған рұқсаты бар ядро өзінің адрестік кеңістігіне хабарламаны көшіру керек,тағайындалған адресті сақтау және желілік интерфейске жіберу керек. Осымен клиенттің жағында жұмыс істеу бітеді. Жіберу таймері қосылады және ядро циклдік сұраудың жауабы болуы немесе жоспарлау басқаруына,яғни қандай да бір басқа үрдістің орындалуын таңдайды. Бірінші жағдайда сұраныстың жіберілуі тездетіледі, бірақ мультипрограммирование болмайды.Сервердің жағында түсуші биттер қабылдайтын құрылғыларға орналастырылған буферге немесе оперативті жадқа орналастырылады. Барлық ақпарат келген кезде үзулер генерацияланады. Өңдеуші үзулердің деректер пакетінің дұрыстығын тексереді және қандай стабқа жіберілетінің анықтайды. Егерде стабтардың ешқайсысы осы пакетті күтпесе,онда өңдеуші буферге орналастыру керек немесе одан бас тарту керек. Егер күтуші стаб болса, онда хабарлама соған көшіріледі. Әйтеуір контекстердің ауысуы орындалады,нәтижесінде регистрлер және жад картасы қалпына келгенде, стаб receive шақыру жасайды.

Енді серверлік стаб жұмысты бастайды. Ол параметрлерді ашады және оларды керекті түрде стекқа орналастырады. Барлығы дайын болған соң, сервердің шақырылуы орындалады. Процедура орындалғаннан кейін нәтижесін сервер клиентке жібереді. Ол үшін барлық көрсетілген деңгейлер кері тәртіпте орындалады.

RPC орындалуынның арасында 14 деңгейінің бөліну уақыты.

1. Стабтың шақырылуы

2. Буферді дайындау

3. Параметрлерді қаптау

4. Тақырып жолын толтыру

5.Хабарлманың бақылау сомасын есептеу

6. Ядролық үзулер

7.Пакеттердің орындалу кезектері

8. QBUS шинасының контроллерге хабарлама жіберу

9. Ethernet желісі бойынша жәберу уақыты

10. Контроллерден пакет алу

11.Үзулердің өңдеу процедурасы.

12.Бақылау соммасын анықтау

13. Контесктің қолданушының кеңістігіне ауысуы

14. Серверлік стабтың орындалуы

Динамикалық байланыстыру

Клиент сервердің орналасуын қалай береді екені туралы сұрақты қарастырамыз. Осы мәселенің шешу тәсілдерінің бірі клиенттік бағдарламада сервердің желілік адресінің тікелей қолдануы. Осы қатынастың кемшілігі оның төтенше иілмеушілігі:сервердің орын ауыстыруы немесе серверлердің сандардың өсуі,интерфейстің өзгеруі осы және басқа жағдайларда барлық бағдарламаны қайтадан компилирлеу,серверлік адрестің қатаң тапсырмасын орындау.Осы мәселерді болдырмау үшін кейбір таратылған жүйелерде динамикалық байланыстыру қолданылады.

Динамикалық байланыстыру үшін бастапқы мезеті сервердің формальді анықтамасы (спецификациясы) болып табылады. Спецификация файл-сервердің аты,версияның нөмері және қызмет-процедурасының тізімі құрамында бар берілген сервердің клиентке берілуі.

Серверге берілген кіріс немесе шығыс параметрлерге қатысты әрбір процедура үшін оның парамерлерінің суреттелуі беріледі. Кейбір параметрлер бір уақытта кіріс және шығыс болуы мүмкін,мысалы кейбір массивті клиент серверге жібереді,сол жерде модифицирленеді содан кейін клиентке қайтарылады.

Сервердің формальді спецификациясы стабтың бағдарлама-генераторы үшін шығыс деректері сияқты орындалады,клиенттік және серверлік стаб құрады.

Содан кейін олар сәйкес кітапханаларға орналастырады. Қолданушылық бағдарлама әртүрлі процедураларды шақырады,спецификацияның сервері сәйкес келген стаб-процедурасы екілік кодпен байланысады. Сервер компиляцияланған кезде серверлік стабтармен байланысады.

Серверді жүктегенде ең бірінші – өзінің серверлік интерфейсін арнайы, яғни binder'ом бағдарламасында іс әрекетін бастайды. Бұл процесс - серверді тіркеу:сервер өз атын беруді,версия нөмірінлерін,мінсіз идентификаорды және сервер орналасқан жерді сипаттаушыны қосатын үрдісі ретінде танымал.

Сипаттаушы жүйеге тәуелсіз және IP, Ethernet, X.500 немесе тағы қандай да бір адрес болуы мүмкін. Сондай-ақ ол басқа да информация сақтай алады, мысалға, аутентификацияға жататын.

Клиент өшірілген процедураны бірінші рет шақырғанда, мысалға read, клиенттік стаб серверге қосылмағаннын көреді де binder-бағдарламас

Наши рекомендации