До засобів керування програмами відносять засоби ОС для завантаження програм на виконання та їх завершення. Для керування програмами MS-DOS зберігає спеціальну інформацію. Програма, яка запущена на виконання, називається програмою-нащадком (child program); програма, яка запускає нащадка називається програмою-предком (parent program).
Єдиним засобом MS-DOS для завантаження програм на виконання є функція ЕХЕС (функція АН=4Вh переривання 21h). Вона має дві опції, що задаються значенням регістру AL. Якщо AL=0, виконується завантаження програми та передається керування в точку її входу. Якщо AL=03h, проводиться завантаження програми, налагодження її адрес, але керування повертається у програму, що зробила виклик ЕХЕС. Ця опція використовується для реалізації програм з оверлейною структурою. Крім того, операційній системі передаються два покажчика. Перший з них (DS:DX) задає адресу початку в оперативній пам’яті ASCIIZ-рядка специфікації імені .ЕХЕ- чи СОМ-файлі. Що запускається на виконання. Другий покажчик (ЕS:ВX) має адресу блоку параметрів. Важливо, що при завантаженні на виконання в ОС повідомляється номер параграфу, по якому розташовується середовище програми що запускається, та far-покажчик на “хвостовик” командної рядка. “Хвостовик” передається у точку входу програми що запускається.
Виконанню ЕХЕС передує ряд дії зі сторони програми-батька. Спочатку батьківська програма повинна попіклуватись про звільнення пам’яті для програми що завантажується. Справа в тому, що вся вільна пам’ять в MS-DOS виділяється програмі що завантажується на виконання, у тому числі і програмі-батьку. Тому функціональний виклик ЕХЕС зустрінеться з відсутністю вільної пам’яті, навіть якщо програма-батько невелика. Після цього батьківська програма будує середовище програми (якщо це середовище перевизначається при завантаженні програми) та “хвостовик” командного рядка. Номер параграфу та far-покажчик на “хвостовик” поміщується в блок параметрів. У тому випадку, якщо нащадок використовує копію середовища батька, перше слово в блоці параметрів дорівнює нулю. Остання дія – це збереження у змінних батька значень регістрів SS і SP. Дані регістри вказують поточну вершину стеку програми-батька. Після виконання перерахованих дії батьківська програма задає потрібні значення регістрів та видає переривання 21h.
Функція ЕХЕС, отримавши керування, виконує наступні дії:
1) вся доступна пам’ять розподіляється для програми що завантажується. Сегментна частина адреси початку вільної пам’яті носить назву початкового сегменту програми;
2) зі зміщення 0 у проміжку початкового сегменту будується спеціальний виконавчий блок – префікс сегмента програми, чи PSP (Program Segment Prefix);
3) безпосередньо до PSP проводиться завантаження програми нащадка та, якщо вона зберігається у форматі EXE-файлу, проводиться налагодження її адреси;
4) ЕХЕС викликає завантажену програму як far-функцію та при завершені програми керування повертається в ЕХЕС, а звідти до програми-батька.
![]() |
![]() |
![]() |