
- •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. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
5. Контрольні запитання
Назвати основні механізми міжпроцесової взаємодії.
Назвати основні механізми синхронізації процесів та потоків.
Які об’єкти використовують для синхронізації процесів та потоків?.
Назвати основні типи очікуючих функцій.
Що таке атом?
Як компонувати та транслювати консольні програми в MASM32?
6.Список використаної літератури
Help по функціях API - www.nan32asm.cjb.net
Microsoft Windows Help - Win32 Programmers Reference
Технічна документація Microsoft - MSDN
Додаток 1
Текст програми синхронізації спільного доступу до файлу.
Дана програма створює семафор та файл і чекає на під’єднання іншої програми.
----------------------------------
; Sem_File.asm
;----------------------------------
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
wsprintfA PROTO C :DWORD, :VARARG
wsprintf equ <wsprintfA>
.data
MsgCaption db "Повiдомлення!",0
ErrorCreateSem db "Помилка створення семафору",0
ErrorCreateFile db "Помилка створення файлу",0
ErrorWriteFile db "Помилка запису у файл",0
Message db "Повiдомлення для файлу",0
Success db "Успiшне завершення програми",0
TimeOut db "Завершився час очiкування",0
ErrorRelease db "Помилка знищення семафору",0
buffer db 256 dup (?)
parameter db "%u"
check DWORD 0
written DWORD 0
sName db "MySemaphore",0
fName db "C:\Temp\MYFILE.TXT",0
.data?
hSemaphore HANDLE ?
hFile HANDLE ?
.code
start:
invoke CreateSemaphore, NULL, 0, 1, addr sName
.if eax==0
invoke MessageBox, NULL,addr ErrorCreateSem,\
addr MsgCaption, MB_OK
jmp exit
.endif
mov hSemaphore, eax
invoke CreateFile, addr fName,\
GENERIC_READ or GENERIC_WRITE,\
FILE_SHARE_READ, NULL, CREATE_ALWAYS,\ FILE_ATTRIBUTE_NORMAL,NULL
.if eax==INVALID_HANDLE_VALUE
invoke GetLastError
invoke wsprintf,addr buffer,addr parameter,eax
invoke MessageBox, NULL,addr ErrorCreateFile, \
addr buffer, MB_OK
invoke ReleaseSemaphore, hSemaphore, 1, NULL
jmp exit
.endif
mov hFile, eax
invoke WriteFile, hFile, addr Message, 23,\
addr written, NULL
.if eax==0
invoke GetLastError
invoke wsprintf,addr buffer,addr parameter,eax
invoke MessageBox, NULL,addr ErrorWriteFile,\
addr buffer, MB_OK
invoke ReleaseSemaphore, hSemaphore, 1, NULL
jmp exit
.endif
invoke CloseHandle, hFile
invoke WaitForSingleObject, hSemaphore, 10000
.if eax==WAIT_OBJECT_0
invoke MessageBox, NULL,addr Success,\
addr MsgCaption, MB_OK
invoke ReleaseSemaphore, hSemaphore, 1, NULL
jmp exit
.endif
.if eax==WAIT_TIMEOUT
invoke MessageBox, NULL, addr TimeOut, \
addr MsgCaption, MB_OK
invoke ReleaseSemaphore, hSemaphore, 1, NULL
.if eax==0
invoke GetLastError
invoke wsprintf,addr buffer,\
addr parameter,eax
invoke MessageBox, NULL, addr ErrorRelease,\
addr buffer, MB_OK
jmp exit
.endif
jmp exit
.endif
exit:
invoke ExitProcess,NULL
e
nd
start
Результат виконання програми:
Дана програма створює семафор та файл, записує у файл інформацію, очікує поки інша програма не прочитає даний файл і не знищить семафор .
У
випадку успішного створення семафору
і файлу, та зчитування з файлу, результат
має виглядати так: