Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену (Операционные системы).docx
Скачиваний:
31
Добавлен:
13.02.2021
Размер:
314.83 Кб
Скачать
  1. Память приложения: память команд, память данных, стек.

Адресное пространство каждого процесса имеет по крайней мере три сегмента:

Сегмент кода. (содержит команды из нашей программы, которые будут исполнятся.)

Сегмент данных. (Содержит данные, то бишь переменные)

Сегмент стека, про который я писал выше.

Память программ. Необходимость такой памяти вызвана тем, что микроконтроллер не содержит таких устройств памяти, как винчестер в компьютере, с которого загружается исполняемая программа. Поэтому код программы должен постоянно храниться в микроконтроллере.

Все типы памяти программ относятся к энергонезависимой памяти, или постоянной памяти (ПЗУ), содержимое которой сохраняется после выключения питания микроконтроллера.

В процессе выполнения программа считывается из этой памяти, а блок управления (дешифратор команд) обеспечивает ее декодирование и выполнение необходимых операций. Содержимое памяти программ не может меняться (перепрограммироваться) во время выполнения программы. Поэтому функциональное назначение микроконтроллера не может измениться, пока содержимое его памяти программ не будет стерто (если это возможно) и перепрограммировано (заполнено новыми командами).

Память данных. В качестве резидентной памяти данных используется статическое оперативное запоминающее устройство (ОЗУ), позволяющие уменьшать частоту тактирования до сколь угодно малых значений. Содержимое ячеек ОЗУ (в отличие от динамической памяти) сохраняется вплоть до нулевой частоты. Еще одной особенностью статического ОЗУ является возможность уменьшения напряжения питания до некоторого минимально допустимого уровня, при котором программа управления микроконтроллером не выполняться, но содержимое в ОЗУ сохраняется.

В микроконтроллерах для организации вызова подпрограмм и обработки прерываний выделяется часть памяти ОЗУ, именуемая стеком. При этих операциях содержимое программного счетчика и основных регистров (аккумулятора, регистра состояния, индексных и других регистров) сохраняется, а при возврате к основной программе восстанавливается. Напомним, что стек работает по принципу: последний пришел — первый ушел

Область памяти, занятая программой, разделена на три части: TEXT (выполняемые коды программы), DATA (статические данные программы), STACK (динамические данные). Когда ОС освобождает место в памяти за счет TEXT'а, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действительно, когда потребуется загрузить TEXT обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет один побочный эффект. Файл программы, которая в данный момент выполняется, невозможно уничтожить.

  1. Загрузка приложения в память, статическая память.

Виртуальная память– это способ организации памяти при котором пользователь предполагает, что нет физической оперативной памяти которая имеет определённый размер, а есть одноуровневая память, объем которой ограничен адресным пространством систем адресаций машины. Таким образом, программы разрабатываются в виртуальных адресах, а исполняются в физических.

В ранних машинах использовалось статическое распределение памяти или распределение памяти фиксированными разделами.

К каждому разделу строились очереди из задач. Маленькие задачи помещались в раздел 1, средние – в раздел 2, а большие – в раздел 3. Можно организовать одну очередь из всех задач, но могут образовываться пустые разделы или фрагментация памяти, что является недостатком такого метода.

Размещение статической памяти - память, выделенная во время компиляции в стеке или других сегментах данных. Это используется, когда количество (размер) памяти является статическим/постоянным и известно во время компиляции.

Распределение статической памяти: Компилятор выделяет требуемое пространство памяти для объявленной переменной. Используя адрес оператора, зарезервированный адрес получен, и этот адрес может быть назначен переменной указателя. Поскольку у большей части объявленной переменной есть статическая память, этот способ присвоения значения указателя переменной указателя известен как распределение статической памяти. память назначается во время компиляции.