Механизмът на гнездата на операционната система UNIX - Обща - операционни системи - статии Directory - желязо цех
Механизмът на UNIX Sockets
Механизмът на контакти (контакти) за първи път в версия 4.3 BSD UNIX (Berkeley Software Distribution UNIX - UNIX клон, започва да се развива в Калифорнийския университет в Бъркли). По-късно, той се превръща в един от най-популярните системи, мрежови съобщения. Днес, този механизъм се прилага в много операционни системи, понякога е още по-нататък Berkeley Sockets, да се почитат своите основатели, въпреки че има голям брой от своите приложения за различни система UNIX, и за други операционни системи, като операционни системи Windows, където тя се нарича Windows Sockets (WinSock).
механизъм гнездо осигурява удобен и сравнително универсален интерфейс за съобщения за развитие на мрежата на разпределени приложения. Неговата универсалност осигурява следната концепция.
механизъм Съобщения гнездо предлага следните примитиви са реализирани като системни повиквания.
S = гнездо (домейн, тип протокол)
Процесът трябва да се създаде контакт преди да го използвате. Socket система обаждане създава ново гнездо с параметрите, определящи комуникация домейн (домейн), типа на връзката се поддържа от гнездо (вида) и транспортния протокол (например TCP или UDP), който ще поддържа връзката. Ако не е посочен транспортния протокол, системата автоматично избира протокол, съответстващ на вида на контакта. Забележка домейн определя възможните стойности на параметрите на другите две. Система за повикване връща гнездо ЕВРОВОК създаден от контакта, който се използва като идентификатор на гнездо в следващите операции.
свързват (ите. адр. addrlen)
- Искане за установяване на връзка с отдалечен контакт:
свързване на (S, server_addr. server_addrlen)
- В очакване на искане за установяване на връзка:
слушате (и. изоставането)
- Приемането на искането за връзка:
snew = приема (ите. client_addr. client_addr1en)
- Изпращане на съобщение на съществуваща връзка:
пиша (и послание., msgjen)
Съобщения msg_len дължина, съхранени в буфер съобщение, изпратени до получателя, който е свързан към гнездо предварително-S.
- Получаване на съобщение на съществуваща връзка:
Mbytes = чете (snew, буфер, количество)
Едно съобщение, пристигащи чрез snew гнездо които преди свързан към подателя е получено в буфер размер на размера на буфер. Ако няма съобщения, в процеса на получаване блокиран.
- Изпращането на съобщения без установяване на връзка:
SendTo (ите. съобщение, receiver_address)
- Получаване на съобщения без установяване на връзка:
количество = recvfrom (S, съобщение, SENDER_ADDRESS)
Помислете за използването на системата нарича механизъм гнездо за организиране на комуникацията между двете възли.
За обмен на кратки съобщения, които не се нуждаят от надеждна доставка и ред, то е препоръчително да се използват системни функции, които не изискват връзка. Фрагмент от програмата, за да изпращате може да изглежда така:
S = гнездо (AF_INET SOCKJJGRAM.0.):
свързват (S, sender_addr, sender_addrlen):
SendTo (S, съобщение, receiver_addr);
Съответно, за получателя на процеса:
S = гнездо (AF_INET, SOCK_DGRAM, 0);
свързват (и receiver_addr, receiver_addrlen.):
количество = recvfrom (S, съобщение, sender_addr):
Постоянно AF_INET уточнява, че обмяната се извършва в съобщението на интернет домейн и SOCK_DGRAM постоянно определя режим обменът на дейтаграми без установяване на връзка. Изборът на транспортен протокол е оставено на преценката на системата.
Ако е необходимо да се организира обмен на съобщения с надежден начин за поръчване, фрагменти от програмите ще бъдат както следва.
S = гнездо (AF_INET SOCK_STREAM.0.);
свързване на (S, server_addr, server_addrlen);
wrlte (S, съобщение, msgjen);
wrlte (S, съобщение, msgjen);
S = гнездо (AFJNET SOCKJTREAM.0.):
свързват (S, server_addr, server_addrlen);
snew - приема (и c11ent_addr, cl1ent_addrlen.);
nbytes = четат (snew, буфер, количество);
nbytes = четат (snew, буфер, количество);
Remote Procedure Call
Друг удобен механизъм, улесняване на взаимодействието на операционни системи и приложения в мрежата, механизъм за дистанционно извикване на процедура (Remote Procedure Call, RPC). Този механизъм е построен на върха на система OS съобщения обмен, така че в някои случаи това позволява по-удобно и прозрачен начин за организиране на мрежа за сътрудничество програми, но нейната полезност не е универсална.
Remote Procedure Call Concept
Идеята на отдалечена процедура е да се повиши добре познат и разбира от механизъм за контрол на предаването и данните в рамките на програма, която е само на една машина, за прехвърляне на контрола и данни през мрежата. RPC решения са предназначени за улесняване на организацията на разпределени изчисления. механизъм RPC се реализира за първи път компанията Sun Microsystems, и той е в добро съгласие с мотото "мрежа - компютър", за да се вземат на компанията му в експлоатация, по-близо до местния програмиране на мрежата. RPC-висока ефективност се постига в тези приложения, в които има интерактивна комуникация между отдалечени компоненти с малка време за реакция и относително малко количество данни предава. Такива приложения са известни като RPC ориентирани.
Характерните черти са местната процедура разговор:
- асиметрия - едната страна на съобщението е да се започне сътрудничество;
- синхрон - изпълнение на повикващия е блокиран от искането за издаване и възобновено едва след завръщането си от наречената процедура.
RPC следните разлики от местната разговор е, че той винаги използва системата на основното съобщения, но това не трябва да се вижда ясно във всяка дефиниция на процедури или на самите процедури. Разстояние въвежда допълнителни предизвикателства. Изпълнение на обаждащия се и нарича местна процедура в една и съща кола, продавана в един процес. Но в изпълнението на RPC включва най-малко два процеса - по един във всяка кола. Ако някой от тях се разби, могат да се появят следните ситуации:
- произшествие, причинено от повикващия дистанционно процедури стават "осиротели";
- Необичайно прекратяване на отдалечени процедури са "визитната процедура мизерстващи родители, което ще бъде напразно да се очаква отговор от отдалечения процедура.
В допълнение, има няколко проблема, свързани с многообразието на програмни езици и операционни среди: структури и процедури за данни наричат структура поддържа във всеки език, един за програмиране, който не се поддържа по абсолютно същия начин, както и на други езици.
Помислете как технологията на RPC, че е в основата на много разпространени операционни системи, решава тези проблеми.
За да разберем работата на RPC, нека първо да обмислят прилагането на местна процедура призив към самостоятелен компютър. Нека да е, например, ще запиша данни на процедура на файл:
Тук FD - един файлов дескриптор, цяло число, Buf - указател към масив от символи, дължина - дължина на масива, цяло число.
Решението за това кой параметър преминаване механизъм се използва разработчиците адаптират езика. Понякога това зависи от вида на предаваните данни. В C език, например, цели числа, както и други скаларни данни винаги се предава по стойност, и масиви - връзката.
Фигура 9.6 илюстрира параметрите на предаване на наречената процедура: стека преди напише повикване (а), стека по време на процедурата (б), стека, когато се завръщат викащата програма (а).
Идеята се формира основа за RPC, е да се обадите на отдалечен процедура, ако е възможно приличаше на местна процедура повикване. С други думи, необходимо е да се направи механизъм RPC е прозрачен за програмиста: повикващия не е необходимо да се знае, че се нарича процедурата е на друга машина, както и обратното.
механизъм RPC постига прозрачност следва. Когато наречената процедура наистина е отдалечена във времето, в друга версия на процедурата, наречена клиента Стабия (- мъниче мъниче) процедури за изпълнение на местната библиотека, вместо първоначалния процесуален кодекс се поставят. На отдалечения компютър, който действа като процедура на сървъра, сложи оригиналния код на наречената процедура, както и още един пън, наречен сървър Стабия. Присвояване на квитанциите за клиента и сървъра - да организират прехвърлянето на параметрите на нарича процедурата и връща стойността на процедура чрез мрежата, докато първоначалната процесуален кодекс, който се поставя на сървъра трябва да се поддържа напълно. Стълбове, използвани за предаване на данни чрез мрежата на подсистемата за съобщения, която е на разположение в примитивите OS изпращат и получават. Понякога подсистема съобщения пусна софтуерен модул, който организира мъничета за връзка с изпращане на съобщения примитиви, наречен модул RPCRimtime.
Тази операция се нарича опаковане параметрите на работа. След това, все още мъниче клиент се отнася до примитивно изпращане, за да изпратите съобщението на отдалечения компютър, който е поставен върху изпълнението на първоначалната процедура. След получаване на съобщение от мрежата, операционна система ядрото на отдалечения компютър призовава коляновия сървъра, която извлича от параметрите на съобщения и призовава първоначалната процедура по обичайния начин. За да получите съобщение на сървъра кочан с първо трябва да се обадя на получаване примитивен, ядрото е знаел за които бе съобщено. коляновия сървъра разархивира кол опциите, налични в доклада, и по обичайния начин е оригиналната процедурата, минавайки на параметрите в стека. След края на процедурата на сървъра мъниче пакети в резултат на неговата работа в ново съобщение и използване на примитивна изпрати ./ "предава съобщение по мрежата към клиента Stabu и връща формира конвенционален" Zoom резултата и контрол на процедурата по призвание. Процедурите, които не водят 'ра или оригинален нарича процедура не променя факта, че те започнаха да работят на различни компютри.