Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

ремонт стройварианта | дешёвые проститутки питера, дешевые и элитные проститутки
 

Абсолютне завантаження

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

  • Система може надати кожному процесу свій адресний простір. Це можливо лише на процесорах, що здійснюють трансляцію віртуальної адреси у фізичний.
  • Система може виконувати в кожен момент лише один процес. Так поводиться Ср/м, так само влаштована більшість завантажувальних моніторів для саморобних комп'ютерів. Схожим чином влаштована система Rt-11, але про неї ледве нижче.

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

Формат завантажувального модуля а.out
У системі UNIX на 32-розрядних машинах також використовується абсолютне завантаження. Завантажуваний файл формату а.out (сучасні версії Unix використовують складніший формат завантажуваного модуля і складнішу схему завантаження, яке обговорюватиметься в разд. Бібліотеки, що розділяються) починається із заголовка (мал. 3.1), який містить:
• "магічне число" — ознака того, що це саме завантажуваний модуль, а не щось інше;
• число Text_size — довжину області коди програми (TEXT);
• Data_size —дліну області ініциалізованних даних програми (DATA);
• Bss_size —дліну області нєїніциалізованних даних програми (BSS);
• стартова адреса програми.
За заголовком слідує вміст областей TEXT і DATA. Потім може слідувати налагоджувальна інформація. Вона потрібна символьним відладчикам, але самою програмою не використовується.
При завантаженні система виділяє процесу Text_size байтів віртуальної пам'яті, доступної для чтенія/ісполненія, і копіює туди вміст сегменту TEXT. Потім відлічується Data_size байтів пам'яті, доступної для чтенія/ запису, і туди копіюється вміст сегменту DATA. Потім відлічується
ще Bss_size байтів пам'яті, доступної для чтенія/запіси, які прописуються нулями.
Очищення пам'яті, що виділяється, потрібне не стільки для зручності програміста, скільки з міркувань безпеки: перед знов завантажуваним процесом цю пам'ять могли займати (а при скільки-небудь тривалій роботі системи майже напевно займали) інші процеси, які могли використовувати цю пам'ять для зберігання важливих і секретних даних, наприклад паролів або ключів шифрування.
Після цього виділяється простір під стек, в стек поміщаються позиційні аргументи і середа виконання (environment), і управління передається на стартову адресу. Процес починає виконуватися.

Мал. З.1. Завантажувальний модуль а.out

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017