|
|
(не показана одна проміжна версія 6 учасників) |
Рядок 1: |
Рядок 1: |
− | <h1>Процеси</h1>
| + | *[[Нитки | Нитки]] |
− | | + | *[[Потоки та нитки в Microsoft Windows]] |
− | :'''Процесом''' (задачею) зазвичай називають екземпляр програми що виконується.
| + | *[[Потоки | Потоки]] |
− | | + | |
− | Хоча на перший погляд здається що програма і процес поняття практично однакові, вони фундаментально відрізняються одне від одного. Програма є статичним набором команд, а процес це набір ресурсів і даних, що використовуються при виконанні програми.
| + | |
− | | + | |
− | Будь-який процес може знаходитися у трьох станах:
| + | |
− | | + | |
− | :*виконання
| + | |
− | :*очікування
| + | |
− | :*готовності
| + | |
− | | + | |
− | :Під виконанням процесу розуміють активний стан процесу під час якого він споживає процесорний час, а також користується іншими ресурсами системи.
| + | |
− | | + | |
− | :'''Очікування''' – пасивний стан процесу при якому процес очікує вивільнення потрібного йому ресурсу або свого кванту часу у процесорі.
| + | |
− | | + | |
− | Процес у Windows характеризується наступними компонентами:
| + | |
− | | + | |
− | :- Структура даних, що містить всю інформацію про процес, зокрема список відкритих дескрипторів різних системних ресурсів, унікальний ідентифікатор процесу, різну статистичну інформацію і т.д.;
| + | |
− | :- Адресний простір - діапазон адрес віртуальної пам'яті, яким може користуватися процес;
| + | |
− | :- Виконувана програма і дані, проектовані на віртуальний адресний простір процесу.
| + | |
− | | + | |
− | <h1>Потоки (нитки)</h1>
| + | |
− | | + | |
− | Процеси інертні. Відповідають же за виконання коду, що міститься в адресному просторі процесу, потоки. Потік (thread) –мінізадача,яка запускається всередині процесу і використовує псевдопаралельну роботу мікропроцесора.У кожному процесі є мінімум один потік. Цей первинний потік створюється системою автоматично при створенні процесу. Далі цей потік може породити інші потоки, ті в свою чергу нові і т.д. Таким чином, один процес може володіти декількома потоками, і тоді вони одночасно виконують код в адресному просторі процесу.
| + | |
− | | + | |
− | Для потоку дозволені наступні стани:
| + | |
− | | + | |
− | :*створення (new);
| + | |
− | :*виконання (running);
| + | |
− | :*очікування (waiting);
| + | |
− | :*готовність (ready);
| + | |
− | :*завершення (terminated).
| + | |
− | | + | |
− | Кожен потік має:
| + | |
− | | + | |
− | :*унікальний ідентифікатор потоку;
| + | |
− | :*вміст набору регістрів процесора, що відображають стан процесора;
| + | |
− | :*два стеки, один з яких використовується потоком при виконанні в режимі ядра, а інший - в користувацькому режимі;
| + | |
− | :*закриту область пам'яті, звану локальною пам'яттю потоку (thread local storage, TLS) що використовується підсистемами, run-time бібліотеками і DLL.
| + | |
− | | + | |
− | Потоки мають усі властивості процесів за одним винятком: виконання потоків може бути припинене при закритті процесу, незалежно від того в якому стані вони знаходились. | + | |