На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 3 / Сегмент программного префикса Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Сегмент программного префикса

Сегмент программного префикса (PSP), введенный в главе 2, является в некотором смысле "краеугольным камнем" процесса MS-DOS. Адрес сегмента PSP обеспечивает идентификатор процесса и служит в качестве идентификатора блока памяти процесса. Устанавливаемый всегда в начале блока процесса PSP также служит в качестве "хранилища" для большого количества ценной информации.


В данном документе PSP представлен в трех представлениях: как графическое изображение на Рис.3-7; как подробное описание в таб лице 3-1 и, наконец, как описание структуры макроассемблера MASM STRUC в PSP.INC, приведенной в листинге 3-1. Рисунок дает возможность быстрого размещения информации, таблица обеспечивает глубину информации, а листинг показывает смещения, необходимые при использовании в программах пользователя.


Даже беглый взгляд на Рис.3-7 и таблицу 3-1 открывает обилие информации, которая может быть полезна программисту. Однако, некоторые элементы PSP требуют гораздо большего пояснения.



            Процесс .COM       Нижние адреса памяти      Процесс .EXE

         |\/\/\/\/\/\/\/\/\/|                        |\/\/\/\/\/\/\/\/\/|
         |COMMAND или преды-|    Предыдущий блок     |COMMAND или преды-|
         |  дущей программы |                        |  дущей программы |
          ------------------                          ------------------
         .------------------.                        .------------------.
         ||  4D/PSP/size/  ||        MCB среды       ||  4D/PSP/size/  ||
         ||----------------||                        ||----------------||
         ||  имя = строка  ||       блок среды       ||  имя = строка  ||
          ------------------                          ------------------
         .------------------.                        .------------------.
         ||  5A/PSP/size/  ||       MCB процесса     ||  4D/PSP/size/  ||
         ||----------------||                        ||----------------||
         ||  PSP программы ||      блок процесса     ||  PSP программы ||
         || - - - - - - - -||                        || - - - - - - - -||
         || Код программы  ||                        || Код программы  ||
         ||   и данные     ||                        || - - - - - - - -||
         || - - - - - - - -||                        || Стек или данные||
         ||                ||                         ------------------
         ||                ||                        .------------------.
         ||"Ни себе, ни лю-||          свободный MCB |   5A/0000/size/  |
         ||       дям"     ||                        |------------------|
         ||                ||                        |                  |
         || - - - - - - - -||                        |                  |
         ||     Стек       ||                        |   Доступна для   |
         ||----------------||                        |   использования  |
         || Недоступна для ||  Неиспользуемая память |                  |
         ||  использования ||                        |                  |
         |/\/\/\/\/\/\/\/\/\|                        |/\/\/\/\/\/\/\/\/\|

                               Верхние адреса памяти
           -------
          ||     || - Память, распределяемая/владеющая процессом
           -------

                    Рис.3-6. Контекст процесса MS-DOS в памяти

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz