Содержание
- 2. Тема лекції: Засоби міжпроцесного взаємодії Л е к ц і я № 5 по курсу "Системне
- 3. НАВЧАЛЬНІ ПИТАННЯ:
- 4. Вступ
- 6. Рис. 2. Види станів об'єктів синхронізації
- 7. 1.1. Буфер обміну
- 8. Буфер обміну (clipboard) Windows забезпечує простий обмін даними між додатками
- 9. Приклади визначених форматів буфера обміну
- 10. Формат CF_OWNERDISPLAY
- 11. 1.2. Атоми
- 12. Операції з атомами 1. Збереження рядка в локальній таблиці атомів ATOM AddAtom (LPCTSTR lpszStringToStore ) 2.
- 13. Приклади роботи з атомами LPCTSTR szAtom = "Atom"; LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM
- 14. 1.3. Канали передачі даних
- 15. стандарт UNC Канали (pipe) дозволяють Організувати передачу даних між локальними процесами Організувати передачу даних між процесами,
- 16. ФУНКЦІЇ ДЛЯ РОБОТИ З КАНАЛАМИ
- 17. HANDLE CreateNamedPipe (LPCTSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut,
- 18. Приклад 1 Створити іменований канал з ім'ям $MyPipe$ Рішення // Ідентифікатор каналу Pipe HANDLE hNamedPipe; //
- 19. З'єднання з каналом з боку сервера Відключення серверного процесу від клієнтського процесу BOOL DisconnectNamedPipe (HANDLE hNamedPipe)
- 20. З'єднання з каналом з боку клієнта Закриття іменованого каналу CloseHandle (HANDLE hNamedPipe).
- 21. Приклад 2 Фрагмент клієнтського додатка, який відкриває канал з ім'ям $MyPipe$. Канал відкривається як для запису,
- 22. 1.4.Поштові канали передачі даних (MailSlot)
- 24. Функції для роботи з каналами MailSlot \\.\Mailslot\[Шлях] Ім'я_Канала стандарт UNC Стосовно до поштових каналах (всередині мережі)
- 25. Приклад 3 LPSTR lpszMailslotName = "\\\\.\\mailslot\\$MailslotName$"; hMailslot = CreateMailslot (lpszMailslotName, 0, MAILSLOT_WAIT_FOREVER, NULL); Створення каналу Mailslot
- 26. 1.5.Передача повідомлень між процесами
- 27. Передача даних не вимагає синхронізації Метод заснований на передачі повідомлення WM_COPYDATA за допомогою функції SendMessage() wParam
- 28. 1.6.Колективна пам'ять
- 29. Колективна пам'ять є собою сегмент фізичної пам'яті, відображеної в віртуальному адресному просторі двох або більше процесів.
- 30. 2. Синхронізація потоків в режимі ядра. 2.1. Блокуючі змінні
- 31. Атомарний доступ (Atomic access) - монопольний захоплення ресурсу потоком, що до нього звертається Приклад № 1
- 32. Сімейство Interlocked-функцій LONG InterlockedExchange (LPLONG lpTarget, LONG lNewVal); LONG InterlockedExchangeAdd (PLONG pAddend, LONG lIncrement); LONG InterlockedIncrement
- 33. Сімейство Interlocked-функцій Приклад № 2 // визначаємо глобальну змінну long g_x = 0; DWORD WINAPI ThreadFunc1
- 34. Сімейство Interlocked-функцій Приклад № 3 Використання Interlocked-функцій при спін-блокуванні (spinlock) // глобальна змінна, яка використовується як
- 35. 2. Синхронізація потоків в режимі ядра. 2.2. Критичні секції
- 36. Критичний розділ - це блок коду, при виконанні якого потік не може бути перерваний. Критичні секції
- 37. 1. Ініціалізація VOID InitializeCriticalSection (LPCRITICAL_SECTION lpCrSect); 2. Вхід в критичну секцію VOID EnterCriticalSection (LPCRITICAL_SECTION lpCrSect) ;
- 38. Приклад № 4. Використ ання крит ичної секції EnterCriticalSection (& cs); hdc = BeginPaint (hWnd, &
- 39. 3. Синхронізація потоків у виконавчій системі 3.1. Таймери очікування
- 40. Таймери очікування (waitable timers) - це об'єкти ядра, які самостійно переходять у вільний стан в певний
- 41. Приклад № 5. Використання таймерів очікування година:хвилина:секунда:мілісекунда
- 42. Приклад № 6. Спрацьовування таймера через 5 сек. // оголошуємо свої локальні змінні HANDLF hTimer; LARGE_INTEGER
- 43. 4. Синхронізація потоків в призначеному для користувача режимі 4.1. Семафори
- 45. Функції для роботи з семафора 1. Створення семафора HANDLE CreateSemaphore (LPSECURITY_ATTRIBUTES lpThreadSecurity, LONG lSemInitialCount, LONG lSemMaxCount,
- 46. DWORD WINAPI ThreadProc (LPDWORD lpData) { TCHAR szBuffer [256]; DWORD dwSemCount = 0; HWND hList =
- 47. 4. Синхронізація потоків в призначеному для користувача режимі 4.2. М'ютекси
- 48. 4.2.М'ЮТЕКСИ І ПОДІЇ М'ютекс (mutex, mutual exclusion — взаємне виключення) призначено для захисту певного об’єкта у
- 49. 1. Створення об'єкта Mutex HANDLE CreateMutex (LPSECURIT_ATTRIBUTES lpSecurityAttribs, BOOL bInitialOwner, LPCTSTR lpszMutexName); 3. відкриття об'єкту Mutex
- 50. 4. Синхронізація потоків в призначеному для користувача режимі 4.3. Події
- 51. Схема використання подій
- 52. Операції з об'єктом - подія 1. Створення об'єкта Event HANDLE CreateEvent (LPSECURIT_ATTRIBUTES lpEventSecurity, BOOL bManualReset, BOOL
- 54. Скачать презентацию