МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Лекция 3. Критерий сходимости последовательности. ПодпоследовательностиВисновки Особливості програмного інтерфейсу потоків Створення потоків
Основним засобом створення потоків у Windows ХР є функція CreateThread() Win32 АРІ. Назвемо етапи виконання цієї функції. 1. В адресному просторі процесу створюють стек режиму користувача для потоку. 2. Ініціалізують апаратний контекст потоку (у процесор завантажують дані, що визначають його стан). Цей крок залежить від архітектури процесора. 3. Створюють об'єкт-потік виконавчої системи у призупиненому стані, для чого а) створюють та ініціалізують структури даних потоку (блоки ETHREAD, б) задають стартову адресу потоку (використовуючи передану як параметр в) задають інформацію для підсистеми безпеки та ідентифікатор потоку; г) виділяють місце під стек потоку ядра. 4. Підсистемі Win32 повідомляють про створення нового потоку. 5. Дескриптор та ідентифікатор потоку повертають у процес, що ініціював створення потоку (викликав CreateThreadO). 6. Починають виконання потоку (виконують перехід за стартовою адресою).
Програмний інтерфейс керування потоками у Windows ХР є частиною Win32 АРІ. Такий інтерфейс ще називають інтерфейсом потоків Win32. Розглянемо особливості його використання. Створення потоків у Win32 АРІ У Win32 АРІ, як зазначалося раніше, для створення потоку призначена функція CreateThread(), а для його завершення - EndThread(). На практиці, однак, пару CreateThread( )/EndThread() є сенс використати лише тоді, коли з коду, що виконує потік, не викликаються функції стандартної бібліотеки мови С (такі, як printf О або strcmpO). Річ у тому, що функції стандартної бібліотеки С у Win32 АРІ не пристосовані до використання за умов багатопотоковості, і для того щоб підготувати потік до роботи за таких умов, необхідно під час його створення і завершення виконувати деякі додаткові дії. Ці дії враховані у спеціальних бібліотечних функціях роботи з потоками, описаних у заголовному файлі process. h. Це функція _begi nthreadex() для створення потоку й _endthreadex() — для завершення потоку. Після створення потоку може виникнути потреба змінити його характеристики. Якщо це необхідно зробити у функції потоку, варто знати, як отримати доступ до його дескриптора.
♦ Процеси і потоки є активними ресурсами обчислювальних систем, які реалізують виконання програмного коду. Потоком називають набір послідовно виконуваних команд процесора. Процес є сукупністю одного або декількох потоків і захищеного адресного простору, в якому вони виконуються. Потоки одного процесу можуть разом використовувати спільні дані, для потоків різних процесів без використання спеціальних засобів це неможливо. У традиційних системах кожний процес міг виконувати тільки один потік, виконання програмного коду пов'язували із процесами. Сучасні ОС підтримують концепцію багатопотоковості. ♦ Використання потоків у застосуванні означає внесення в нього паралелізму -можливості одночасного виконання дій різними фрагментами коду. Паралелізм у програмах відображає асинхронний характер навколишнього світу, його джерелами є виконання коду на декількох процесорах, операції введення-виведення, взаємодія з користувачем, запити застосувань-клієнтів. Багато-потоковість у застосуваннях дає змогу природно реалізувати цей паралелізм і домогтися високої ефективності. З іншого боку, використання багатопотоковості досить складне і вимагає високої кваліфікації розробника. ♦ Розрізняють потоки користувача, які виконуються в режимі користувача в адресному просторі процесу, і потоки ядра, з якими працює ядро ОС. Взаємовідношення між ними визначають схему реалізації моделі потоків. На практиці найчастіше використовують схему 1:1, коли кожному потоку користувача відповідає один потік ядра, і саме ядро відповідає за керування потоками користувача. ♦ Потік може перебувати в різних станах (виконання, очікування, готовності тощо). Принципи переходу з одного стану в інший залежать від принципів планування потоків і планування процесорного часу. Перехід процесу зі стану виконання у будь-який інший стан зводиться до перемикання контексту — передачі керування від одного потоку до іншого зі збереженням стану процесора. ♦ Кожному процесу і потоку в системі відповідає його керуючий блок - структура даних, що містить усю необхідну інформацію. Під час створення процесу (зазвичай за допомогою системного виклику fork ( ) створюють його керуючий блок, виділяють пам'ять і запускають основний потік. Створення потоку простіше і виконується швидше, оскільки не потрібно виділяти пам'ять під новий адресний простір.
Читайте також:
|
||||||||
|