Извикване на отдалечена процедура

процедура

Книгата е посветена на семейството операционни системи UNIX и съдържа информация за принципите на организация, идеология и архитектура, които обединяват различни версии на тази операционна система.

Книгата обхваща: архитектурата на ядрото на UNIX (I/O, подсистеми за управление на паметта и процесите и файловата подсистема), UNIX API (системни извиквания и основни библиотечни функции), потребителската среда (обвивка, основни команди и помощни програми) и поддръжка на UNIX мрежа (семейство протоколи TCP/IP, архитектура на мрежовата подсистема, API на сокет и TLI).

За широк кръг потребители

Книга: Операционната система UNIX

Извикване на отдалечена процедура

Извикване на отдалечена процедура

В предишните раздели беше разгледан интерфейс за програмиране на доста ниско ниво - по същество програмата взаимодейства директно с транспортния протокол, независимо прилагайки някакъв протокол от по-високо ниво при обмен на данни. В дадените примери е лесно да се види, че значителна част от кода на тези програми е посветена на създаване на комуникационни възли, установяване и прекратяване на комуникации.

От гледна точка на разработчика на софтуер, по-обещаващ подход е използването на приложен програмен интерфейс от по-високо ниво, който изолира програмата от спецификата на мрежовото взаимодействие. В този раздел ще разгледаме един от тези подходи, въз основа на който по-специално е разработена файловата система NFS, нареченаизвикване на отдалечена процедура(Remote Procedure Call, RPC).

Използването на подпрограми в програма е традиционният начин за структуриране на задача, за да бъде по-ясна. Най-често използваните съчетания са събрани вбиблиотеки, където могат да се използват от различни програми. В този случай говорим за местно (местно) обаждане, т.е. както повикващият, така и повикваният се изпълняват в една и съща програма на един и същи компютър.

В случай на отдалечено повикване процес, работещ на един компютър, стартира процес на отдалечения компютър (тоест той всъщност изпълнява кода на процедурата на отдалечения компютър). Очевидно е, че извикването на отдалечена процедура се различава значително от традиционното локално, но от гледна точка на програмиста практически няма такива разлики; архитектурата на извикване на отдалечена процедура ви позволява да симулирате повикване към локална.

Въпреки това, ако в случай на локално повикване програмата предава параметри на извиканата процедура и получава резултата от работата през стека или споделените области на паметта, тогава в случай на отдалечено повикване предаването на параметри се превръща в изпращане на заявка по мрежата, а резултатът от работата е във входящия отговор.

Този подход е възможна основа за създаване на разпределени приложения и въпреки че много съвременни системи не използват този механизъм, основните понятия и термини в много случаи остават. Когато описваме RPC механизма, традиционно ще наричаме извикващия процес клиент, а отдалечения процес, изпълняващ процедурата, като сървър.

Извикването на отдалечена процедура включва следните стъпки:

1. Клиентската програма прави локално извикване на процедура, нареченаstub(stub). В същото време на клиента "изглежда", че с извикването на заглушката всъщност извиква сървърната процедура. Наистина, клиентът предава необходимите параметри на мъничето и той връща резултата. Ситуацията обаче не е такава, каквато клиентът си я представя. Задачата на мъничето е да приема аргументи, предназначени заотдалечена процедура, може би да ги конвертирате в някакъв стандартен формат и да формирате мрежова заявка. Пакетирането на аргументи и създаването на мрежова заявка се наричасглобяване(маршалинг).

2. Мрежовата заявка се изпраща по мрежата до отдалечената система. За да направи това, мъничето използва подходящи повиквания, като тези, обсъдени в предишните раздели. Обърнете внимание, че в този случай могат да се използват различни транспортни протоколи, а не само семействата TCP / IP.

3. На отдалечения хост всичко се случва в обратен ред. Сървърният стълб чака заявка и, когато бъде получена, извлича параметри, които са аргументи за извикването на процедурата.Демаркиранетоможе да включва необходими трансформации (например промени в реда на байтовете).