Реферат Курсовая Конспект
Сегментация программы - раздел Компьютеры, Лекция 1 Структурная схема компьютерной программы Следующий Важный Принцип Организации Памяти – Сегментация. СегментомНа...
|
Следующий важный принцип организации памяти – сегментация. Сегментомназывается непрерывная область памяти, хранящая данные одного вида (назначения) и имеющая собственную систему относительной адресации и ограничения доступа. К программированию это имеет отношение потому, что при трансляции разные компоненты программы попадают в различные сегменты программного кода.
Одновременное нахождение в памяти «алгоритма» и данных соответствует принципу хранимой программы, который заключается в том, что программный код хранится в той же самой памяти, что и обрабатываемые данные, и в свою очередь сам представляет собой специфические данные, с которыми работает процессор во время выполнения программы. В настоящее время применяется немодифицируемый программный код.Это, в свою очередь, означает, что несколько программ могут его читать и исполнять, не мешая друг другу, в том числе и на физически параллельных процессорах.
Компоненты программы находятся в памяти,которая, в принципе, является общей для них, но логически разделяется на области, именуемые сегментами: прежде всего, это сегмент данных,содержащий данные программы; сегмент кода (команд), в котором находится алгоритмическая компонента (выражения, операторы); сегмент стека, в котором находятся локальные данные функций, «история» работы программы.
Процессор имеет в своем составе набор машинных слов – регистров.В зависимости от назначения они могут хранить как данные, так и адреса памяти. Сегментация поддерживается в процессоре при помощи регистров двух видов. Базовый регистр сегментасодержит его начальный адрес. Регистры, работающие с данными сегмента, содержат относительный адрес данных от начала сегмента, или смещение.Результирующий адрес получается путем сложения содержимого этих регистров. Таким образом, каждый сегмент имеет собственную «систему координат», связанную с его началом (Рис.1.7). Если программа использует только сегментную адресацию, то сегменты можно перемещать по памяти при сохранении работоспособности программы: достаточно перенастроить соответствующие им базовые регистры.
Выполняемая программа состоит из нескольких сегментов. Некоторые из них создаются при трансляции, другие – при загрузке и при работе программы. В принципе, программа может иметь несколько сегментов одного вида:
Сегмент | Регистры | Что содержит | Когда создается |
Сегмент команд | CS- сегментный, IP- адрес команды | Программный код (операции, операторы) | трансляция |
Сегмент данных | DS – сегментный | Глобальные (статические) данные | трансляция |
Сегмент стека | SS – сегментный, SP– указатель стека | Локальные данные функций, «история» работы программы | при загрузке |
Динамическая память | DS – сегментный | Динамические переменные, создаваемые при работе программы | при загрузке, выполнении |
Динамически связываемые библиотеки (DLL) | CS– сегментный, IP– адрес команды | Программный код разделяемых библиотек | при загрузке |
Рис. 1.7. Сегментация программы
Следующий элемент архитектуры тоже имеет отношение к внутреннему представлению программы – виртуальное адресное пространство (виртуальная память).Его идея состоит в том, что каждая программа имеет свое, независимое от других, виртуальное адресное пространство (виртуальную память), в котором размещаются сегменты программы, определяются адреса и т.п. В процессоре имеется скрытая от программ система отображения виртуальных адресов на физические адреса. Виртуальное адресное пространство находится под управлением операционной системы и реализует защиту памяти программ, ее разделение (сегменты динамически связываемых библиотек), загрузку программы в память «по частям» и иллюзию наличия неограниченной памяти. Для нас из всего этого важно то, что внутренне представление программы в виртуальной памяти занимает все адресное пространство, как будто других программ и операционной системы в памяти нет вовсе.
– Конец работы –
Эта тема принадлежит разделу:
Взаимосвязь алгоритма и данных в программе не является простой и линейной Процесс выполнения любой программы можно рассматривать с двух точек...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Сегментация программы
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов