|
|
|
|
Сегмент программного префикса
Сегмент программного префикса (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 в памяти
|
|
|