
- •6.050101 «Комп’ютерні науки»
- •Загальні вимоги до виконання лабораторних робіт
- •Лабораторна робота №1
- •1. Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Створення процесу
- •1.3 Створення потоку
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Функція CreateProcess створює новий процес.
- •Додаток 4
- •Додаток 5
- •Addr ThreadId – Створює новий потік.
- •Додаток 6
- •Додаток 7
- •Лабораторна робота №2
- •1. Основні теоретичні відомості
- •1.1 Механізми міжпроцесової взаємодії
- •1.2 Механізми синхронізації процесів та потоків
- •1.3 Об’єкти синхронізації
- •1.4 Очікуючі функції
- •1.5 Створення атома
- •1.6 Створення каналу
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Додаток 4
- •Додаток 5 Детальний опис функції створення анонімного каналу
- •Додаток 6 Детальний опис функції створення іменованого каналу
- •Додаток 7
- •Додаток 8
- •Додаток 9 Текст програми створення анонімного каналу
- •Додаток 10
- •Лабораторна робота №3
- •1. Основні теоретичні відомості
- •2. Приклад програми створення dll
- •Опис програми My_dll.Asm та файлу лістінга My_dll.Def
- •4. Трансляція та компонування dll Для того, щоб відтранслювати(ml.Exe) та зкомпонувати (link.Exe) даний .Asm код, потрібно використовувати наступні параметри:
- •5. Приклад використання функції з бібліотеки
- •Приклад програми завантаження dll
- •7. Створення файлу лістінгу існуючої бібліотеки
- •8. Приклад передачі даних у функцію бібліотеки Створення динамічно завантажуваної бібліотеки
- •Передача параметру у функцію бібліотеки
- •9. Хід роботи
- •11. Завдання
- •12. Контрольні запитання
- •13. Список використаної літератури
- •Лабораторна робота №4
- •1. Основні теоретичні відомості
- •Параметри функції CreateToolhelp32Snapshot:
- •2. Перегляд процесів
- •3. Перегляд потоків
- •Значення результуючого параметру (регістр еах) таке саме як в Process32First і Process32Next.
- •4. Перегляд хіпів асоційованих з процесом
- •5. Перегляд модулів, які використовує процес
- •6. Керування процесами
- •7. Хід роботи
- •9. Завдання На 75 балів виконати 4 завдання:
- •10. Контрольні запитання
- •11. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №5
- •Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Категорії даних
- •1.3 Відкриття і закриття ключів реєстру
- •1.4 Створення підключа у відкритому ключі реєстру
- •1.5 Отримання інформації з ключа реєстру
- •1.6 Перелічення списку значень для заданого ключа реєстру
- •1.7 Виявлення змін в гілці реєстру
- •1.8 Робота з налаштуваннями операційної системи через реєстр
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №6
- •1. Основні теоретичні відомості
- •Породження процесів
- •1.2 Породження потоків
- •2. Хід роботи
- •4. Індивідуальні завдання
- •5. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
1.2 Створення процесу
При написанні програм іноді виникає потреба у запуску із своєї програми іншої програми. В середовищі Windows це можна зробити за допомогою функції CreateProcess (Див. додаток 3). Така програма називається процесом.
Процес - це виконувана прикладна програма, яка складається із власного віртуального адресного простору, коду, даних та інших ресурсів операційної системи, таких як файли, папки і синхронізовані об’єкти, видимі для процесу.
Процес має декілька об’єктів: адресний простір, виконуваний модуль чи модулі, та все, що ці модулі створюють та відкривають. Як мінімум, процес повинен складатися з виконуваного модуля, власного адресного простору та потоку. Кожен процес має щонайменше один потік. Потік - це виконувана черга. Коли Windows вперше створює процес, то створюється тільки один потік для процесу.
1.3 Створення потоку
Коли Windows отримує команду для створення процесу, вона створює власний адресний простір для процесу, а потім завантажує виконуваний файл у цей простір. Після цього Windows створює основний потік для процесу.
Потік (thread) – це функція, яка виконується паралельно з батьківською програмою (програмою, котра створила потік). Потік виконується в тому самому батьківському процесі, тому він має доступ до всіх ресурсів процесу, глобальних змінних, дескрипторів і ін. Крім того, кожен потік має свій власний стек (тому локальні змінні в кожному потоці є приватними), власний набір регістрів (тому коли Windows завантажує новий потік, то попередній зберігає значення регістрів і відновлює їх після завершення породженого потоку).
Потоки можна розділити на дві категорії:
Потік інтерфейсу користувача: потік такого виду створює своє власне вікно, тому він отримує віконні повідомлення. Потік може відповідати користувачеві з допомогою свого власного вікна.
Активний потік. Такий тип потоку не створює вікна, тому він не може приймати повідомлень від Windows. Такий потік існує тільки для того, щоб виконувати визначене для нього завдання у фоновому режимі.
При використанні великої кількості потоків потрібно створити один потік, котрий буде займатися інтерфейсом користувача, а інші будуть виконуватись у фоновому режимі. Так у даному випадку основний потік буде керуючим, а інші потоки – підлеглими.
Для того щоб створити власний потік потрібно використати функцію CreateThread (Див. Додаток 5).
Функції CreateProcess і CreateThread завершує кінцева функція ExitProcess при виході із програми. Якщо існує потреба у знищенні процесу або потоку не виходячи із програми, то використовують функції TerminateProcess і TerminateThread. Перевірити чи процес є досі активним (виконується) можна за допомогою функції GetExitCodeProcess.
2. Хід роботи
Ознайомитись з основними теоретичними відомостями даної лабораторної роботи.
Ознайомитись з приведеними в основних теоретичних відомостях прикладами програм.
Ознайомитись з додатковими джерелами, приведеними в п.6 (Література).
Затвердити номер індивідуального завдання у викладача.
Виконати завдання згідно з номером.
3. Зміст звіту
Звіт повинен містити:
титульну сторінку;
мету роботи;
завдання, робочий варіант тексту програми, результат виконання програми;
короткі висновки по проведеній роботі.