Міністерство освіти і науки України
НУ”Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №8
з дисципліни:”Системне програмування”
на тему:”Управління процесами. Організація дочірніх процесів. Частина 1”
Мета: Ознайомитись з принципами управління процесами в MS-DOS. Дослідити механізм активізації дочірніх процесів з під управління прикладних програм.
Програми завантажуються в пам‘ять для виконання за до-помогою функції DOS Exec (Int 21h, функція 4Bh), що виконує роль системного завантажувача.
Програма, що завантажується функцією Exec в пам‘ять, включає такі компоненти:
оточення,
префікс програмного сегмента,
власне програму.
В процесі початкового завантаження DOS створює оточення, в якому працюватимуть активовані програми і, в першу чергу, командний процесор COMMAND.COM. Оточення являє собою область пам‘яті, в якій у вигляді символьних рядків записані значення змінних (змінні оточення). Формат рядка (рядок обов‘язково завершується нульовим байтом.) є таким:
змінна = значення
Для завантаження і виконання дочірнього процесу програма вищого рівня повинна використати функцію DOS Exec - Int 21h, функція 4Bh. При цьому стан регістрів повинен бути таким:
AH = 4Bh;
AL = 00h (підфункція завантаження дочірньої програми);
DS:DX = адреса рядка із специфікацією файлу запуску дочірньої програми;
ES:BX = адреса блоку параметрів.
Блок параметрів служить для передачі функції Exec необхідних даних і включає в себе адреси таких об‘єктів:
оточення (сегментна адреса, одне слово);
залишок командного рядка (повна адреса, два слова);
два блоки управління пам‘яттю (файлами) (FCB) (повні адреси, комірки по два слова).
Формат функції Exec вимагає адрес двох FCB і, відповідно, наявності цих блоків довжиною 37 байт кожен в інціалізуючій програмі. Якщо ж відомо, що програмою ці блокі не використовуватимуться, місце під них можна не виділяти. В цьому випадку в поля блоку параметрів для адрес цих блоків записується 0.
DOS дозволяє дочірньому процесу передати у ініціалізуючий процес, що викликав його, код завершення із значенням в діапазоні 0-255. Як правило, 0 використовується в якості коду успішного завершення, інші значення – характеризують різні помилкові ситуації. Значення коду завершення формується в дочірній програмі по мірі її виконання і передається в ініціалізуючу за допомогою функції 4Ch.
Текст програми, що викликає в якості дочірнього процесу програму з лабораторної роботи №4:
DOSSEG
.model small
.stack 64
.data
parameters dd fcb1
dd fcb2
fcb1 db 37 dup (0)
fcb2 db 37 dup (0)
progname db 'c:\julia4.exe', 0
.code
main PROC FAR
mov ah, 4ah
mov bx, stack
add bx, 4
int 21h
jc err1
mov ax, @data
mov ds, ax
mov es, ax
mov ah, 4bh
mov al, 00
lea bx, parameters
lea dx, progname
int 21h
jc err2
mov al, 00
jmp quit
err1:
mov al, 01
jmp quit
err2:
mov al, 02
quit:
mov ah, 4ch
int 21h
main ENDP
end main
Висновки: під час виконання лабораторної роботи №8 ми ознайомились з принципами управління процесами в MS-DOS, дослідили механізм активізації дочірніх процесів з під управління прикладних програм.