Развитие на ос. Основни типове


Мрежови Операционни системи



страница7/8
Дата17.10.2018
Размер2.7 Mb.
#90651
1   2   3   4   5   6   7   8

Мрежови Операционни системи


Мрежовите ОС не се различават фундаментално от ОС за единичен компютър. Те се изграждат по пътя на разширение на съществуващото (немрежово) програмно осигуряване със средства за комуникация. На всеки главен компютър работи собствена ОС, като на приложните програми се възлага управлението на мрежовите функции.

Някои системи дават възможност на потребителите да влизат дистанционно в друг компютър, използвайки команда от вида:



rlogin computer

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

Друга възможност е да се копират дистанционно файлове от един компютър на друг чрез команда от вида:

rcp computerl:filel computer2:file2

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

Подобни команди съществуват например в UNIX и читателят може да се запознае с подробности по използването им.

Описаната форма за комуникация е примитивна и затова се прилагат по-ефективни начини за комуникация и споделяне на данните. Един такъв подход е използване на модела клиент-сървър (фиг. 1). Всеки компютър има собствена локална файлова система и файловете са достъпни само на потребители, работещи на съответния компютър. Общите файлове са организирани във файлова система, разположена в една машина, наречена централизиран файлов сървър, и достъпна за всички възли. В някои случаи е по-ефективно използването на няколко сьрвъра (разпределени файлови сървъри). Файловите сървъри приемат заявки за четене или запис от потребителски програми, изпълнявани от другите компютри на мрежата, наречени клиенти, Всяка заявка се проверява и изпълнява, и отговорът се връща обратно.

Второто ниво е виртуалната файлова система (VFS). Тя има две важни функции. Първата е, че позволява достъп до различни файлови системи, монтирани локално. Втората е, че поддържа таблица, в която за всеки отворен файл се поддържа v-възел (вж. гл. Х). Тя се използва, за да се определи дали файлът е локален или отдалечен. За отдалечените файлове има достатъчно информация, за да се осигури достъп до тях.

За локалните заявки VFS активира съответните операции в съответния тип локална файлова система, а за отдалечените заявки извиква процедура на третото ниво.

Най-ниското ниво реализира NFS-протоколните процедури за отдалечени заявки. То изпраща по мрежата съобщение със заявка към отдалечения сървър, което се препраща към VFS на сървъра и изпълнява като локална заявка. На фиг. 2 е показана пътеката на изпращане на заявка. По същата пътека обратно се връща и резултатът (извикващият процес в клиента се блокира до получаването на отговор от сървъра). В NFS клиент и сървър са еднакви и машината може да бъде клиент или сървър (или и двете).

Съобщенията се оформят като пакети на RPC (Remote Procedure Call, отдалечено извикване на процедура). Данните, изпращани по мрежата, се кодират по метода XDR (Extended Data Representation).


Разпределени ОС

Разпределената система се изпълнява на множество машини, но за потребителите изглежда като ОС за единичен компютър (това свойство понякога се нарича образ на единичната система). Още се казва, че системата е разпределена, когато се изпълнява на мрежа от компютри, но действа като виртуална еднопроцесорна. Потребителите не трябва да знаят къде се изпълняват програмите им или къде се намират файловете им - това се поддържа автоматично от ОС.

Разпределените системи се различават значително от мрежовите. Те например често разрешават на програми да се изпълняват едновременно в няколко възела, всеки изпълняващ определени функции или обработващ определени данни. При това връзката между отделните възли е по-тясна, а зависимостта им - по-силна. Комуникационните закъснения в мрежата внасят допълнителни трудности в тези и други алгоритми, тъй като информацията (за разлика от еднопроцесорните системи) може да е непълна, неактуализирана, а възможно е и да е невярна. Накратко ще бъдат разгледани някои принципни проблеми на изграждането на разпределените ОС [38, 49, 85, 87, 88, 93].

Комуникация между процесите. Разпределената ОС може да се организира на базата на модела OSI. Обаче, преминаването на всяко съобщение през нивата и обработката на заглавните полета консумира много време. За глобалните мрежи, където скоростта на предаване обикновено е 64К бита/секунда, загубата на ефективност може да се пренебрегне. При локалните мрежи загубата на ефективност е значителна и затова при тях е подходящ моделът „клиент-сървър".

Основната идея е разгледана в гл. V, т. 5.4.5. ОС може да се изгради като група от взаимодействащи процеси, наречени сървъри, които предоставят услуги на потребителските процеси, наречени клиенти. Всички компютри имат еднакви ядра, а сървъри и клиенти се изпълняват като потребителски процеси. Един компютър може да изпълнява един или няколко процеси-клиенти, или процеси-сървъри, или процеси от двата типа.

За да се избегнат протоколи като тези на OSI, тук се прилага прост протокол заявка/отговор (без предварително установяване на връзка). Клиентът изпраща съобщение със заявка за услуга, а сървърът извършва работата и връща необходимите данни. Реализацията изисква само три нива на протоколи (предполага се, че машините са идентични). Първите две нива - физическото и каналното, осигуряват получаването на пакети от клиент към сървър и обратно. Тези нива се реализират апаратно, например чрез схема Ethernet. He е необходима маршрутизация и установяване на връзка, следователно нива 3 и 4 не са нужни. На ниво 5 е протоколът заявка/отговор, включващ група от заявки и съответни отговори. По-горните нива също не са необходими.

По този начин комуникацията може да се изпълнява от ядрото посредством две системни извиквания - едно за изпращане на съобщение и едно за получаване. Проблемите на реализацията им - адресиране на процесите, буфериране на съобщенията, блокиране, надеждност на комуникацията, са подобни на тези, описани в гл. II при реализацията на основните операции send и receive.

Въпреки че описаният модел дава удобен начин за изграждане на разпределени системи, той страда от един недостатък - реализацията на процедурите send и receive се базира на входно-изходни операции. За решаване на този проблем широко се прилага техника, наречена отдалечено извикване на процедури или RPC. Основната идея е да се разреши на програми да извикват процедури, разположени в други машини. Така процес може да активизира процедура в друг възел за извършване на дадена работа, след което се блокира в очакване на резултата. Информация може да се прехвърля към извикваната процедура чрез параметрите, а обратно - чрез резултата от изпълнението на процедурата. Програмистът не се занимава с изпращане на съобщения или с входно-изходни операции (това е прозрачно за него).

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

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

Синхронизация.

В централизираните и мултипроцесорните системи, имащи обща памет и такт, винаги е възможно да се определи редът, в който две събития се срещат. В мрежите понякога това не е възможно. Лампорт дава решение на проблема. Той дефинира отношение настъпил-преди". Изразът а -> Ь, където я и й са събития, означава, че всички процеси са съгласни, че я е настъпило преди Ь. Ако събитията са от един и същи процес, където всички събития са подредени, това е вярно. Ако а е събитие-изпращане на съобщение от един процес и Ь е събитие-получаване на съобщение от друг процес, отношението също е вярно (съобщение се получава, само след като е изпратено).

С всяко събитие се свързва времеви маркер. Изискването за глобално подреждане е: за всяка двойка събития, ако а -> b, тогава маркерът на а е по-малък от този на Ь. Реализацията се свежда до дефиниране във всеки процес на логически таймер, който може да се реализира като брояч, инкрементиран от тактовия генератор между кои да е успешни събития, настъпили в процеса.

Тогава всяко събитие има уникална стойност на брояча, която става негов времеви маркер.

По този начин се осигурява подреждането на събитията в отделните процеси. Тъй като в различните процесори тактовата честота се различава и логическите таймери нарастват с различна скорост, за удовлетворяване на изискването за глобално подреждане трябва да се направи следното. Когато процес получи съобщение с маркер, по-голям от текущата стойност на собствения му таймер, той увеличава стойността на таймера си на стойност с 1 по-голяма от стойността на получения маркер. Едно допълнително изискване е, че между две събития трябва да има поне един тактов сигнал.

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

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

Ако координаторът се повреди, нов процес трябва да заеме неговото място. Известни са алгоритми за детекция на повредата и за избор на нов уникален процес-координатор. След като процесът бъде избран, той трябва да провери всички процеси в системата, за да реконструира опашката си от заявки. След тази реконструкция изчислението може да продължи.



Разпределеният подход, при който вземането на решения се разпределя върху цялата система, е много по-сложен за осъществяване. Първото решение е предложено от Лампорт, който използва схемата за подреждане на събитията за тотално подреждане на всички заявки към критичните секции, обслужвайки процесите в ред FCFS. Неговата схема изисква 3(n-1) съобщения за вход в критична секция. По-късно се предлагат по-ефективни разпределени алгоритми, като този на Рикард и Агравала, също базиращ се на схемата на Лампорт, но изискващ само 2(n-1) съобщения.

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

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

Разгледаните в ги, IV подходи за предпазване, избягване и откриване на мъртви хватки могат също така да се приложат и в разпределените системи, като се направят съответни модификации. Например, методът с подреждането на ресурсите за предпазване от мъртва хватка може да се използва чрез просто дефиниране на глобално подреждане между системните събития. На всички ресурси в системата се присвояват уникални номера и процесите могат да заявяват ресурси (чрез какъвто и да е протокол) чрез уникален номер I, само ако той не държи ресурс с номер < t. Подобно, алгоритъмът на банкера може да се използва в разпределени системи, като се проектира един от процесите в системата (банкерът) като процес, поддържащ информацията, необходима да се изпълнява алгоритъмът на банкера. Всяка заявка за ресурс трябва да се канализира чрез банкера.

Разпределена файлова система. Всеки възел има собствена локална файлова система. За разлика от централизирания подход с файлов сървър, локален файл може да е достъпен на потребител от всеки възел на системата. Най-простият начин за реализация е потребителят да знае мястото на всеки файл, до който иска достъп, и да го включва във всяка заявка за достъп. Тази схема не е удобна за прехвърляне на файлове през системата.

При алтернативния подход, мястото на файла е прозрачно за потребителя –той не трябва да знае къде е разположен файлът и достъпът до отдалечения файл се извършва по същия начин, както и до локалния. ОС трябва да поддържа таблици и да използва алгоритми, които й позволяват да намери файл навсякъде в системата.



Процесори. В разпределените системи процесорите могат да бъдат организирани по различни начини. Най-често се използват два модела –моделът с работни станции и моделът с общ процесорен фонд [72, 93]. При първия от тях системата се състои от работни станции, свързани с бърза локална мрежа. В някои системи работните станции нямат дискови устройства и тогава файловата система се реализира на файлови сървъри. Всеки потребител използва собствена работна станция, като понякога е възможно процесите му да се изпълняват и от незаетите станции. Основните проблеми, който трябва да се решат, са как да се откриват свободните станции, как отделечените процеси да се изпълняват прозрачно и какво ще стане, ако собственикът се върне на станцията си, която е предоставена за изпълнение на чужд потребителски процес, тъй като е била свободна.

Вторият подход позволява значително да се повиши изчислителната мощност на системата. Процесорите динамично се разпределят на потребителите при поискване и се връщат във фонда след свършване на работата. Вместо с работни станции, потребителите разполагат с бързи графични терминали (малки работни станции също могат да се използват като терминали), свързани към мрежата.

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

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



Планирането в разпределените системи не се отличава от това в централизираните (гл. VI) - всеки процесор извършва собствено планиране, без оглед на останалите. Обаче, когато група процеси (протичащи на различни процесори) интензивно си взаимодействат, независимото планиране може да доведе до неефективни резултати. За решаването на проблема са предложени някои алгоритми, основани на принципа на съпланиране.
11.3 Клъстери.

Клъстеризацията е нова област в комп. техника, развивана като алтер-натива на симетричната мултиобра-ботка за постигане на висока произво-дителност и работоспособност. Клъс-терът е група свързани компютри, ра-ботещи заедно като обединен изчис-лителен ресурс, създавайки илюзия за един комп. Всеки комп. се нарича въз-ел на клъстера. Клъстерът може да се разширява според нуждите и да включва десетки възли, всеки от които може да е мултипроцесорна система. Конфигурация. Клъстерите могат да се класифицират по различни начини. Общ, по-стар метод, наречен пасивна резерва (Passive Standby), предполага един комп. обработващ цялото входно натоварване, докато друг стои неакти-вен, резерва в случай на повреда на първия комп. Обикновенно такава ор-ганизация не се смята за клъстерна. Могат да се определят 3 метода за клъстеризация.



Първият предполага всеки комп. да е отделен сървър със собствен диск. При случай а два възела са свързани с високоскоростна линия за размяна на съобщения. Тя може да бъде локална мрежа, към която се свързват и други комп., невлизащи в клъстера. Когато е самостоятелна линия, един или повече възли на клъстера са свързани към локална или глобална мрежа. Жела-телно е да има възможност при пропа-дане на един комп., друг да поеме из-пълняваното приложение. За целта, данните трябва да се копират м/у комп., така че всеки да има достъп до данните на другите комп. Осигурява се висока работоспособност за сметка на производителността. За да се нама-ли комуник. натоварване чрез елими-ниране на копирането, могат да се из-ползват сървъри, свързани към общи дискове(случай б). Най-често дискова-та подсистема използва дублиране или масив от дискове (RAID), за да се ком-пенсира риска от повреда. Един вари-ант на тази схема се нарича никакво съвместно използване (shared nothing). Общите дискове са разделени на то-мове, всеки пртежаван от отделен комп. Ако комп. се повреди, клъсте-рът трябва да се преконфигурира, така че друг компютър да получи неговия том. Възможно е да се изпозват много сървъри, едновременно имащи достъп до едни и същи дискове. Този метод се нарича съвместно изпозван диск (shared disk). Изисква се да има някак-во заключване, така че достъп до оп-ределени данни да има само един комп. в даден момент. ОС. Използва-нето на клъстери изисква разширение на ОС за единични копм. Преди всич-ко това се отнася до мерките, които се взимат при възникване на неизправ-ности. Те зависят от избрания метод за клъстеризация. Единият от методи-те- отказоустойчив клъстер, осигурява всички ресурси винаги да са на разпо-ложение. Това се постига чрез използ-ване на общи дискове с излишък и ме-ханизми за отказване на незаписани транзакции и записване на завършени транзакции. Другият метод са високо-работоспособните (с висока степен на готовност) клъстери, които осигуряват с голяма вероятност, че всички ресур-си са в услуга. Ако настъпи неизправ-ност (например системата пропадне), тогава обработваните заявки се губят. Всяка загубена заявка, ако се повтори, ще бъде обслужена от друг комп. на клъстера. ОС не дава гаранции относ-но състоянието на частично изпълне-ни транзакции. Това трябва да се нап-рави на потребителско ниво. Друг проблем е ефективното балансиране на натоварването м/у наличните комп. Когато се включи нов комп. в клъсте-ра, той автоматично трябва да се включи в балансиращата процедура. Механизми от междинното осигуря-ване (middleware) трябва да разпозна-ват, че услугите могат да се появяват на различни възли и да мигрират по възлите.


ГЛАВА VIII

ВИРТУАЛНА ПАМЕТ

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

8.1 Същност на виртуалната памет

Виртуалната памет е отделяне на потребителската логическа памет от основната памет. Виртуалната памет съществува паралелно със основната памет като м/у тях се осъществява динамично съответствие ч/з механизмите на страничната организация. Виртуалната памет е адресно пространство разделено на страници разположени в/у външно запомнящо устройство. Работата на виртуалната памет наподобява с-мите със странична организация и размяна. На всяко избрано за изпълнение задание се заделя област от виртуалната памет, в която то се разполага като някои от неговите страници се прехвърлят в основната памет като по време на изпълнение страници постоянно се въвеждат и извеждат. Системен механизъм наречен управление на вторичната памет, поддържа таблица с информация за съответствието м/у виртуалните адреси и физ. разположение на данните в/у диска. Съответствието м/у виртуалната и основната памет се управлява от страничен супервайзор, който динамично организира записа на необходимите страници в основната памет. Таблицата на страниците е допълнена с бит за присъствие показващ дали съответната стр. се намира в основната памет. Ако това е така преобразуването на адресите става:


1

Деленето на страници се осъществява при транслацията на програмите, като указателите в командните адреси се състоят от две компоненти –номер на страница(р) и отместване (d)

спрямо началото на страницата. Когато таблицата се разполага в паметта обикновено процесорът е снабден с регистър PTR съдържащ началния адрес на таблицата.Към съдържанието на PTR се прибавя номерът на страницата и от таблицата се чете указателят към съответният кадър. За да се намери търсената дума в кадъра, към указателя се добавя отместването d.

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

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


  1. Процесорът най-напред се опитва да достигне границите на двете области, без да прехвърля данни. Прехвърлянето ще се извърши, когато се знае че страниците са налице.

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

Реализацията на функциите на управлението на паметта при виртуалната памет е значително по-сложна, защото:

1.Информацията за състоянието на паметта се съхранява в три таблици – таблица на страниците на процеса, таблица на кадрите на системата и карта на фаиловете (адреса на страниците във външната памет)

2.Определя кой и кога ще получи памет само частично се решава от планиращата програма – хужни страници се въвеждат и по време на изпълнение.

3.Разпределението решава колко стр. и каде да въведени.

4.Освобождаването на паметта при завършване на процес освобождава всички негови кадри. Освен това, ако няма свободен кадър в основната памет, такъв трябва да се освободи и съответната стр. се въвежда във вторичната памет.




Сподели с приятели:
1   2   3   4   5   6   7   8




©obuch.info 2024
отнасят до администрацията

    Начална страница