Открытая память
Самый простой вариант управления памятью – отсутствие диспетчера памяти и возможность загружать в системе только один процесс. Именно так работают СР/М и RT-11 SJ (Single-Job, однозадачная). В этих системах программы загружаются с фиксированного адреса. В СР/М это 0х100; в RT-11 – 01000. По адресам от 0 до начала программы находятся векторы прерываний, а в RT-11 – также и стек программы. Операционная система размещается в старших адресах памяти. Адрес, с которого она начинается SYS_START, зависит от количества памяти у машины и от конфигурации ОС. В этом случае управление памятью со стороны системы состоит в том, что загрузчик проверяет, поместится ли загружаемый модуль в пространство от PROG_START до SYS_START. Если объем памяти, который использует программа, не будет меняться во время ее исполнения, то на этом все управление и заканчивается. Однако программа может использовать динамическое управление памятью, например функцию mallocO или что-то в этом роде. В этом случае уже код malloc() должен следить за тем, чтобы не залезть в системные адреса. Как правило, динамическая память начинает размещаться с адреса PROG_END+PROG_START+PROG_SIZE. PROG_SIZE в данном случае обозначает полный размер программы, т. е. размер ее кода, статических данных и области, выделенной под стек.
Дата добавления: 2015-09-29; просмотров: 734;