Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 101 102 103 104 105 106 107  108 109 110 111 112 113 114 ... 198
         только старший байт адреса сегмента имеет значение при формирова-
         нии физического адреса. В результате некоторые программы не запо-
         минают младший байт сегмента кадра страниц, полагая, что он будет
         равен нулю. В спецификации расширенной памяти LIM не указывается,
         что физические страницы должны выравниваться  по  любой  границе,
         более высокой, чем граница параграфа.
              2. Некоторые приложения спецификации расширенной памяти  вы-
         полняют вычисление адреса расширенной памяти,  полагая,  что кадр
         страниц находится над 640К или,  что его адрес в  памяти  больше,
         чем адрес самого приложения.  Кадр страниц,  обеспечиваемый прог-
         раммным менеджером расширенной памяти может не  подчиняться этому
         допущению.

                        Чтение и запись расширенной памяти

              В то  время как спецификация расширенной памяти LIM 4.0 поз-
         воляет менеджеру расширенной памяти управлять до 32 Мбайтами дан-
         ных, объем, доступный Вашей программе в каждый данный момент вре-
         мени ограничен числом физических страниц,  присутствующих в кадре
         страниц.
              Перед чтением или записью данных из расширенной памяти долж-
         на  быть сделана доступной для программы логическая страница,  на
         которой эти данные размещены,  путем отображения логической стра-
         ницы в физическую страницу в кадре страниц. Отображение страниц -
         в действительности  сердцевина  управления  памятью  спецификации
         расширенной памяти; для большинства приложений, которые пользуют-
         ся расширенной памятью, это - наиболее часто используемая функция
         менеджера расширенной памяти.
              В спецификации расширенной памяти LIM 3.2  для  данной  цели
         обеспечена  функция  5, "Отобразить/перестать отображать страницы
         обработчика". Путем поддержания  обработчика,  номера  логической
         страницы  и  номера  физической страницы одна логическая страница

                                      - 7-37 -
         отображается в одну физическую. Указание -1 или 0FFFFH в качестве
         номера логической страницы делает любую логическую страницу,  ко-
         торая отображается в указанную физическую, недоступной программе.
         Конечно,  содержимое страницы, которая перестала отображаться та-
         ким образом,  не  изменяется и может снова сделать доступным пос-
         ледующие отображением этой логической страницы в физическую.
              Функция 17, "Отобразить/перестать отображать страницы многих
         обработчиков",  спецификации  расширенной памяти LIM 4.0 добавила
         более краткие и гибкие средства отображения страниц.  В одном об-
         ращении  данная функция может отобразить или перестать отображать
         логические страницы в такое число страниц,  которое  поддерживает
         менеджер расширенной памяти.  Программы, которые часто отображают
         много страниц за раз, могут достигать явно более высокой произво-
         дительности  из-за  сокращения  фиксированных накладных расходов,
         связанных с каждым вызовом менеджера расширенной памяти.
              Как и в случае функции 5, указание номера логической страни-
         цы,  равного -1 (0FFFFH) заставляет  любую  логическую  страницу,
         отображенную  в указанную физическую страницу, перестать отобра-
         жаться.

                      Два способа задания физических страниц

              Начальное рассмотрение физических страниц в связи со  специ-
         фикацией  расширенной  памяти LIM 3.2 установило,  что физические
         страницы определяются порядковым номером (от 0 до 3 в  специфика-
         ции расширенной памяти LIM 3.2). В спецификации расширенной памя-
         ти LIM 4.0 обеспечивается дополнительный способ задания  физичес-
         ких  страниц:  фактическим  адресом  сегмента  начала  физической
         страницы.  Например, если адрес кадра страниц, возвращенный функ-
         цией "Получить адрес кадра страниц",  был равен CC00h, третья фи-
         зическая страница в пределах кадра страниц могла  бы определяться
         своим порядковым номером,  2, или адресом сегмента, D400h. Данный
         адрес сегмента был вычислен путем прибавления трижды размера  фи-
         зической страницы (в параграфах) к базовому адресу кадра страниц.
              Любые функции спецификации расширенной памяти LIM 4.0, беру-
         щие номера физических страниц в  качестве  параметров,  позволяют
         указание  физических  страниц  порядковыми  номерами или адресами
         сегментов. Вы можете выбирать наиболее удобный для Вашей програм-
         мы  метод путем задания кода подфункции в регистре AL для функций
         спецификации расширенной памяти 4.0, которые принимают номера фи-
         зических страниц. Код подфункции 00h показывает, что значения фи-
         зических страниц определены порядковыми номерами физических стра-
         ниц,  в то время как код подфункции 01h показывает,  что значения
         физических страниц заданы соответствующими адресами сегментов.
              Как было  описано  в  предшествующем  разделе,  перекрестная
         ссылка между номерами физических страниц и их  адресами сегментов
         получается  от  менеджера  расширенной памяти посредством функции
         25, "Получить массив физических адресов".
              Когда логическая  страница  отображена  в  физическую,  Ваша
         программа может затем адресовать любые  данные  в  этой  странице
         удаленным указателем.Языковые процессоры,которые генерируют толь-
         ко так называемые программы малых моделей,  могут не поддерживать
         использование 32-битовых (удаленных)   указателей  для  именуемых
         элементов данных. В отсутствие такой поддержки некоторые компиля-
         торы  обеспечивают библиотечную программу,  которая копирует блок
         данных из произвольного сегмента  и  адреса  смещения  в  область
         внутри  единственного 64-Кбайтного сегмента данных программы.  Не

                                      - 7-38 -
         имея даже этого,  Вы можете написать  интерфейсную  программу  на
         языке ассемблера для получения того же результата.
              На рис. 7-3 показана гипотетическая конфигурация расширенной
         памяти 384К,  которая используется двумя программами, электронной
         таблицей и программой буферизации принтера.  Иллюстрируются неко-
         торые  динамические  отношения между программами,  обработчиками,
         логическими страницами и физическими страницами, а именно:
              * Две (или более) независимых программы  могут  пользоваться
         расширенной памятью одновременно без взаимного влияния.
              * У одной программы может быть более одного обработчика спе-
         цификации расширенной памяти, размещенного для нее, - фоновая за-
         дача в примере обладает двумя обработчиками.
              * Последовательно  пронумерованные  логические  страницы  не
         приходится отображать в последовательные  физические  страницы  -
         активная приоритетная программа имеет логические страницы 6, 7, 2
         и 1, отображенные в физические страницы 0-3.

              Функция "Передвинуть/обменять  область памяти" (24), которая
         была добавлена как часть спецификации расширенной памяти  LIM 4.0
         обеспечивает  исчерпывающие средства для управления передвижением
         областей данных,  длиной до 1Мбайта,  между расширенной памятью и
         обычной  памятью.  Данная функция также позволяет передвигать или
         обменивать данные, когда обе указанные области находятся в преде-
         лах расширенной памяти или, когда обе области находятся в обычной
         памяти.
              Подфункция передвижения  (00h)  копирует  содержимое  облас-
         ти-источника в область-приемник.  Если указанные области перекры-
         ваются,  менеджер расширенной памяти выбирает  такое  направление
         передвижения,  чтобы область-приемник получала неповрежденную ко-
         пию области источника. Когда часть области-источника перекрывает-
         ся  целевой  областью  в течение операции передвижения,  менеджер
         расширенной памяти возвратит код состояния,  указывающий  на  это
         (как всегда в регистре AH).
              Подфункция обмена (01h) обменивает местами две области памя-
         ти: любая или обе области могут быть в расширенной памяти или
              В отличие от подфункции передвижения  подфункция  обмена  не
         разрешает задания перекрывающихся областей.
              Удобной чертой обеих подфункций является  то,  что  операции
         передвижения или обмена на меняют контекста текущего отображения.
         Любые логические страницы,  которые Ваша программа могла  отобра-
         зить в кадр страниц, не будут изменяться функцией 25, так что для
         Вашей программы нет необходимости сохранять  контекст отображения
         перед применением данной функции.
              Функция "Передвинуть/обменять  область   памяти"   избавляет
         программиста  от нескольких утомительных программных работ,  свя-
         занных с управлением расширенной памятью,  которые были жизненным
         фактом  в  более  ранних  версиях спецификации расширенной памяти
         LIM. Тем не менее, важно контролировать код состояния, возвращае-
         мый данной функцией.  Существуют 13 различных ошибок, которые мо-
         гут случиться в течение операции передвижения или обмена.

                  Разделение расширенной памяти между программами

              При спецификации расширенной памяти LIM 3.2  ничто  не  пре-
         дотвращало две программы от разделения данных в расширенной памя-
         ти.  Программе требовалось только знать обработчик и номер  логи-
         ческой   страницы   данных,  к  которым  она  хотела  обратиться.

                                      - 7-39 -
         Поскольку программа не  может  знать  apriori,  какой  обработчик
                                                  384Kb расширенной
                                         B   C           памяти
         ЪДДДДДДДДДД¬                   ЪДДВДД¬   ЪДДДДДДДДДДДДДДДД¬ Д¬
         ¦          ¦ДДДДДДДДДДДДДДВДДДД¦ 1¦ 0¦   ГДДДДДДДДДДДДДДДДґ
         ¦    A     ¦              ¦    АДДґ 1¦   ГДДДДДДДДДДДДДДДДґ  24
         ¦          ¦              ¦       ¦ 2¦   ГДДДДДДДДДДДДДДДДґ
         АДДДДДДДДДДЩ              ¦       ¦ 3¦   ГДДДДДДДДДДДДДДДДґ   С
                                   ¦       ¦ 4¦   ГДДДДДДДДДДДДДДДДґ
     Начальный                     ¦       ¦ 5¦   ГДДДДДДДДДДДДДДДДґ   Т
     сегмент                       ¦       ¦ 6¦   ГДДДДДДДДДДДДДДДДґ
     физической                    ¦       ¦ 7¦   ГДДДДДДДДДДДДДДДДґ   Р
     страницы    D   B  C          ¦    ЪДД†ДДґ   ГДДДДДДДДДДДДДДДДґ
         CC00H  ЪДДВДДВДД¬         ¦  ЪД¦ 2¦ 0¦   ГДДДДДДДДДДДДДДДДґ   А
                ¦ 0¦ 2¦ 6¦ДДДДД¬   ¦  ¦ АДДґ 1¦Д¬ ГДДДДДДДДДДДДДДДДґ
         D000H  ГДД†ДД†ДДґ     ¦   ¦  ¦  ЪД¦ 2¦ ¦ ГДДДДДДДДДДДДДДДДґ   Н
                ¦ 1¦ 2¦ 7¦ДДД¬ ¦   ¦  ¦  ¦ ¦ 3¦ ¦ ГДДДДДДДДДДДДДДДДґ
         D400H  ГДД†ДД†ДДґ   ¦ ¦   ¦  ¦  ¦ ¦ 4¦ ¦ ГДДДДДДДДДДДДДДДДґ   И
                ¦ 2¦ 2¦ 2¦ДДД¦Д¦ДДД¦ДД¦ДДЩ ¦ 5¦ ¦ ГДДДДДДДДДДДДДДДДґ
         D800H  ГДД†ДД†ДДґ   ¦ АДДД¦ДД¦ДДДД¦ 6¦ ¦ ГДДДДДДДДДДДДДДДДґ   Ц
                ¦ 3¦ 2¦ 1¦Д¬ АДДДДД¦ДД¦ДДДД¦ 7¦ ¦ ГДДДДДДДДДДДДДДДДґ
                АДДБДДБДДЩ ¦       ¦  ¦    ¦ 8¦ ¦ ГДДДДДДДДДДДДДДДДґ   Ы
              Кадр страниц ¦       ¦  ¦    ¦ 9¦ ¦ ГДДДДДДДДДДДДДДДДґ
                           ¦       ¦  ¦ ЪДД†ДДґ ¦ ГДДДДДДДДДДДДДДДДґ
                           ¦       АДДДД¦ 3¦ 0¦ ¦ ГДДДДДДДДДДДДДДДДґ   П
                           ¦          ¦ АДДґ 1¦ ¦ ГДДДДДДДДДДДДДДДДґ
Предыдущая страница Следующая страница
1 ... 101 102 103 104 105 106 107  108 109 110 111 112 113 114 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама