Відмінності між версіями «Керування пам’яттю. Типи адрес»
Cinyk (обговорення • внесок) |
|||
(не показана одна проміжна версія ще одного учасника) | |||
Рядок 25: | Рядок 25: | ||
'''Фізичні адреси''' відповідають номерам комірок оперативної пам'яті, де насправді розташовані або будуть розташовані змінні і команди. Перехід від віртуальних адрес до фізичних може здійснюватися двома способами. | '''Фізичні адреси''' відповідають номерам комірок оперативної пам'яті, де насправді розташовані або будуть розташовані змінні і команди. Перехід від віртуальних адрес до фізичних може здійснюватися двома способами. | ||
У першому випадку заміну віртуальних адрес на фізичні робить спеціальна системна програма - переміщуючий завантажувач. Переміщують завантажувач на підставі наявних у нього вихідних даних початкової адреси фізичної пам'яті, до якої належить завантажувати програму, і інформації, наданої транслятором, щодо адресно-залежних констант програми, виконує завантаження програми, поєднуючи її з заміною віртуальних адрес фізичними. | У першому випадку заміну віртуальних адрес на фізичні робить спеціальна системна програма - переміщуючий завантажувач. Переміщують завантажувач на підставі наявних у нього вихідних даних початкової адреси фізичної пам'яті, до якої належить завантажувати програму, і інформації, наданої транслятором, щодо адресно-залежних констант програми, виконує завантаження програми, поєднуючи її з заміною віртуальних адрес фізичними. | ||
+ | |||
+ | [[Файл:Типи_адрес.JPG]] | ||
Другий спосіб полягає в тому, що програма завантажується в пам'ять в незміненому вигляді у віртуальних адресах, при цьому операційна система фіксує зсув дійсного розташування програмного коду щодо віртуального адресного простору. Під час виконання програми при кожному зверненні до оперативної пам'яті виконується перетворення віртуальної адреси в фізичний. Другий спосіб є більш гнучким, він допускає переміщення програми під час її виконання, в той час як переміщатися завантажувач жорстко прив'язує програму до початкової ділянки пам'яті. Разом з тим використання переміщує завантажувача зменшує накладні витрати, так як перетворення кожної віртуальної адреси відбувається тільки один раз під час завантаження, а в другому випадку - кожного разу при зверненні за цією адресою. | Другий спосіб полягає в тому, що програма завантажується в пам'ять в незміненому вигляді у віртуальних адресах, при цьому операційна система фіксує зсув дійсного розташування програмного коду щодо віртуального адресного простору. Під час виконання програми при кожному зверненні до оперативної пам'яті виконується перетворення віртуальної адреси в фізичний. Другий спосіб є більш гнучким, він допускає переміщення програми під час її виконання, в той час як переміщатися завантажувач жорстко прив'язує програму до початкової ділянки пам'яті. Разом з тим використання переміщує завантажувача зменшує накладні витрати, так як перетворення кожної віртуальної адреси відбувається тільки один раз під час завантаження, а в другому випадку - кожного разу при зверненні за цією адресою. | ||
Рядок 47: | Рядок 49: | ||
• Сегментна модель є більш складною, але й більш гнучкою | • Сегментна модель є більш складною, але й більш гнучкою | ||
+ | [[Віра Ціник]] |
Поточна версія на 09:44, 9 січня 2012
Керування пам'яттю
Пам'ять є найважливішим ресурсом, що вимагає ретельного управління з боку мультипрограмній операційної системи. Розподілу підлягає вся оперативна пам'ять, не зайнята операційною системою. Зазвичай ОС розташовується в самих молодших адресах, однак може займати і самі старші адреси.
Функціями ОС по управлінню пам'яттю є:
-відстеження вільної та використаної пам'яті,
-виділення пам'яті процесам і звільнення пам'яті при завершенні процесів,
-витіснення процесів з оперативної пам'яті на диск, коли розміри основної пам'яті не достатні для розміщення в ній всіх процесів, і повернення їх у оперативну пам'ять, коли в ній звільняється місце
-налаштування адрес програми на конкретну область фізичної пам'яті.
Типи адрес
Для ідентифікації змінних і команд використовуються символьні імена (мітки), віртуальні адреси та фізичні адреси.
Символьні імена присвоює користувач при написанні програми на алгоритмічній мові (ідентифікатори змінних, мітки переходів) Транслятор.
Віртуальні адреси (умовні адреси) виробляє транслятор, що переводить програму на машинну мову. Так як під час трансляції в загальному випадку не відомо, в яке місце оперативної пам'яті буде завантажена програма, то транслятор присвоює змінним і командам віртуальні (умовні) адреси, звичайно вважаючи за замовчуванням, що програма буде розміщена, починаючи з нульової адреси. Сукупність віртуальних адрес процесу називається віртуальним адресним простором. Кожен процес має власне віртуальне адресний простір. Максимальний розмір віртуального адресного простору обмежується розрядністю адреси, властивою цій архітектурі комп'ютера, і, як правило, не збігається з обсягом фізичної пам'яті, наявними в комп'ютері.
Фізичні адреси відповідають номерам комірок оперативної пам'яті, де насправді розташовані або будуть розташовані змінні і команди. Перехід від віртуальних адрес до фізичних може здійснюватися двома способами. У першому випадку заміну віртуальних адрес на фізичні робить спеціальна системна програма - переміщуючий завантажувач. Переміщують завантажувач на підставі наявних у нього вихідних даних початкової адреси фізичної пам'яті, до якої належить завантажувати програму, і інформації, наданої транслятором, щодо адресно-залежних констант програми, виконує завантаження програми, поєднуючи її з заміною віртуальних адрес фізичними.
Другий спосіб полягає в тому, що програма завантажується в пам'ять в незміненому вигляді у віртуальних адресах, при цьому операційна система фіксує зсув дійсного розташування програмного коду щодо віртуального адресного простору. Під час виконання програми при кожному зверненні до оперативної пам'яті виконується перетворення віртуальної адреси в фізичний. Другий спосіб є більш гнучким, він допускає переміщення програми під час її виконання, в той час як переміщатися завантажувач жорстко прив'язує програму до початкової ділянки пам'яті. Разом з тим використання переміщує завантажувача зменшує накладні витрати, так як перетворення кожної віртуальної адреси відбувається тільки один раз під час завантаження, а в другому випадку - кожного разу при зверненні за цією адресою.
У деяких випадках (звичайно в спеціалізованих системах), коли заздалегідь точно відомо, в якій області оперативної пам'яті буде виконуватися програма, транслятор видає виконуваний код відразу у фізичних адресах.
Моделі пам'яті
Для забезпечення коректної адресації незалежно від розташування програми в оперативній пам'яті комп'ютера в якості віртуальних адрес використовуються відносні адреси, тобто зміщення від деякої базової адреси
о Пласка (flat) модель пам'яті
• Кожному процесу виділяється єдина неперервна послідовність віртуальних адрес
• Зміщення дозволяє однозначно вказати на положення даних або команди в адресному просторі процесу
о Сегментна модель пам'яті
• Адресний простір процесу поділяється на окремі частини, які називаються сегментами (зустрічаються також інші назви: секції, області)
• Віртуальна адреса задається парою чисел (n, m), де n визначає сєгмент, а m - зміщення в даному сегменті
• Сегментна модель є більш складною, але й більш гнучкою Віра Ціник