Міністерство Освіти І НАУКИ України
Національний університет "Львівська політехніка"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 2
На тему: “ Робота із процесами в ОС Windows ”
З дисципліни : " Операційн системи"
Виконав:
ст. гр. ПІ -2
Львів – 2008
Мета роботи: Ознайомитися із реалізацією багатозадачності у сіместві операційних систем MicroSoft на прикладі Windows NT5 (ядро 5.X). Освоїти роботу із процесами і методами створення їх.
Теоретичні відомості
Процес зазвичай визначають як екземпляр виконуваної програми. Але це неправельне визначення. Оскільки програма це є набір процесорних команд, тоді як процесом називається саме виконання цього програмного коду. Екземпляр виконуваної програми складається із двох компонентів:
об'єкту ядра, через який операційна система керує процесом. Там же зберігається статистична інформація про процес;
адресний простір, в якому міститься код і дані усіх EXE і DLL модулів. Саме в ньому знаходяться область пам'яті, що динамічно розподіляється для стеків потоків та інших потреб.
Процеси інертні. Щоб процес виконав певну операцію, в ньому потрібно створити потік. Саме потоки відповідаю за виконання коди, що міститься в адресному просторі процесу. В принципі, один процес може володіти декількома потоками, і тоді вони "одночасно" виконують код в адресному просторі процесу.
Для цього кожен потік повинен мати в своєму розпорядженні власний набір регістрів процесора і власний стек. У кожному процесі є мінімум один потік. Якби у процесу не було жодного потоку, система автоматично знищила б його разом з виділеним йому адресним простором.
Щоб усі ці потоки працювали, операційна система відводить кожному з них певний процесорний час. Виділяючи потокам відрізки часу (звані квантами) за принципом каруселі, вона створює тим самим ілюзію одночасного виконання потоків. Рис 2.1. ілюструє розподіл процесорного часу між потоками на машині з одним процесором. Якщо в машині встановлено більш за один процесор, алгоритм роботи операційної системи значно ускладнюється (в цьому випадку система прагне збалансувати навантаження між процесорами).
Рис.2.1. Операційна система виділяє потокам кванти часу за принципом каруселі
При створенні процесу перший (точніше, первинний) потік створюється системою автоматично. Далі цей потік може породити інші потоки, ті у свою чергу — нові і так далі.
Індивідуальне завдання
Написати програму створення додаткового потоку для програми calc.exe. показати в результатах виконання деревовидну структуру залежності новоствореного процеса від батьківського процесу.
Код програми
Назва файлу: Lab02.cpp
// Lab02.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "iostream"
bool LaunchExe(LPCTSTR szExe);
int _tmain(int argc, _TCHAR* argv[]) {
LaunchExe(_T("c:\\windows\\system32\\calc.exe"));
return 0;
}
bool LaunchExe(LPCTSTR szExe) {
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if( !CreateProcess(szExe, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) ) {
MessageBox(NULL,_T( "CreateProcess failed." ),_T("Result"),MB_OK);
return FALSE;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return TRUE;
}
Результат виконання
Результатом виконання програми є створення нового процесу для програми:
%windir%\system32\calc.exe
На рис. 2. представлено результати виконання програми. Також деревовидну структуру запуску процесу.
Рис. 2. Результат виконання програми
Висновок
На лабораторній роботі було розглянуто та досліджено: виконання, створення, і породження процесів, ознайомились із підходами програмування на рівні ядра створення процесу і порівняли із стандартним підходом виклику інших програм. Порівняли переваги і недоліки використання двох методів.
Також було виконано індивідуальне завдання, і за допомогою додатково ПЗ досліджено новостворений процес в ОС, його параметри та права, хто його запустив із якими параметрами.