Управление памятью
Краткие итоги
Управление памятью – одна из важнейших функций операционной системы, которая выполняет размещение в памяти пользовательских программ и их данных для их выполнения. Первоначально введенные в систему пользовательские программы помещаются во входную очередь на диске.
Связывание команд и данных с адресами в памяти может выполняться во время компиляции, во время загрузки или во время выполнения.
Пользовательская программа проходит следующие фазы обработки: из исходного кода – компиляция в объектный модуль, затем – генерация из нескольких объектных модулей загрузочного модуля (редактором связей); генерация из загрузочного модуля и библиотек загрузчиком двоичного образа программы в памяти (линковка).
Различаются логические и физические адреса. Логический адрес генерируется процессором при выполнении команд. Физический адрес генерируется устройством управления памятью как сумма логического адреса и значения регистра перемещения.
Устройство управления памятью – модуль аппаратуры, выполняющий преобразование логических адресов в физические и обращения по физическим адресам памяти.
Динамическая загрузка – загрузка вызываемой подпрограммы в память при первом ее вызове, при исполнении пользовательской программы. Динамическая линковка – линковка во время выполнения программы. Библиотеки подразделяются на статически и динамически линкуемые. Для динамической линковки в бинарном коде хранится заглушка, которая вызывает ОС для поиска и загрузки динамически линкуемой библиотеки, с последующей заменой кода заглушки на код обращения к библиотеке.
Оверлейная структура – метод организации программы, не помещающейся целиком в основную память, при котором программа при разработке делится на непересекающиеся группы модулей, необходимые одновременно в памяти, а при исполнении драйвер оверлея по очереди загружает в одну и ту же область памяти то одну, то другую группы модулей.
Набор для практики
Вопросы
- В чем заключается задача управления памятью?
- Что такое входная очередь заданий?
- Что такое связывание адресов и на каких этапах обработки программы оно может выполняться?
- Какие этапы обработки проходит программа на пути от исходного кода к двоичному образу в памяти?
- Что такое компиляция?
- Что такое редактирование связей?
- Что такое загрузка?
- Что такое линковка?
- Что такое объектный модуль?
- Что такое таблица символов?
- Что такое загрузочный модуль?
- Что такое библиотека?
- Что такое бинарный образ программы в памяти?
- Что такое редактор связей?
- Что такое загрузчик?
- Что такое ассемблер?
- Что такое логический адрес и какой компонентой системы он генерируется?
- Что такое физический адрес и какой компонентой системы он генерируется?
- Что такое устройство управления памятью?
- Что такое регистр перемещения?
- Что такое перемещаемый код?
- Что такое динамическая загрузка?
- Что такое динамическая линковка?
- Что такое статически линкуемая библиотека?
- Что такое динамически линкуемая библиотека?
- Что такое оверлейная структура программы?
- Что такое драйвер оверлея?
Упражнения
- Проанализируйте структуру бинарного кода для используемого Вами компьютера и классифицируйте используемую схему адресации (связывание во время компиляции, во время загрузки или во время выполнения).
- Разработайте и выполните в системах UNIX (Linux) и Windows последовательность команд, реализующую на командном языке последовательность фаз обработки программы от исходного кода до двоичного образа исполняемого кода в памяти.
- Используйте статически и динамически линкуемые библиотеки в коде Вашей программы и проанализируйте ассемблерный (бинарный) код обращения к ним в коде Вашей программы.
- Организуйте с помощью используемой вами системы программирования и интегрированной среды программу с оверлейной структурой.
Темы для курсовых работ, рефератов, эссе
- Методы управления памятью в операционных системах (реферат).
- Методы адресации в компьютерных системах (реферат).
- Этапы обработки программы от исходного кода к исполняемому в операционных системах (реферат).
- Физическая и логическая адресация в компьютерных системах (реферат).
- Организация оверлейной структуры программ (реферат).