Ім'я файлу: Ільченко КІ-21(№11 ІР).docx
Розширення: docx
Розмір: 22кб.
Дата: 14.12.2021
скачати
Пов'язані файли:
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ.docx

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

ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ БІЗНЕС-КОЛЕДЖ

РЕФЕРАТ

З ЛАБОРАТОРНОЇ РОБОТИ КУРСУ «Архітектура програмних компонентів»

Зроблено студентом гр.КІ-21

Ільченко Ліза

Викладач

Захарова М.В

Черкаси

2021

Управління пам’яттю, апаратно-програмні засоби управління, розшарування основної пам’яті

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

Створено кілька методів, які підвищують ефективність управління пам'яттю комп'ютера. Системи з віртуальною пам'яттю розділяють адреси в пам'яті, що використовуються процесом, від реальних фізичних адрес, що дозволяє відокремлювати процеси і підвищити ефективність доступу до вільної RAM за допомогою сторінкової організації або перенесення (свопінгу) даних до вторинних носіїв пам'яті. Ефективність менеджера віртуальної пам'яті може мати значний вплив на загальну продуктивність системи.

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

Для ідентифікації змінних і команд використовуються символьні імена (мітки), віртуальні адреси та фізичні адреси.

Символьні імена присвоює користувач при написанні програми на алгоритмічній мові або асемблері.

Віртуальні адреси виробляє транслятор, що переводить програму на машинну мову. Так як під час трансляції в загальному випадку не відомо, в яке місце оперативної пам'яті буде завантажена програма, то транслятор привласнює змінним і командам віртуальні (умовні) адреси, зазвичай вважаючи за замовчуванням, що програма буде розміщена починаючи з нульового адреси. Сукупність віртуальних адрес процесу називається віртуальним адресним простором. Кожен процес має власний віртуальний адресний простір. Максимальний розмір віртуального адресного простору обмежується розрядністю адреси, властивою цій архітектурі комп'ютера, і, як правило, не збігається з обсягом фізичної пам'яті, наявними в комп'ютері.

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

Другий спосіб полягає в тому, що програма завантажується в пам'ять в незміненому вигляді в віртуальних адресах, при цьому ОС фіксує зсув дійсного розташування програмного коду щодо віртуального адресного простору. Під час виконання програми при кожному зверненні до оперативної пам'яті виконується перетворення ВА у фізичну. Другий спосіб є більш гнучким, він допускає переміщення програми під час її виконання, в той час як переміщає завантажувач жорстко прив'язує програму до спочатку виділеному їй ділянці пам'яті. Разом з тим використання переміщує завантажувача зменшує накладні витрати, так як перетворення кожного віртуального адреси відбувається тільки один раз під час завантаження, а в другому випадку - кожен раз при зверненні за даною адресою.

У деяких випадках (зазвичай в спеціалізованих системах), коли заздалегідь точно відомо, в якій області оперативної пам'яті буде виконуватися програма, транслятор видає виконуваний код відразу в фізичних адресах.

Всі методи управління пам'яттю можуть бути розділені на два класи: методи, які використовують переміщення процесів між оперативною пам'яттю і диском, і методи, які не роблять цього. Почнемо з останнього, більш простого класу методів.

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

Різні види пам'яті організовані в ієрархію. На нижніх рівнях такої ієрархії пере­буває дешевша і повільніша пам'ять більшого обсягу, а в міру просування ієрархією нагору пам'ять стає дорожчою і швидшою (а її обсяг стає меншим). Найдешев­шим і найповільнішим запам'ятовувальним пристроєм є жорсткий диск комп'юте­ра. Його називають також допоміжним запам'ятовувальним пристроєм (secondary storage). Швидшою й дорожчою є оперативна пам'ять, що зберігається в мікросхемах пам’яті, встановлених на комп'ютері, - таку пам'ять називатимемо основною пам’яттю (main memory). Ще швидшими засобами зберігання даних є різні кеші процесора, а обсяг цих кешів ще обмеженіший.

Програма зазвичай перебуває на диску у вигляді двійкового виконуваного файлу, отриманого після компіляції та компонування. Для свого виконання вона має бути завантажена у пам'ять (адресний простір процесу). Сучасні архітектури дають змогу процесам розташовуватися у будь-якому місці фізичної пам'яті, при цьому одна й та сама програма може відповідати різним процесам, завантаженим у різні ділянки пам'яті. Заздалегідь невідомо, в яку ділянку пам'яті буде заванта­жена програма.

Під час виконання процес звертається до різних адрес, зокрема в разі виклику функції використовують її адресу (це адреса коду), а звертання до глобальної змінної відбувається за адресою пам'яті, призначеною для зберігання значення цієї змінної (це адреса даних).

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

До адрес, використовуваних у програмах, ставляться такі вимоги.

  • Захист пам'яті. Помилки в адресації, що трапляються в коді процесу, повинні впливати тільки на виконання цього процесу. Стратегія захисту пам'яті зводиться до того, що для кожного процесу зберігається діапазон коректних адрес, і кожна операція доступу до пам'яті перевіряється на приналежність адреси цьому діапазону.

  • Відсутність прив'язання до адрес фізичної пам'яті. Процес має можливості ви­конуватися незалежно від його місця в пам'яті та від розміру фізичної пам'яті. Адресний простір процесу виділяється як великий статичний набір адрес, при цьому кожна адреса такого набору є переміщуваною. Процесор і апаратне за­безпечення повинні мати змогу перетворювати такі адреси у фізичні адреси основної пам'яті (при цьому та сама переміщувана адреса в різний час або для різних процесів може відповідати різним фізичним адресам).

агальні принципи керування пам'яттю в однопрограмних операційних системах

Простий безперервний розподіл - це найпростіша схема, відповідно до якої вся пам'ять умовно може бути розділена на три області:

  • область, займана операційною системою;

  • область, у якій розміщається виконує задача, що;

  • незайнята нічим (вільна) область пам'яті.

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

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

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

Якщо виникає необхідність створити програму, логічний адресний простір якої повинне бути більше, ніж вільна область пам'яті, або навіть більше, ніж весь можливий обсяг оперативної пам'яті, то використається розподіл з перекриттям - так звані оверлейні структури (від overlay - перекриття, розташування поверх чогось). Цей метод розподілу припускає, що вся програма може бути розбита на частині - сегменти. Кожна оверлейна програма має одна головну (maіn) частина й кілька сегментів (segments), причому в пам'яті машини одночасно можуть перебувати тільки її головна частина й один або декілька сегментів, що не перекриваються.

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

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

ПІДСИСТЕМА УПРАВЛІННЯ ПАМ'ЯТТЮ

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

Для управління пам'яттю в сучасних ОС використовується механізм віртуальної пам'яті, який полягає у відображенні адрес (до яких може звернутися програма) з віртуального адресного простору в адреси реальної пам'яті. Наявність в ОС механізму віртуальної пам'яті дозволяє програмісту писати програму так, як ніби в його розпорядженні є однорідна оперативна пам'ять великого обсягу, часто істотно перевищує обсяг наявної фізичної пам'яті. Насправді всі дані, використовувані програмою, зберігаються на диску і при необхідності частинами (сегментами або сторінками) відображаються в фізичну оперативну пам'ять. При переміщенні кодів і даних між оперативною пам'яттю і диском підсистема віртуальної пам'яті виконує трансляцію віртуальних адрес, отриманих в результаті компіляції і компоновки програми, в фізичні адреси осередків оперативної пам'яті.

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

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

Силка на реферат з АПК

(https://docs.google.com/document/d/1EgubmPhMWKHHOKCNKdg7B65plzw8MBxD/edit?usp=sharing&ouid=104995165812745719166&rtpof=true&sd=true)

Силка на КБ

(https://docs.google.com/document/d/10KS0lTjwNDGgp8WEyDwhUb3thjGxFLKn/edit?usp=sharing&ouid=104995165812745719166&rtpof=true&sd=true)

Силка на НТЗ

(https://docs.google.com/document/d/1X8yXQ6z1Jj_XMxzxcC44jWMeCxZEqz8o/edit?usp=sharing&ouid=104995165812745719166&rtpof=true&sd=true)
скачати

© Усі права захищені
написати до нас