МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ ПІСЛЯДИПЛОМНОЇ ОСВІТИ
КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
/
ЗВІТ ДО ЛАБОРАТОРНОЇ РОБОТИ №1 на тему:
"Ознайомлення з процесами в ОС Windows"
Мета роботи: Ознайомитися з процесами та потоками в ОС Windows. Навчитися працювати із системними утилітами, що дають можливість отримувати інформацію про процеси, потоки, використовувану ними пам'ять, та іншу необхідну інформацію.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Процес є динамічним об'єктом, що описує виконання програми . Процесу виділяються системні ресурси: закритий адресний простір, семафори, комунікаційні порти, файли і т.д. Процес характеризується поточним станом (виконання , очікування , готовність і т.д.).
Завдання ОС полягає в тому, щоб організувати їх підтримку, яка має на увазі, що кожен процес отримає всі необхідні йому ресурси .
Незалежні процеси не повинні впливати один на одного, а процеси, яким необхідно обмінюватися інформацією, повинні мати можливість зробити це шляхом взаємодії між процесами.
У Windows процес - це об'єкт, створюваний і знищуваний менеджером об'єктів. Процес містить потоки, облікову інформацію та посилання на ресурси, які втілюється всіма потоками процесу.
Процес в Windows складається з наступних компонентів:
Структура даних, що містить всю інформацію про процес , у тому числі список відкритих дескрипторів різних системних ресурсів , унікальний ідентифікатор процесу , різну статистичну інформацію і т.д.;
Адресний простір - діапазон адрес віртуальної пам'яті , яким може користуватися процес ;
Виконується програма і дані , що проектуються на віртуальний адресний простір процесу .
Потік - якась сутність всередині процесу, яка отримує процесорний час для виконання. Без потоку програма процесу не може виконуватися. Потік включає наступні найбільш важливі елементи :
Вміст набору регістрів процесора , що відображають стан процесора;
Два стека, один з яких використовується потоком при виконанні в режимі ядра, а інший в режимі користувача;
Закриту область пам'яті, так звану локальну пам'ятю потоку і використану підсистемами, бібліотеками виконуючих систем і DLL;
Унікальний ідентифікатор потоку ;
Іноді потоки володіють своїм контекстом захисту, який зазвичай використовується багатопотоковими серверними додатками, підмінюють контекст захисту обслуговуваних клієнтів .
Вибір поточного потоку з декількох активних потоків, що намагаються отримати доступ до процесора називається плануванням .
Обраний для виконання потік працює протягом якогось періоду, так званого кванта, після закінчення якого потік витісняється. Передбачається, що потік не знає, в який момент він буде витіснений. Потік також може бути витіснений навіть, якщо його квант ще не закінчився.
Процедура планування зазвичай пов'язана з досить витратною процедурою диспетчеризації - перемиканням процесора на новий потік, тому планувальник повинен піклуватися про ефективне використання процесора. Належність потоків до процесу при плануванні не враховується, тобто одиницею планування в ОС Windows є саме потік .
В ОС Windows запуск процедури планування викликається одним з таких подій. Події, пов'язані із звільненням процесора:
Завершення потоку
Перехід потоку в стан готовності в зв'язку з тим, що його квант часу минув
Перехід потоку в стан очікування .
Події, в результаті яких поповнюється або може поповнитися чергу потоків в стані готовності.
Потік вийшов зі стану очікування
Потік щойно створений
Діяльність поточного потоку може мати наслідком висновок іншого потоку зі стану очікування створення процесів.
Створення Win32 процесу здійснюється викликом однієї з таких функцій, як CreateProcess , CreateProcessAsUser і CreateProcessWithLogonW і відбувається в кілька етапів:
Відкривається файл образу (EXE), який буде виконуватися в процесі. Якщо виконуваний файл не є Win32 додатком, то шукається образ підтримки для запуску цієї програми. Наприклад, якщо виконується файл з розширенням .bat, запускається cmd.exe і т.п.
Створюється об'єкт Win32 «процес ».
Створюється первинна нитка (стек, контекст і об'єкт « нитка »).
Підсистема Win32 повідомляється про створення нового процесу і нитки.
Починається виконання первинної нитки.
У контексті нового процесу і потоку ініціалізується адресний простір і починається виконання програми .
Завершення процесів
Процес завершується якщо :
Вхідна функція первинної нитки повернула управління .
Одна з ниток процесу викликала функцію Exit Process .
Нитка іншого процесу викликала функцію Terminate Process .
Коли процес завершується, всі юзери GDI_об'єкти, створені процесом, знищуються, об'єкти ядра закриваються (якщо їх не використовує інший процес), адресний простір процесу знищується.
Умова завдання:
За допомогою «Диспетчера задач» отримати повну інформацію про процеси: ідентифікатор процесу, завантаження ЦП (центрального процесора), час ЦП, пам'ять-використання, пам'ять-зміни, пам'ять-максимум, помилок сторінки, об’єкти USER, код сеансу, об’єм віртуальної пам’яті, лічильник дескрипторів, лічильник потоків.
За допомогою утиліти Process Explorer отримати повну інформацію про процеси: ідентифікатор процесу, завантаження ЦП (центрального процесора), час ЦП, пам'ять-використання, пам'ять-зміни, пам'ять-максимум, помилок сторінки, об’єкти USER, код сеансу, об’єм віртуальної пам’яті, лічильник дескрипторів, лічильник потоків.
Використовуючи «Диспетчер задач» та Process Explorer змінити пріоритет будь-якого потоку, від низького до «реального часу». Виконати завершення процесу, використовуючи попередні утиліти.
Використовуючи «Диспетчер задач» та Process Explorer задати відповідність виконання процесів на окремих ядрах центрального процесора.
Результати лабораторної роботи оформити у звіт.
Виконання роботи:
Для того, щоб отримати інформацію про процеси за допомогою комбінації клавіш Ctrl+Alt+Del запустимо Диспетчер завдань Windows, та перейдемо у вкладку "Процеси", відповідно у кожному окремому стовбці ми можемо побачити потрібну нам інформацію.
/
Ідентифікатор процесу ( PID ) - число , унікально ідентифікує що виконується процес .
Код сеансу - число, що ідентифікує власника процесу. Якщо кілька користувачів здійснили вхід в систему , кожному користувачеві привласнюється свій унікальний код сеансу.
Завантаження ЦП - відсоток часу, протягом якого процесом використовувався центральний процесор ( ЦПУ) з часу останнього оновлення (відображається як ЦПУ в заголовку стовпця).
Час ЦП - загальний час процесора в секундах , виділене процесу з початку його роботи.
Об'єм пам'яті в приватному робочому наборі плюс обсяг пам'яті, використану процесом, яку не можна використовувати спільно з іншими процесами .
Пам'ять-пік робочого набору - максимальний об'єм пам'яті робочого набору, використовуваної процесом.
Пам'ять-дельта робочого набору - зміна обсягу пам'яті робочого набору, використаної процесом .
Пам'ять - виділена пам'ять - обсяг віртуальної пам'яті, виділеної процесу .
Помилки сторінок - кількість спроб читання даних процесу з диска в разі , якщо його не вдалося виявити в пам'яті. Кількість помилок сторінки накопичується з моменту запуску процесу .
Дельта помилок сторінок - зміна кількості помилок сторінки з часу останнього оновлення.
Дескриптори - кількість дескрипторів об'єктів в таблиці об'єктів процесу .
Лічильник потоків - кількість виконуваних гілок процесу .
Об'єкти USER - кількість об'єктів, що використовуються процесом в даний момент. Об'єкти USER - об'єкти диспетчера вікон , включаючи вікна , меню , курсори , значки , обробники , прискорювачі , монітори , розкладки клавіатури , а також інші внутрішні об'єкти.
Для того щоб побачити завантаження ЦП у Диспетчері завдань перейдемо у вкладку "Продуктивність"
Як бачимо з малюнку ліворуч
завантаження центрального процесора становить: 9%
час роботи ЦП становить: 0:11:03:24
Для відображення інформації про потрібні нам процеси у меню програми Process Explorer обираємо необхідні стовбці, та активовуємо їх.
Після чого отримуємо повну інформацію про виконувані процеси.
/
Використовуючи «Диспетчер задач» змінимо пріоритет, процесу сhrome.exe *32 на "низький"
Виконавши попередні дії ще раз змінимо пріоритет процесу по черзі від "Низького" до "Реального часу"
Використовуючи «Диспетчер задач» завершимо процес сhrome.exe *32
Повторимо усі виконані дії за допомогою утиліти Process Explorer
//
Використовуючи утиліту Process Explorer завершимо процес сhrome.exe *32
Використовуючи «Диспетчер задач» та Process Explorer задамо відповідність виконання процесу сhrome.exe *32 на окремих ядрах центрального процесора.
/
/
Висновки: В результаті цієї лабораторної роботи ми ознайомились з процесами та потоками, що працюють у ОС Windows. Навчились працювати з системними утилітами та отримувати інформацію про процеси та потоки. Результат виконання роботи було зафіксовано, та додано у звіт.