Сегмент кода - Code segment

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

В вычисление, а сегмент кода, также известный как текстовый сегмент или просто как текст, является частью объектный файл или соответствующий раздел программы виртуальное адресное пространство который содержит исполняемый файл инструкции.[1] Термин «сегмент» происходит от сегмент памяти, что является историческим подходом к управление памятью это было преемником пейджинг. Когда программа хранится в объектном файле, сегмент кода является частью этого файла; когда грузчик помещает программу в объем памяти чтобы его можно было выполнить, выделяются различные области памяти (в частности, как страницы), соответствующие как сегментам в объектных файлах, так и сегментам, необходимым только во время выполнения. Например, сегмент кода объектного файла загружается в соответствующий сегмент кода в памяти.

Сегмент кода в памяти обычно доступен только для чтения и имеет фиксированный размер и т. Д. встроенные системы его обычно можно разместить в только для чтения памяти (ROM), без необходимости загрузки. Если сегмент кода не предназначен только для чтения, то конкретный архитектура позволяет самомодифицирующийся код. Фиксированное положение или независимый от позиции код может совместно использоваться в памяти несколькими процессами в системах с сегментированной или страничной памятью.[1][2] В качестве области памяти сегмент кода может быть размещен ниже кучи или стека, чтобы предотвратить куча и переполнение стека от перезаписи.[3]

Смотрите также

Рекомендации

  1. ^ а б Джейсон В. Бэкон (13 марта 2012 г.). «Глава 10. Вызов подпрограмм и стек». cs.uwm.edu. Раздел 10.4. Сегменты памяти. Получено 2014-05-02.
  2. ^ Кай Ван (2012-09-20). «Сегмент кода и сегмент данных: структура памяти программы». beingdeveloper.com. Получено 2014-05-02.
  3. ^ Ю-Ань Тан; Цзи-янь Чжэн; Юань-Да Цао; Сюэ-лань Чжан (октябрь 2005 г.). Защита от переполнения буфера на основе настройки ограничения сегмента кода. Международный симпозиум IEEE по коммуникационным и информационным технологиям. IEEE. Дои:10.1109 / ISCIT.2005.1567023.