Подпишитесь на наши новости
Вернуться к началу с статьи up
 

ДИНАМИ́ЧЕСКОЕ РАСПРЕДЕЛЕ́НИЕ ПА́МЯТИ

  • рубрика
  • родственные статьи
  • image description

    В книжной версии

    Том 9. Москва, 2007, стр. 16-17

  • image description

    Скопировать библиографическую ссылку:


    Книжная версия:



    Электронная версия:

Авторы: Л. Е. Карпов

ДИНАМИ́ЧЕСКОЕ РАСПРЕДЕЛЕ́НИЕ ПА́МЯ­ТИ, спо­соб рас­пре­де­ле­ния опе­ра­тив­ной па­мя­ти ЭВМ, при ко­то­ром она вы­де­ля­ет­ся и ос­во­бо­ж­да­ет­ся ком­пи­ля­то­ром

 >>
или опе­ра­ци­он­ной сис­те­мой
 >>
по за­про­сам про­грам­мы в хо­де её вы­пол­не­ния. Как пра­ви­ло, Д. р. п. вы­би­ра­ет­ся в тех слу­ча­ях, ко­гда на ста­дии ком­пи­ля­ции не уда­ёт­ся оп­ре­де­лить по­ло­же­ние объ­ек­та (напр., про­це­ду­ры) в не­ко­то­рой об­лас­ти па­мя­ти и/или его раз­мер. Для осу­ще­ст­в­ле­ния Д. р. п. ком­пи­ля­тор ус­та­нав­ли­ва­ет со­от­вет­ст­вие ме­ж­ду лек­сич. еди­ни­ца­ми (иден­ти­фи­ка­то­ры, мет­ки, кон­стан­ты и др.) ис­пол­няе­мой про­грам­мы и ад­ре­са­ми, раз­ме­ра­ми, а так­же ат­ри­бу­та­ми об­лас­тей па­мя­ти (со­во­куп­но­стя­ми объ­е­ди­нён­ных ме­ж­ду со­бой эле­мен­тов па­мя­ти) вы­чис­лит. сис­те­мы, от­ве­дён­ных для хра­не­ния этих лек­сич. еди­ниц при вы­пол­не­нии про­грам­мы. Вы­бор об­лас­ти па­мя­ти и вы­де­ле­ние в ней со­от­вет­ст­вую­щих фраг­мен­тов про­во­дят­ся как для объ­ек­тов дан­ных, так и для вы­пол­няе­мых фраг­мен­тов про­грамм – опе­ра­то­ров, бло­ков, функ­ций и про­це­дур. Уп­рав­ле­ние об­лас­тя­ми па­мя­ти вы­пол­ня­ет­ся опе­рац. сис­те­мой на ос­но­ве ис­поль­зо­ва­ния тех­но­ло­гий вир­ту­аль­ной па­мя­ти с сег­мент­ной, стра­нич­ной или сег­мент­но-стра­нич­ной ор­га­ни­за­ци­ей. В ди­на­мич. об­лас­ти па­мя­ти мо­гут рас­по­ла­гать­ся как зо­ны, вы­де­ляе­мые поль­зо­ва­те­лем (ра­бо­таю­щей про­грам­мой), так и зо­ны, вы­де­ляе­мые ком­пи­ля­то­ром ав­то­ма­ти­че­ски, но и те и дру­гие вы­де­ля­ют­ся в про­цес­се вы­пол­не­ния про­грам­мы.

Су­ще­ст­ву­ют разл. ме­то­ды Д. р. п., наи­бо­лее из­вест­ны­ми из ко­то­рых яв­ля­ют­ся сте­ко­вый и ме­тод про­из­воль­но­го рас­пре­де­ле­ния (рас­пре­де­ле­ние в «ку­че»). При сте­ко­вом ме­то­де Д. р. п. на за­про­сы ре­сур­сов па­мя­ти вы­де­ля­ет­ся не­ко­то­рая об­ласть сво­бод­ной опе­ра­тив­ной па­мя­ти (стек), в ко­то­рой про­во­дит­ся ра­бо­та с фраг­мен­та­ми па­мя­ти по пра­ви­лу «по­след­ний при­шёл – пер­вый вы­шел». Этот ме­тод обыч­но вы­би­ра­ет­ся для вы­де­ле­ния па­мя­ти под ло­каль­ные пе­ре­мен­ные бло­ков и про­це­дур, а так­же под за­пи­си об ак­ти­ва­ции про­це­дур.

При про­из­воль­ном ме­то­де Д. р. п. вы­де­ле­ние и ос­во­бо­ж­де­ние фраг­мен­тов па­мя­ти осу­ще­ст­в­ля­ет­ся по про­из­воль­ным за­про­сам без к.-л. сис­те­мы. Про­из­воль­ное Д. р. п. мо­жет про­из­во­дить­ся са­мим раз­ра­бот­чи­ком про­грам­мы (т. е. яв­но) или осу­ще­ст­в­лять­ся ав­то­ма­ти­че­ски (т. е. не­яв­но). Д. р. п. для пе­ре­мен­ных, со­зда­вае­мых по яв­но­му за­про­су, раз­ра­ботчик про­во­дит, как пра­ви­ло, с по­мо­щью спец. опе­ра­то­ров или биб­лио­теч­ных функ­ций (напр., опе­ра­то­ры ALLOCATE в язы­ке PL/1, new в Pascal и Сi++, функ­ция malloc в Сi). Эти опе­ра­то­ры и функ­ции, в свою оче­редь, мо­гут ис­поль­зо­вать воз­мож­но­сти опе­рац. сис­те­мы, а мо­гут про­из­во­дить Д. р. п. са­мо­стоя­тель­но, в рам­ках ста­ти­че­ски вы­де­лен­но­го боль­шо­го уча­ст­ка па­мя­ти.

Автоматическое Д. р. п. осуществляется, если в программе используются такие операции над данными, которые требуют перераспределения памяти, а сами операторы перераспределения в программе отсутствуют [напр., операция слияния значений (конкатенации) строковых переменных в языке Basic или в языке Object Pascal]. Также автоматически проводится управление сегментами и страницами памяти в операц. системах, которые для этого могут пользоваться аппаратной поддержкой.

При применении метода произвольного Д. р. п. возникает серьёзная проблема освобождения памяти и повторно-го использования освобождённых фрагментов (т. к. моменты возврата памяти не всегда очевидны, а порядок возврата памяти непредсказуем), которая имеет разл. решения в зависимости от метода выделения участков памяти. Напр., выделенная ранее память пересматривается с целью обнаружения неиспользуемых фрагментов, а высвобожденная память передаётся для повторного использования.

Лит.: Таненбаум А. Современные операционные системы. 2-е изд. СПб., 2002; Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение. СПб., 2003.

Вернуться к началу