
- •Методичні вказівки
- •Харків 2012
- •Лабораторна робота № 1 Знайомство користувача з графічним середовищем Linux.
- •Методичні вказівки з організації самостійної роботи студентів:
- •Лабораторна робота № 2 Вивчення засобів реалізації багатозадачності та синхронізації взаємодіючих потоків.
- •Методичні вказівки з організації самостійної роботи студентів:
- •Варіанти завдання:
- •Лабораторна робота № 3 Засоби дослідження та роботи з файловими системами
- •Методичні вказівки з організації самостійної роботи студентів:
- •1. Опис функцій синхронного вводу/виводу
- •2. Опис функцій блокування/розблокування частин файлу
- •3. Приклад програми читання інформації з вхідного файлу і додавання її до іншого файлу
- •Int Read_Write ()
- •Варіанти завдання:
- •Лабораторна робота № 4 Створення віконних Windows- додатків. Засоби керування пам’яттю та розподіл пам’яті.
- •Методичні вказівки з організації самостійної роботи студентів:
- •Варіанти завдання:
- •5 Навчально–методичне забезпечення дисципліни
- •5.1 Основна література
- •5.2 Додаткова література
Варіанти завдання:
Варіант 1
Написати програму, яка породжує чотири потоки, кожному з яких відводиться четверта частина вікна додатка. Перший потік виводить у свою область числову послідовність, що збільшується 0,1,2,…, другий – послідовність чисел Фібоначчі, третій – заповнює ділянку вікна прямокутниками пересічного розміру та кольору, четвертий – фіксує у трьох змінних і виводить у своїй частині вікна кількість запусків кожного з попередніх потоків.
Варіант 2
Написати програму, яка породжує потік при натисканні будь-якої клавіші клавіатури. Кожному створеному таким чином потоку відповідає окружність у вікні додатку, яка з'являється у пересічному місці і рухається вертикально або горизонтально. При досягненні границі вікна, окружність змінює напрямок руху на протилежний.
Варіант 3
В програмі створити два потоки. Призначення одного з них – періодичне читання системного часу та заповнення глобальної структури (години, хвилини, секунди), другого – вивід даної структури на екран. За допомогою критичного розділу організувати окремий доступ потоків до структури даних.
Варіант 4
Написати програму, що містить два потоки, кожний з яких керує рухом однієї з двох куль. Перша куля рухається горизонтально, друга – вертикально. Швидкість куль різна. При досягненні границі вікна додатку куля змінює напрямок руху на протилежний. За допомогою об'єктів синхронізації (семафорів або подій) реалізувати алгоритм руху куль без зіткнень.
Варіант 5
Написати програму, яка запускає новий потік при натисканні лівої клавіші миші. Потік починає виводити числову послідовність, що збільшується, у поточну позицію курсору миші. При натисканні лівої клавіші програма видаляє потік. Координати якого ближче до положення миші.
Варіант 6
Створити багато поточну програму, що формує потоки трьох типів. Кожний з потоків запускається відповідним пунктом меню і використовує відповідно 1,2,3 ресурси (максимальне число ресурсів – 8 и може змінюватися користувачем у вікні діалогу, яке викликається за допомогою меню). Кількість, вид потоків, а, також. їх стан виводиться на екран. Якщо число ресурсів не дозволяє працювати потоку, він перебуває у стані очікування. Видалення потоків здійснюється через меню у порядку запуску (першим видаляється потік, який був першим запущений).
Варіант 7
Написати програму, яка дозволяє запускати процеси, використовуючи для цього обрані на диску файли. Користувач може вказати ім'я необхідного файлу у командному рядку. Програма стежить за всіма запущеними нею процесами ті виводить за вимогою користувача наступну інформацію: ім'я процесу, значення покажчика та ідентифікатора процесу, час виконання процесу.
Варіант 8
Написати програму, яка читає з диску *.bmp файл і виводить його у вікно додатку.За допомогою потоку організувати обертання зображення на 900. Операцію можна перервати за допомогою діалогового вікна, яке виникає під час виконання операції.
Варіант 9
Написати програму. Яка при натисканні на клавішу миші створить потік: при натисканні правої клавіші миші – потік, що виводить зростаючий рядок у позицію курсору, лівої – потік з рядком, що зменшується. Потік вивантажується з пам'яті при закінченні рахування. Число потоків обмежується користувачем через контекстне меню.
Контрольні запитання
1. Поясніть принцип багатозадачності сучасних операційних систем. Чим відрізняється багатозадачність від багатопоточності.
2. Яким чином апаратно вирішуються задачі забезпечення багатозадачності? У чому полягає особливість невитісняючої багатозадачності?
3. Наведіть приклади використання багатопоточності у поширених додатках.
4. Яким чином здійснюється синхронізація потоків?
5. Що таке "критичний розділ"?
6. Що таке "подія"?
7. Поясніть призначення локальної та глобальної пам'яті потоків.