- •Лабораторна робота №5
- •Теоретичні відомості:
- •Idm_create_process equ 1
- •Idm_terminate equ 2
- •Idm_exit equ 3
- •Invoke CloseHandle,processInfo.HProcess
- •Invoke GetStartupInfo,addr startInfo
- •Invoke CloseHandle,processInfo.HThread
- •Invoke GetExitCodeProcess,processInfo.HProcess,addr ExitCode
- •Invoke TerminateProcess,processInfo.HProcess,0
- •Invoke CloseHandle,processInfo.HProcess
- •Освоїти програму.
Invoke CloseHandle,processInfo.HProcess
mov processInfo.hProcess,0
.endif
Invoke GetStartupInfo,addr startInfo
invoke CreateProcess,ADDR programname,NULL,NULL,NULL,FALSE,\
NORMAL_PRIORITY_CLASS,\
NULL,NULL,ADDR startInfo,ADDR processInfo
Invoke CloseHandle,processInfo.HThread
Коли користувач вибере пункт "start process", спочатку перевіряємо закриття паpаметpу hProcess стpуктуpи PROCESS_INFORMATION. Якщо процес запускається вперше, значення hProcess буде завжди дорівнювати нулю, так визначено у секції .data. Якщо значення паpаметpа hProcess не pавно нулю, це означає, що дочірній процес завершено, але його дескриптор не закрито. Закриємо його примусово.
Ми викликаємо функцію GetStartupInfo, щоб заповнити стpуктуpу startupinfo, яка буде передана CreateProcess. Тільки після цього можна викликати функцію CreateProcess. Сpазу ж після CreateProcess, слід закрити дескриптор основного потоку, що повертається у складі структури processInfo. Закриття дескриптора не означає, що ми перериваємо потік, а лише те, що нам він уже непотрібен. Якщо ми не будем його закривати його, це викличе проблеми із витоком пам‘яті.
.elseif ax==IDM_TERMINATE
Invoke GetExitCodeProcess,processInfo.HProcess,addr ExitCode
.if ExitCode==STILL_ACTIVE
Invoke TerminateProcess,processInfo.HProcess,0
.endif
Invoke CloseHandle,processInfo.HProcess
mov processInfo.hProcess,0Б
Коли користувач вибере пункт меню "terminate process", перевіримо активність нашого процесу, викликавши функцію GetExitCodeProcess. Якщо він ще активний, ми викликаємо фукнцию TerminateProcess, щоб убити його. І так само закриваємо дескриптор.
Хід роботи:
-
Вивчити теоретичні відомості та опрацювати файл «Процессы в Windows.docx»
-
Освоїти програму.
-
Відповісти на контрольні питання.
-
Надати письмовий звіт про пророблену роботу.
Контрольні питання:
-
Поняття процесу. Компоненти процесу.
-
Поняття потоку. Компоненти потоку.
-
Планування потоків.
-
Приорітети.
-
Робота з процесорами та пам’яттю.
-
Створення та завершення процесів та потоків.
-
Wait-функції.
-
Синхронізація потоків. М’ютекси. Семафори. Події. Очікувані таймери.
-
Синхронізація процесів.
-
Взаємодія між процесами. Роздільна пам’ять. Канали. Роздільні канали. Сокети. Повідомлення у Windows.