Реферати українською » Информатика, программирование » Технології віртуалізації: Вчора, Сьогодні, завтра


Реферат Технології віртуалізації: Вчора, Сьогодні, завтра

Страница 1 из 3 | Следующая страница

>МІНІСТЕРСТВООСВІТИ І НАУКИ УКРАЇНИ

>КРАСНОДОНСЬКИЙПРОМИСЛОВОЕКОНОМІЧНИЙКОЛЕДЖ

>Реферат із предмета: «>Операційнісистеми»

На тему:

«>Технологіївіртуалізації:вчора,сьогодні, завтра»

Студентагрупи1ОКІСМ-06

Петренко Михайла

>Перевірила:Дрокіна Т. М.

Краснодон

2009


>Зміст

>Вступ

1.Віртуалізаціяпозавчора:віртуальнапам'ять йстандартніінтерфейсиопераційних систем

a)Паравіртуалізація йбінарнатрансляція

b)VMWareWorkstation йVMWareServer

з) MicrosoftVirtualPC /VirtualServer

2.Віртуалізаціясьогодні й завтра: IntelVT й AMD «>Pacifica»

>d)Віртуалізація завтра: AMDSecureVirtual Machine «>Pacifica»

3.Іншіпідходи довіртуалізації.Віртуальна машинаXen

4.Емуляторивіртуальних машин


>Вступ

>Віртуальний світло,віртуальнареальність,віртуальність...Ці тасхожіпоняттядедаліглибшевходять до нашого життя,неминучезмушуючи вчерговий раззамислитися про природусущого, продилемупервинність (>матерія чисвідомість), про природулюдськогорозуму й пробезсмертя,нарешті...Замислитися - на нового виткарозвиткулюдськихуявлень проустрій світу,появою йпереосмисленням які ми багато вчомузобов'язаністрімкомурозвиткуінформаційних такомп'ютернихтехнологій заостаннікількадесятків років.

Алі темацієї з статтею - усе ж таки таки не пробезсмертялюдськогорозуму увіртуальнійреальності, а про более «>приземлених» йприкладнихречі. Протехнологіївіртуалізації, щодозволяютьсучасним ймайбутнімкомп'ютерівзамінювативиконання одногоіншим.Наприклад, более легкого йзвичного болеевідповідним йефективним. Колидозволяютьстворювативіртуальнісередовищаіснуванняпрограм йцілихопераційних систем, атакожодночасно (буквально - одномоментно)співіснувати йвиконуватися на одномупроцесорідекількомопераційним системам,забезпечувати їхнінезалежність й захист один від одного, багаторазівпідвищуючи тім самимзручністькористуваннякомп'ютером.

>Підвищенийінтерес докомп'ютернихтехнологійвіртуалізації в даний годину невипадковий.Обчислювальнапотужністьнинішніхпроцесорівшвидкозростає, й запитаннянавіть над боцюпотужністьвитрачати, а босучасна «мода» надвоядерні йбагатоядернісистеми, що проникла, уже й вперсональнікомп'ютери (ноутбуки тадесктопи), як не можнакращедозволяєреалізуватибагатющийпотенціалідейвіртуалізаціїопераційних систем йдодатків,виводячизручністькористуваннякомп'ютером нановийякіснийрівень.Технологіївіртуалізаціїстають одним ізключовихкомпонентів (у томучислі, ймаркетингових) лише у нових ймайбутніхпроцесорах Intel й AMD, вопераційних системах від Microsoft й рядуіншихкомпаній. Інайближчим годиною миможемопобачити на цьомуполі неменшжаркібаталії, ніж тих, що недавногриміли із приводупідтримки64-бітнихінструкцій чидвоядерними впроцесорахAthlon й Pentium. Отже, тут мизробимоспробурозібратися, до тогочислі, ізтехнічного боці (невдаючись,однак,занадтоглибоко вдеталі), щоявляють собоюапаратнітехнологіївіртуалізації впроцесорах Intel й AMD, атакожрозглянемопрограмнірішення повіртуалізації відрізнихвиробників, без чогозастосуваннявіртуалізації вкомп'ютерахтакожнемислимо.

Аліперш ніж перейти доновітніхтехнологійвіртуалізації,необхіднозгадати, яквзагалівіртуальність добуласянадракомп'ютерів й как онаполегшила життя їхнітворцям йкористувачам.


1.Віртуалізаціяпозавчора:віртуальнапам'ять йстандартніінтерфейсиопераційних систем

>Взагалі, «>віртуалізація» -це один знаріжнихкаменів Сучасноїобчислювальноїтехніки. Поправдісказати, «>віртуальний» й «>нематеріальних»будь-якийкомп'ютер,починаючище ізперших «>пентіуми»:адже, посуті,будь-якавиконує ними команда,інструкція,операція втій чиіншіймірівіртуальна. Програмипрацюють ізвіртуальною, а чи нефізичноюоперативноюпам'яттю,процесори «нальоту»перекодуєx86-інструкції всвійвнутрішнійRISC-подібний формат, драйверапристроїв таопераційнісистемиховають подстандартнимиінтерфейсамидоступне всистеміобладнання. Це частоповільно,цемайжезавжди складно, але йце - Єдинийспосіб хочякосьгарантувативідноснунадійність йпорівняльнуефективністьтієїжахливо,непомірновеличезноїсистеми, якої миназиваємосучаснимкомп'ютером.

Алі що ж тодіховається замодними востанніпівроку словами «>технологіївіртуалізації», котрі, якзапевняють нас грандіпроцесоробудування, стані неменшвагомим аргументом упитаннікупівлі новогопроцесора, ніжще рокта два тому бувзбільшенапродуктивність?

Убільшостіросійськомовнихчитачів слово «>віртуальний»,всупереч йогоспоконвічногопоходженням, співуче,викликаєприблизнооднаковіасоціації ізчимосьнематеріальних,неіснуючим на самом деле. Аліпочатковийсенс його вобчислювальнійтехніцінабагатоконкретніше йпростіше - «>віртуальні»об'єкти тутзавждиозначаютьякісьабстрактніінтерфейси, заякимиховаєтьсяреальнийобладнання.Основнаідея, добропростежується тутостанні роківдвадцять -цепрагнення максимальноспростити заподіяннярозробникампрограмного забезпечення,надавшикожнійпрограмі (відеалі) застандартним «>віртуальногокомп'ютера», наякому воназможепрацювати безоблікувзагалі які бі то ми не було бсторонніхчинників -комп'ютера, наякому вона запущена, чиіншихпрацюють на цьому жкомп'ютеріпрограм. І,требасказати,результати тут булидосягнутівражаючі.Першіпроцесорипрацювалибезпосередньо із «>фізичною»оперативноюпам'яттю,безпосередньовказуючи впрограміконкретнукомірку вмодуліпам'яті, ізякою смердотіпрацювали.Виходило щось накшталт «модульпам'яті # 1,мікросхема 4, банк 3, рядданих 63, байт 13, - чи, удвійковійнотації,« модуль 01,мікросхема 01000, банк 11, рядданих 0111111, байт 01101 ».Ці числазаписувалисяпідряд - й виходив адресою 010100011011111101101,тобто 669 677 узвичній намдесятковійнотації. Придотриманнімінімальнихобмежень наорганізаціюмодулівпам'яті при такомуспособізаписуфактичновиходить, що минумеруючиелементупам'яті щойдутьпідряд числами,починаючи із нуля йзакінчуючидеякими великим числом. Ацезручно йпроектувальникам «>заліза», йпрограмістам. (Доречі,самезвідсипішло правило «>обсяг модуляпам'яті винен бутиступенемдвійки» - при такомупідході усімолодшібітифізичноїадреси модулявиходятьдопустимими, й внумерації адресуфізичноїоперативноїпам'яті невиникає «>дірок»). Вісь ізцими «>фізичними адресамипам'яті», щоутворюютьвідрізок начисловоїпрямої, Першіпрограми йпрацювали. Система був за своїмдоситьвитончена, але й, на шкода, абсолютно непристосована дляодночасноговиконаннякількохпрограм, - вкращомувипадку однапрограма вкомп'ютері могла одну годинупередаватиуправлінняіншій.

>Взагалі, проприйоми роботи того години можнаскластинепоганевраження,якщозгадати, щомодулізвичної намдинамічноїоперативноїпам'яті (>DRAM), щовимагаютьрегулярної «>підзарядки»,програмістові в тихднідоводилося «>оновлювати» («>регенерувати»)самостійно. Праворуч до того, щомодуліDRAM порівняношвидковтрачаютьзберігається у яких увигляді зарядумікроконденсаторовінформацію («>швидко» тутозначає «замілісекунди»), й у тому годинуцюособливістьданого типупам'ятідоводилосявраховувати «>вручну»,тобтопрограмнимизасобамипрописуючизвернення доклітинок («>стовпцями») й тім самим регулярнооновлюючи щозберігається впам'ятіінформацію.Лишепізнішефункціюрегенераціїпам'ятіпоклали насхемотехніку ймікросхемисистемноїлогіки (>контролерипам'яті) «>навчилися»проводитирегенераціюпам'ятіавтоматично, у фоновомурежимі йнепомітно дляпрограміста. Яка уже тодібагатозадачність - зарегенерацією бвстежити...

>Втім,складність,пов'язана ізнеобхідністюоблікунаявності уфізичнійоперативноїпам'ятіодночаснодекількохпрограм (й абсолютнорізноїінформації - коду,даних, стека,керуючих структур) -целишепівбіди.Головна жбідаполягає до того, що вбудь-якихпрограмахзустрічаютьсярізніпомилки (>причому,чимскладнішепрограма, тімзникає),дуже частопризводять впершучергусаме допсуванняоперативноїпам'яті завипадковимадресою. І «>заглючівшая»програма, що працює ізфізичноїоперативноюпам'яттю, вбільшостівипадків якщо просто «>вбивати» не лише саму собі (аіноді - й не скільки), стількиоточуючихїї «>сусідів» попам'яті.

Схема 1. Комп'ютер без віртуалізації

як жрозділити йзахиститипрацюють уфізичноїоперативноїпам'ятіпрограми один від одного?Найпростішерішення, яку приходити на думку, - просто «>нарізати»цюпам'ять («великийвідрізок» адресу)невеликимишматочками (>меншимивідрізками адресу - сегментами).Кожентакийшматочокзадається координатами його «>почала» (>першимадресоювідрізка) й «>довжиною» (>кількістю адресу).Будь-який адресою цоговідрізкавважається яквідстаньміжцієюадресою йпершимадресоювідрізка («>зміщення» від початку сегмента).Замість тогощобпрацювати ізфізичними адресами,програмипрацюють ізцимизміщеннями й сегментами, -реалізуватицезовсім негаразд уже іважко,причому,виділившикожнійпрограмінавіть за одному, а, покількасегментів - сегмент для машинного кодупрограми, сегмент дляїїданих, сегмент дляорганізації стека, й т.д.

>Подібна системаназиваєтьсясегментованоїмоделлюоперативноїпам'яті, вархітектуріx86 вонз'явилася впроцесорахi80286 (деотрималаназву «>захищеного режиму») йзникла ізцієї архітектури лише із переходом до64-бітнимрозділамиінструкційAMD64/IntelEM64T.

Схема 2.Сегментованапам'ять

Коли миотримуємо від переходу досегментації?По-перше, захист однихпрограм відінших:процесорперевіряєкожнезверненняпрограм допам'яті йконтролює,щоб смердоті невийшли замежівиділенихїмсегментів.По-друге, - й,мабуть,ценавітьнабагатоважливіше -радикальнепідвищеннязручностіпрограмування. Нам непотрібнозамислюватися над тім, що на нашомукомп'ютерівзагалііснуютьіншіпрограми -кожній із нихзабезпечено «>віртуальне»простір, уякомуєнавіть жодна, ацілих тринезалежних один від одного, «>пам'яті»,виділеніїй й лишеїй, дезберігаютьсяключовіструктурнічастинибудь-якоїзапущеноїпрограми - код,дані й стік. Нам непотрібнопідлаштовуватися подособливостіконкретноїверсіїопераційноїсистеми (аце жтеж якмінімумще однапрограма, запущена накомп'ютері!), Миможемовикористовувати для всіхвипадків життя абсолютнооднаковийпрограмний код.

>Ефективна схема?Цілком!Вона працює, воназручна, доступна йзрозуміла, бо багатолюбителіасемблера доцихпір ззадоволенням неюкористуються. Алідовго вона непротрималася,оскільки, як легкоздогадатися,особливоюгнучкістю увикористанні невідрізняється. як ми із самого початку «>наріжемо»пам'ятьскибочками, - так воно та вмайбутньому йзалишиться:виділимозанадто багато -якісьобластізалишатьсяневикористаними йпростоюють;виділимозанадто мало - незможемо в потрібен моментзбільшитицейобсяг. Чипам'ятаютьщепрограмістистарідобріDOS-Овскиесередовища розробки відBorland, де вопціяхкомпіляторавказувалася «модельпам'яті», вякійвизначавсярозмір йкількістьвикористовуваних упрограмісегментів? І чипам'ятаютькористувачічудовуутіліткуmem йзнаменитеNotenoughmemory,якими такрадували ококористувачаранні «персоналки»?

Одне слово,навіть у тихчасиіснуваликращірішення, й внаступному,першомупо-справжньомусучасномупоколінніx86-хпроцесорів (80386)слідом запроцесорами Motorola ймейнфреймахз'явилася основабудь-якихсучаснихбагатозадачних ОС -віртуальнапам'ять. Провдалістьцієї розробки говоритихоча б ті, що аж до переходу до64-бітнимрозділамиінструкцій «ядро»будь-якихx86 вточностівідповідало стандартуIA-32 (IntelArchitecturefor32-bit),введеному Intel дляi386 (це упринципі, на «троячка»повинніпрацюватибудь-які32-бітовіпрограми, незадіюютьсязанадтосучаснихфункцій).

>Віртуальнапам'ять (схема 3) -целогічнийрозвиток ідеїсегментованоїпам'яті, коли мипереходимо відцілкомконкретним чиномперетворюються уфізичні «>лінійних» адресузахищеного режимуx86 до абсолютноабстрактним «>віртуальним» адресами.Адже, за великимрахунком, дляпрацюючої накомп'ютеріпрограмизовсімбайдуже, що за «>фізичні»осередкупам'яті вонавикористовує!Їй потрібен простодеякийдіапазон адресу, заякими воназможезберігати своїдані, а й зацими «>ціфіркамі» на самом делекриється,їйглибокобайдуже.Головне -щобпроцесор знавши, якціабстрактніцифри (>віртуальніадреси)переводити вцілкомконкретніінструкції для контролерапам'яті (>фізичніадреси).

Схема 3.Віртуальнапам'ять

якцеробиться напрактиці? Уся доступнапроцесоруфізична оперативнапам'ятьрозбивається наневеликішматочкирозміром 4 Кбайт чи 4Мбайт - «>сторінки». При цьомувикористовується та ж схема, що і прирозбивціфізичних адресу наадресиконкретноїкоміркипам'яті:молодші 12 чи 22бітвіртуальногоадресипозначаютьзміщенняцієїадреси від початкусторінки, астаршібіти (від 10 до 50) - номерсторінки. Коліпроцесорупотрібнообчислитифізичну адресою ізвіртуального,він просторозділяєвіртуальний адресою на номерсторінки йзсув,заглядає втаблицю, де для шкірного номеривказанікоординати початкусторінки уфізичнійпам'яті, йдодає доотриманоїкоординатізміщення (схема 4).Згадана табличкасторінокназиваєтьсятаблицеютрансляції адресувіртуальноїпам'яті (чи простотаблицеютрансляції), йрозміщується вон увиглядіB-дерева всамійзвичайноїоперативноїпам'яті, щодозволяєстворювати безвеликоїнадлишковості якзавгодновеликішвидкодіючітаблицітрансляції.Працюєце дерево, щоправда (як й все,пов'язане ізоперативноюпам'яттю), як йраніше недужешвидко, й томупроцесоркешуєранішепевнівідповідності «номерсторінки -запис утаблицітрансляції» вспеціальномусервері -буферітрансляціївіртуальних адресу (>TranslationLook ->asideBuffer,TLB).

Схема 4.Робота ізвіртуальноюпам'яттю.

>Деталітаблицітрансляції

Фраза проB-деревоможепрозвучатистрахітливо, але й на самом делеховається за межі не така уже іскладнатехнологія.Двійковий номервіртуальноїпам'яті, натією ждоброютрадицією, «>розрізається» накількашматочківневеликогорозміру (по 10біт):наприклад, 00000000001111111111010101010101 -перетворюється на 0000000000 + 1111111111 + 010101010101.Першачастинаадреси - 0 -це «номердиректорії», друга - 1023 - «номерсторінки»,третя - 1365 -зміщення від початкусторінки.

Коли далі ізцим всімробити? Упроцесорієспеціальнийрегістр подназвоюCR3 (>ControlRegister # 3), вякомузаписується «>вказівник натаблицютрансляції» -фізичну адресою, поякому впам'ятірозташовується «>таблицядиректорій».Ця саматаблиця -це 1024 записидовжиною по 32 (чи 64)біта, в якізаписаніфізичніадреси «>таблицьсторінок»,відповіднихтій чиіншійдиректорії. В Українідиректорія номер нуль, а томупроцесор,декодуєвіртуальний адреси,обчислює сумурегіструCR3 із нулем йотримує адресоюпотрібноїйому «>таблицісторінок». Вісь уційтаблиці (>теж із 1024записівзавдовжки 32 чи 64біта) ужезаписаніфізичніадресипочавсторінок, так що,додавши до початкутаблицісторінок номерсторінки (1023) - мивиходимо назапис, вякійзнаходитьсяфізичну адресою початкупотрібної намсторінки.Залишається лишедодати донього 1365 -зміщення - йшуканийфізичну адресоюготовий. Уразі64-бітноїорганізаціїпам'ятірівнівтрансляції вційсхемі не на два, ачотири; уразітрансляціїзісторінкамирозміром 4Мбайт -останнійрівеньтрансляціїпропускається.

>Навіщовзагалізнадобилася такаскладна схема йчому було б не можнаобмежитисяоднієютаблицеютрансляції? Уся справа врозмірітаблиць. Для32-бітноїадресаціїпам'яті йсторінокрозміром 4Мбайтнеобхіднийрозміртаблиціскладаєвсьоголише 4 чи 8 Кбайтпам'яті, але й для болеезатребуваних 4 Кбайт -сторінок, й,ще гірше, для64-бітноїадресаціїпам'яті,необхіднірозміритаблицівиходятьнабагатобільшими - від 4-8Мбайт до 8Гбайт йнавіть 8Тбайт. Зачасів386-хпроцесорівнавіть 4Мбайт длятаблицітрансляції адресуоднієїпрограмиздавалосязанадто великоюцифрою (а,враховуючи, що накомп'ютеріможуть бутиодночаснозапущенісотніпрограм, й длякожноїпотрібномінімум по 4Мбайтфізичноїпам'яті -це й длясучасних системнадто багато), й томувибір бувзроблений накористьдворівневоїтрансляції, приякійтрансляцію можназупинитище на «>верхньому»рівні,вказавши длядеякихзаписів у «>таблицідиректорій», що смердоті невідповідаютьжоднимреальнимфізичним адресами йприбравши, таким чином,необхідність увказівці дляцілогодіапазону адресузаписів утаблицітрансляції.

Доречі,сегментація (в32-бітнихпроцесорах)навіть ізвіртуальноюпам'яттю все однезберігається.Тобтореальніадреси, щозгадуються впрограмі,спочаткуперетворюються ізурахуваннямсегментів у «>лінійні», а уже смердоті задопомогоютаблицітрансляції - вреальні «>фізичні»адреси.

>Важкоповірити, але й,здавалося бнічимглибокопринципово невідрізняються відзвичайноїсегментованоїмоделіпам'яті,пам'ятьвіртуальнадає системномупрограмісту практично все, чого лише його душазабажає. Праворуч до того, щовласневдосконаленою «>трансляцією» адресу (котра у нассобізнімає усіпроблемисегментованоїоперативноїпам'яті)віртуальнапам'ять необмежується. Уся «>сіль»технології - до того, що для шкірногозапису втаблицітрансляції адресу (>фактично - для шкірногодіапазону адресувіртуальноїпам'яті)визначенонабірспеціальнихпрапорів, котріреалізують:

>Захистважливихділянокоперативноїпам'яті відперезапису.

Один ізнайпростіших «>прапорців»,якийвказується для адресувіртуальноїпам'яті -цепрапорець «лише длячитання», щодозволяєзахиститипевніобластівіртуальноїоперативноїпам'яті відзапису.Приміром,зазвичайread-onlyоголошуютьсясторінки, щомістятьмашинний кодпрограми.

>Захистпрограм відвірусів.

Основановомодних «>антивірусних»технологій накшталт MicrosoftDataExecution Prevention, щозабезпечують надійна захисткомп'ютера відексплойтів, щовикористовують атаки типу «>переповнювання буфера», -крихітнийБитик втаблицітрансляції (NoeXecute -NX в AMD, йeXecuteDisable,XD - у Intel), щозабороняєвиконання машинного коду ізпевнихділянокпам'яті.

>Захистопераційноїсистеми.

>Спеціальнийбітдозволяєвизначитидеякі ділянкиоперативноїпам'яті як «системні» йпринциповонедоступнізвичайномудодатком як длячитання, то й длязапису.

>Ефективний менеджментоперативноїпам'яті.

>Цілий рядспеціальнихбітівдозволяєопераційнійсистемівідслідковувати, із які адресамипрограма читала чизаписуваладані, йвизначити «>глобальні»сторінкипам'яті,загальні для всіхпрограм упроцесорі.

Алінайголовнішийбіт втаблицітрансляції -це «>нульовий»бітP -Present, щозабезпечуєвласне

>По-справжньомувіртуальнупам'ять.

Направду,призначення цогобітадоситьпросте -якщовін «>скинутий» (>встановлено в 0), тобудь-якезвернення дооперативноїпам'яті зацієюадресоювикликаєсистемнупомилку (>виключення), щоназиваєтьсяPageFault (#PF). Алі стільки ж наосновіцієї «>простоти»вдаєтьсяпобудувати!Адже, посуті справ,P-морський прапор -цезазначенняпроцесору, що дляобробкизверненняпрограми доданогоадресоюпам'ятіпотрібнозвернутися задопомогою доопераційноїсистеми.

>Судіть сам:найпростішезастосуванняP-прапора -цереалізаціясвоп-файлу, щодозволяєвикористовуватижорсткий дискзамістьфізичноїоперативноїпам'яті.Ідея до того, що миможемо длядеякихсторіноквіртуальноїпам'яті неставитиїм увідповідністьніякогофізичноїадресиоперативноїпам'яті, а «>скинути» длявідповіднихзаписів утаблицітрансляціїP-прапор йзберегтисторінку у файл нажорсткому диску.Якщозвернень доданоїсторінки невідбувається - то ми все добро.Якщовідбувається - тогенеруєтьсявиключення #PF. Посутісвоїйпроцесор простоприпиняєвиконанняпоточноїпрограми, йзаглядає усвій «>довідникщододій унештатнихситуаціях» -спеціальнаділянкапам'яті, вякому прописано, якоїпідпрограмуопераційноїсистемивикликати до того чиіншомувипадку. Уповнійвідповідностізі стандартом,процесорвикликаєобробниквиключення #PF - один ізключовихфрагментівбудь-якоїопераційноїсистеми.Обробник (>фактично -операційна система) - «дивуватися» навиниклуситуацію («>програма така-тополізла впам'ять заадресою такому-то й бувзупинена бо прапорPresent бувскинутий»),визначає, щоцієюадресоювідповідаєсторінкапам'яті,якої немає воперативнійпам'яті, але й котрає нажорсткому диску - йпочинаєдіяти:

1.Вінвибирає ізфізичноїпам'ятіщеніким незайнятусторінку, чинавітьзвільняє однузісторінок,зберігаючиїїдані на диск, йскидаючивідповіднийP-прапор втаблицітрансляції.

2.Читаєпотрібнемісцесвоп-файлу,копіюючидані ізнеї вцюсторінку.

3. «>Модернізує»таблицютрансляції,прописуючи внійновийфізичну адресою длясторінки, через якоїставсязбій.

4.Оновлює принеобхідностідані вбуферіTLB.

>Післяцихманіпуляцій «>проблемний» адресивіртуальноїпам'яті,якийпосилається нанеіснуючу уфізичнійпам'ятісторінкустає уже інакшим уже і «>проблемним» -потрібнідані ужезавантажені впам'ять, йтаблицятрансляціїпотрібним чиномоновлена. Так щооброблювачеві сигналу #PFзалишається лишеповернутиуправлінняспочаткупрацювалапрограмі - йостанняпродовжить свою роботу, як ані небувало,навіть нездогадуючись про ті, уякомусьїїмісціодне-єдинезвернення впам'ятьспровокувалотакудовгу йскладну процедуру «>свопу»даних уфізичнійпам'яті й нажорсткому диску.

>Інші «>популярні»застосуванняP-прапоравіртуальноїпам'ятідозволяютьреалізовувати,приміромтехніку «>меппінгафайлів напам'ять». «>Меппінга» -це колипрограма затехнологією,аналогічноїтехнікисвопінгу,відображає зазапитомпрограми тієї чиінший файл упростірвіртуальних адресупрограми.Тобто можнадомогтися того,щобчитання ізелементупам'яті # 13323658виливалася б уавтоматичнечитанняякого-небудь файлуprogram.data ізпозиції 3446. Це,по-перше,дужезручно (файл непотрібно «>читати» чи «>писати» -він ужедоступнийпрограмі увиглядізвичайногомасиву чи наборумасивів),по-друге,дужешвидко (>виробляєтьсялишемінімальнонеобхіднийнабірдій позавантаженню чи записиданих), а по третє,дужеефективно (файлавтоматично «>кешується» воперативнійпам'яті,невживаністорінки із цогокешаавтоматично жприбираються,звільняючифізичнупам'ять, призбереженнізберігаються лише дійснозмінилисяфрагменти файлу, а чи не всепідряд, й т. п.). Хочаз-заобмежень порівняновузького доступногопрограмі, котра працює под Управлінням32-бітнихверсій Microsoft Windows,віртуальногопростору в 2-3Гбайт, йдужегроміздкою йнезручноюреалізаціїданоїтехнікизасобамиWin32 АПІ,використовується вонадоситьрідко.

>Більшскладний приклад,вповнівіртуальнупам'ять:реалізація систем ізнібитозагальноюпам'яттю в системах, децяпам'ятьспочаткуроздільно.Наприклад, урізнихкомп'ютерах,з'єднаних задопомогоюлокальноїмережі (узагальномувипадку - укластерах).Ідеяподібних системполягає до того,щоб призверненніпрограми ізвіртуальногоадресою,відповідного «>чужий»пам'яті,викликатиоброблювач,якийзгенеруєзвернення помережі до «>чужої»машині,отримавши яку,ця машинавиконаєпотрібнуоперацію ізпам'яттю йповернепервісноїмашинівідповідь,якийвідобразиться впрограмі. Урезультаті можнадобитися такогоефекту, що удекількохфізично абсолютнорізнихкомп'ютерів дляпрограмвіртуальнапам'ять якщоперетинатися, чивзагаліповністюзбігатися.

Це йє суть «>віртуальноїпам'яті» -користувальницькапрограманіколи неможе ізупевненістюстверджувати, щоховається заабстрактнимвіртуальнимадресою. Миможемо якзавгодно «>дурити»її,здійснюючи заїїспиноюпідтасування ізреальними адресами, йдомагатися ізцієюдопомогоюнайрізноманітнішихефектів.Втім, проце мипоговоримо внаступномурозділі. Апоки -перерахуємоосновні й болеезатребуваніперевагивіртуальноїпам'яті:

·Віртуальнапам'ятьмає усіперевагисегментованої.

· Алі при цьомурозміривіртуальноїпам'яті,виділеноїпрограмі,можуть якзавгодногнучкозмінюватися.

·Віртуальнапам'ятьможе «>фізично»розміщуватися надоперативнійпам'яті, але й й нажорсткому диску йнавіть уМережі.

·Віртуальнапам'ять незобов'язана бутибезперервної -її можна «>нарізати»взагалі якзавгодно,лише бце нам було бзручно.

·Можназадаватидовільне число «>пересічних» областейвіртуальноїпам'яті длярізнихпрограм, аж доти, що самі і тих ждані будутьбагаторазововідображені вадреснийпростірпрограми зарізними адресами.

·Віртуальнапам'ятьзабезпечуєдужегнучкубагаторівневий захистоперативноїпам'яті, щодозволяєвідловлюватибудь-якіпомилкові діїпрограми.

· І не лишепомилкові: в завданняхналагодженнядодатківвіртуальнапам'ятьдозволяє,наприклад,відстежити в останній моменттаке «>налагоджувальноїподія», якпростечитанняпрограмою того чиіншогоадреси впам'яті.

>Мінусів увіртуальнійпам'ятівсього два.По-перше, вонаістотноуповільнює роботукомп'ютера (>навіть простатрансляціявіртуальних адресу, котрі надTLB -дуженеквапливийзаняття;обробка жподії #PF - йзовсімздатназайнятисотнітисячтактівпроцесора), апо-друге, -складна й абсолютнонепрозора для пересічногопрограміста.

а)Паравіртуалізація йбінарнатрансляція

Отже, як ми уже сказали, усікористувальницькіпрограмисьогодні,фактично,працюють на «>віртуальних»комп'ютерах -їмнадаєтьсяякась «>узагальнено-стандартна»середовищевиконання ізвіртуальноюоперативноюпам'яттю, й ізцим «>віртуальнимкомп'ютером» смердотівільнопрацюють, незамислюючись про ті, котріреальніфізичніресурси зацієювіртуальністю стояти.Центральна заподіянняопераційноїсистеми -цепідтримкацієї «>віртуальноїреальності» тасвоєчаснерозподілміжцимивіртуальностіреальнихапаратнихресурсів. Самаопераційна систематежживе на одному із «>віртуальнихкомп'ютерів», але й, навідміну від всіхінших «>мешканців»комп'ютера,володієможливістю свою (йчужі) «>реальності»змінювати йспіввідносити ізфізичними ресурсамикомп'ютера.

І уже у нассобіподібнаможливістьдозволяє, на самом деле,реалізовувати практично все, щозавгодно, ізкористувацькимидодатками.Приміром,потенційно можнавзяти, «>зберегти» станпрограми нафлешку, «>скопіювати» наіншийкомп'ютер й «>продовжити»виконанняпрограми уже наіншомукомп'ютері.Можна (>потенційно)запускати водній йтій жопераційнійсистемі як Windows, то йPOSIX-додатки (Linux,Unix-системи) -достатньовмітистворювати два «типу»віртуальнихкомп'ютерів,щобкожендодатокотримувалорівно тісередовищевиконання, вякій воно тазвиклопрацювати. Алі, на шкода, длякористувача,подібні «>хитрощі», щовимагаютьактивноїпідтримки із боціопераційноїсистеми,реалізувати напрактиці не така просто, якрозповісти про них. І забезпечити,скажімо, «>рідну»підтримкуWindows-додатків в Linux, то йзворотнийпідтримкуLinux-додатків в Windows, із заподійактивноїпротидії Microsoft,неможливо. А томукористувачзмушенийобходитися бездеякихцікавихфункцій йзадовольнятисяWindows-додатками наWindows-системах йLinux-додатками наLinux-системах.

яквихід зситуаціївиникаєцілкомлогічнапропозиція:якщо уже ми неможемооб'єднати воднійопераційнійсистеміможливостікількохрізних ОС, точому бодночаснозапустити однією, авідразудекількаопераційних систем? Заодно йнадійністьпідвищимо:якщо одна ізопераційних систем «>впаде»,іншазалишиться, й якщоздатнавідновити «спавши».

>Виявляється, щоце ненастільки уже іважкозробити.Дивіться:нашіопераційнісистеми - посуті справ, тих ж самзвичайніпрограми, щопрацюють ізвіртуальнимикомп'ютерами, але йхіба щонаділенітрохи понад широкимипривілеями й томуволодіютьздатністю «>трансформувати»навколишнєсередовище под своїпотреби. Томуможливіцілих дваспособи забезпечитиодночасну їхні роботу на одному й тому жкомп'ютері.

>Спосібперший -це «>спосіб свідомішогоспівробітництва»:зводиться доти, щонаші ОС будуть «>враховуватиінтереси» один одного,розподілятьміж собоюапаратніресурси, йнадалі будутьпрацювати так і ненашкодитисвоїми «>надзвичайнимиповноваженнями»операційноїсистемиіншійсистемі.Подібнийпідхід вельми широкопрактикується в *nix-подібнихопераційних системах йназиваєтьсяпаравіртуалізаціей. Однакоскільки данийспосібвимагаєсерйозноїмодифікації ядра ОС, на яку,приміром, усе та ж Microsoft, котрадомінує наринкуопераційних систем, природно, непогоджується, тоособливоїпопулярностісеред «>звичайнихкористувачів»вінотримати незумів.

Схема 5.Паравиртуализация

Іншийспосібдуже добро знаком «>просунутимкористувачам» згідно іздодатками типуVMWareWorkstation, щозабезпечуєуспішний запуск на одномукомп'ютеріз-під «>базової»операційноїсистемикількох «>гостьових»операційних систем безспеціальної їхньогомодифікації. «>Гостьова»операційна система разом ізусімаїїдодаткамифактичностає одним «>звичайним»додатком «>батьківського»операційноїсистеми,з-підякої вона запущена.Ідея тутдуже проста:використовуючивіртуальнупам'ять, миможемозімітувативіртуальнийкомп'ютер практичнобудь-якоїскладності: так що «>гостьовий»операційнійсистемі просто «>підсовується»віртуальна машина, котрадуже схожа на «>фізичну"x86-машину. «>Гість»приймає «обманку» засправжнійкомп'ютер - йцілкомуспішнопочинає наційвіртуальніймашині,імітованої «>батьківського» ОС,працювати.Звернітьувагу, тих, щоце непідхід,аналогічний «>віртуальніймашині Java» чиемуляторамстародавнього Sinclair, колипрограма-емуляторвіртуальноїмашини «>вручну»розбирає коддодатку й «>вручну» жвиконуєкожну йогоінструкцію.Гостьоваопераційна система й усізапущені у межахпрограмипрацюють нафізичних ресурсахкомп'ютера практично так саме, якцеробитьзвичайнезапущене наньомудодаток, а «>віртуалізуєтьсядодаток» лишезабезпечує контроль з нього -тонюсінькапрошарок коду,підтриманастандартнимиапаратними ресурсамикомп'ютера. Давайтерозберемотрошкидетальніше, яктакевиявляєтьсяможливим.

В Українієякісьапаратніресурси, котрітребаімітувати. Уархітектуріx86 їхні, загалом-то,всього три:

·Регістрипроцесора (>включаючирегістрислужбовогопризначення).

·Портивведення-виведення (щовикористовуються дляобмінуінформацією ізпериферією).

·Оперативнапам'ять.

З пункту 3 всезрозуміло і так -пам'ять мивіртуальна, так щозімітувати шматокфізичноїпам'яті

Страница 1 из 3 | Следующая страница

Схожі реферати:

Навігація