
- •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. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
Додаток 10
Створення консольної програми з використанням MASM32
;-----------------------------------
; Console.asm
;-----------------------------------
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
.data
ConsoleTitle db "Hello Win32!",0
MsgBoxText db "Laboratory work for KSN students",0
.code
start:
invoke SetConsoleTitle, ADDR ConsoleTitle
invoke StdOut,ADDR MsgBoxText
;invoke Sleep, 1000 ; Може використовуватись для
;затримки появи консольного вікна
invoke ExitProcess,NULL
end start
Для трансляції і компонування програми console.asm потрібно використати наступні параметри:
ml.exe /c /coff /Cp console.asm
Link.exe /SUBSYSTEM:CONSOLE /LIBPATH:d:\masm32\lib console.obj
Лабораторна робота №3
Тема: Створення динамічних бібліотек DLL.
Мета: Навчитись створювати динамічні бібліотеки DLL в середовищі ОС
Windows.
1. Основні теоретичні відомості
У процесі розробки програми іноді виникає потреба у використанні функції із іншої програми. Цю функцію можна просто скопіювати, що затруднить читання програми і відповідно збільшить розміри виконуваного файла. Можна також створити окремі об’єктні модулі (*.obj) з потрібних функцій і включити їх у бібліотеку (*.lib), і згодом викликати ці модулі із своєї програми. Такий процес називається статичним компонуванням (лінкуванням - Static Linking). У цьому випадку при компонуванні (лінкуванні) програми з бібліотекою компоновщик (лінкувальник) вибирає ті функції, які необхідні нашій програмі і вставляє їх у виконуваний файл. Такий процес не зменшує розмір виконуваного файлу, але дозволяє зробити код програми меншим, нагляднішим і легшим для сприйняття і читання. Даний спосіб використовувався для комп’ютерів з операційною системою MS-DOS. Недоліком цього способу є те, що можна створити велику кількість виконуваних файлів, які будуть мати ідентичні функції. Та для ОС MS-DOS це не було дуже важливою проблемою, оскільки в пам’яті могла бути тільки одна активна програма.
Інша ситуація в ОС Windows, де в пам’ять завантажується велика кількість виконуваних програм, а якщо ці програми мають функції що повторюються, то такий спосіб буде загромаджувати пам’ять. Цю проблему розв’язують динамічні бібліотеки (DLL – Dynamic Link Libraries). Динамічна бібліотека являє собою велику кількість функцій які зібрані у один файл. При запуску програми, котра використовує бібліотеку DLL, Windows автоматично завантажує її у пам’ять. Якщо запустити іншу програму, що використовує цю ж саму DLL, то Windows вже не буде завантажувати другої копії DLL у пам’ять. В пам’яті буде лише одна копія DLL яку запущені процеси розділяють між собою. Копіюється тільки секція даних для кожного процесу. В даному випадку програма компонується (лінкується) з DLL під час виконання. Такий спосіб називається динамічним компонуванням (лінкуванням - Dynamic Linking).
Динамічна бібліотека може мати різні розширення, наприклад .EXE, .FON. Стандартним розширенням є .DLL. ОС Windows автоматично завантажує тільки такі бібліотеки. Бібліотеки з іншим розширенням потрібно завантажити з програми, використовуючи функції LoadLibrary або LoadLibraryEx.