
- •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.5 Створення атома
Атом - це число або стрічка, котрі повертаються програмі після того, як вона зробила запис у загальній таблиці атомів. В цій таблиці розміщуються ідентифікатори (атоми) та стрічки (імена атомів).
Створити атом можна за допомогою функції AddAtom, створити глобальний атом можна за допомогою функції GlobalAddAtom (Див. додаток 3). Функція, котра створює атом, тобто заносить певну стрічку у таблицю атомів, отримує ідентифікатор (атом). Знаючи цей атом люба функція може мати доступ до відповідного запису у таблиці атомів.
Знищити атом можна за допомогою функцій DeleteAtom та GlobalDeleteAtom.
Отримати запис з таблиці атомів можна за допомогою функції GetAtomName та GlobalGetAtomName.
Щоб отримати ідентифікатор (атом), знаючи ім’я атома можна використати функції FindAtom та GlobalFindAtom (див. додаток 4). Будь – яка програма, може за глобальним атомом дістати відповідний запис у таблиці атомів. Локальний атом дійсний тільки в межах однієї програми.
1.6 Створення каналу
Pipe – це канал з двома кінцями. Канал можна використовувати для обміну даними між двома різними процесами, або всередині одного процесу.
Існує два види каналів: анонімні та іменовані. Створити анонімний канал можна за допомогою функції CreatePipe. (див. додаток 5). Створити іменований канал можна за допомогою функції CreateNamedPipe (див. додаток 6).
Канали бувають однонаправлені, або двонаправлені. В однонаправленому каналі дані передаються в одному напрямку, в двонаправленому каналі дані можуть передаватись в обох напрямках. Анонімний канал завжди має один напрямок. Іменований канал може бути як однонаправлений так і двонаправлений.
Зазвичай іменовані канали використовуються в мережевому оточенні – де сервер може контактувати з декількома клієнтами (див. додаток 7, 8).
Анонімний канал використовується для зв’язку між батьківським та дочірнім процесом. Анонімний канал найбільш часто використовується під час взаємодії з консольною програмою, тобто програмою, котра свій ввід/вивід здійснює через консоль (Див. додаток 9, 10). Так можна перенаправити ввід/вивід консольної програми у вікно власної програми.
Оскільки анонімний канал одно направлений, тобто з нього можна або тільки зчитувати дані, або записувати, то відкритим може бути тільки один кінець каналу.
Після створення каналу користувач отримує два дескриптори на запис та зчитування з каналу. Один із них потрібно закрити, використовуючи функцію CloseHandle.
2. Хід роботи
Ознайомитись з основними теоретичними відомостями даної лабораторної роботи.
Ознайомитись з приведеними в додатках прикладами програм.
Ознайомитись з додатковими джерелами, приведеними в п. 6 (Література).
Затвердити номер індивідуального завдання у викладача.
Виконати завдання згідно з номером.
3. Зміст звіту
Звіт повинен містити:
титульну сторінку;
мету роботи;
завдання, робочий варіант тексту програми, результат виконання програми;
короткі висновки по проведеній роботі.
4. Завдання
Розробити на мові асемблер для ОС Windows програму, використовуючи пакет MASM32. Результат виводиться на екран.
На 60 балів одна програма має створювати глобальний атом, який має містити П.І.П. Інша програма має виводити атом (ідентифікатор у таблиці атомів) у вікно повідомлення вказаного типу:
Тип вікна повідомлення – згідно варіанту:
№ |
№ |
Тип |
1 |
2 |
MB_ABORTRETRYIGNORE |
3 |
4 |
MB_OK |
5 |
6 |
MB_OKCANCEL |
7 |
8 |
MB_RETRYCANCEL |
9 |
10 |
MB_YESNO |
11 |
12 |
MB_YESNOCANCEL |
13 |
14 |
MB_ICONEXCLAMATION |
15 |
16 |
MB_ICONWARNING |
17 |
18 |
MB_ICONINFORMATION |
19 |
20 |
MB_ICONASTERISK |
21 |
22 |
MB_ICONQUESTION |
23 |
24 |
MB_ICONSTOP |
25 |
26 |
MB_ICONERROR |
27 |
28 |
MB_ICONHAND |
На 75 балів програма має перенаправити консольний вивід у вікно повідомлення, використовуючи анонімні канали. Консольна програма має виводити П.І.П та групу. Тип вікна повідомлення вибрати з завдання на 60 балів згідно варіанту.
На 95 балів потрібно розробити програму згідно варіанту.
Консольні програми розробляються в MASM32.
Розробити програму, котра перенаправляє вивід поточного дня тижня (Понеділок, …) з консольної програми у вікно повідомлення за допомогою анонімного пайпу.
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточну директорію розміщення системних файлів ОС Windows. Результат вивести у вікно повідомлення.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточні координати курсору, інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програму, котра перенаправляє вивід поточного часу (00:00:00) з консольної програми у вікно повідомлення за допомогою анонімного пайпу.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточний день тижня (Понеділок,…), інша має зчитати цей запис і вивести його у вікні повідомлення .
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточне ім’я користувача, інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програму, котра перенаправляє вивід поточного імені комп’ютера з консольної програми у вікно повідомлення за допомогою анонімного пайпу.
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточний час (00:00:00). Результат вивести у вікно повідомлення.
Розробити програму, котра перенаправляє вивід поточного місяця (Січень,…) з консольної програми у вікно повідомлення за допомогою анонімного пайпу
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточні координати курсору. Результат вивести у вікно повідомлення.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточний місяць (Січень,…) інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточний місяць (Січень,..). Результат вивести у вікно повідомлення.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточне ім’я комп’ютера, інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програму, котра перенаправляє вивід поточної директорії розміщення ОС Windows з консольної програми у вікно повідомлення за допомогою анонімного пайпу.
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточне ім’я комп’ютера. Результат вивести у вікно повідомлення.
Розробити програму, котра перенаправляє вивід поточних координат курсору з консольної програми у вікно повідомлення за допомогою анонімного пайпу
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточний час (00:00:00), інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програму, котра перенаправляє вивід поточної директорії розміщення системних файлів ОС Windows з консольної програми у вікно повідомлення за допомогою анонімного пайпу.
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточний місяць (Січень,..). Результат вивести у вікно повідомлення.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточну дату (00.00.00), інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточну дату (00.00.00). Результат вивести у вікно повідомлення.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточну директорію розміщення ОС Windows, інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточний день тижня (Понеділок,…). Результат вивести у вікно повідомлення.
Використовуючи синхронізацію процесів розробити програми, котрі взаємодіють через файл. Одна програма має записувати у файл поточну директорію розміщення системних файлів ОС Windows, інша має зчитати цей запис і вивести його у вікні повідомлення .
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточне ім’я користувача. Результат вивести у вікно повідомлення.
Розробити програму, котра перенаправляє вивід поточної дати (00.00.00) з консольної програми у вікно повідомлення за допомогою анонімного пайпу.
Розробити програми, котрі за допомогою іменованих каналів передають між собою поточну директорію розміщення ОС Windows. Результат вивести у вікно повідомлення.
Розробити програму, котра перенаправляє вивід поточного імені користувача з консольної програми у вікно повідомлення за допомогою анонімного пайпу.