Процеси та потоки

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2019
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Системне програмне забезпечення

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра ЕОМ  Звіт до лабораторної роботи № 1 з дисципліни: «Системне програмне забезпечення» «Процеси та потоки» Мета: Засвоїти поняття «процесів» та «потоків» як основних компонентів сучасних операційних систем. Здобути навики створення, керування та знищення «процесів» та «потоків» в операційній системі Windows. Завдання: Розробити програму в середовищі Visual Studio, що демонструє використання системних викликів, відзначених символом “+”, відповідно до варіанту в таблиці 1. / Таблиця 1. Номера варіанту. Код завдання: int main() { HANDLE hWindow = 0; DWORD dword; HWND hWnd_W; DWORD ProcId; DWORD clas; PROCESS_INFORMATION pi; FILE *myfilehandle; int priority; HANDLE hThread; int choose = 4; while (choose != 12) { switch (choose = MenuSwitch()) { case 1: WinExec("notepad.exe", SW_RESTORE); //ShellExecute(NULL, L"open", L"calc.exe", NULL, NULL, SW_RESTORE); break; case 2: STARTUPINFO cif; ZeroMemory(&cif, sizeof(STARTUPINFO)); if (CreateProcess(L"C:\\windows\\notepad.exe", NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &cif, &pi) == TRUE) { cout << "Thread ID: " << pi.hThread << endl; cout << "Process ID: " << pi.hProcess << endl; Sleep(1000); } break; case 3: hWnd_W = FindWindow(NULL, L"Блокнот"); dword = GetWindowThreadProcessId(hWnd_W, &pi.dwProcessId); hWindow = OpenProcess(PROCESS_ALL_ACCESS, false, pi.dwProcessId); cout << "Finden process handle: " << hWindow << endl; break; case 4: CloseHandle(hWindow); break; case 5: cout << "Process Id: " << GetCurrentProcessId() << endl; break; case 6: cout << "Exit Code Process: " << GetExitCodeProcess(hWindow, 0) << endl; break; case 7: clas = GetPriorityClass(hWindow); switch (clas) { case ABOVE_NORMAL_PRIORITY_CLASS: cout << "Class: ABOVE_NORMAL_PRIORITY_CLASS"; break; case BELOW_NORMAL_PRIORITY_CLASS: cout << "Class: BELOW_NORMAL_PRIORITY_CLASS"; break; case HIGH_PRIORITY_CLASS: cout << "Class: HIGH_PRIORITY_CLASS"; break; case IDLE_PRIORITY_CLASS: cout << "Class: IDLE_PRIORITY_CLASS"; break; case NORMAL_PRIORITY_CLASS: cout << "Class: IDLE_PRIORITY_CLASS"; break; case REALTIME_PRIORITY_CLASS: cout << "Class: IDLE_PRIORITY_CLASS"; break; } break; case 8: unsigned threadID; myfilehandle = fopen("Rez.txt", "w"); hThread = (HANDLE)_beginthreadex(NULL, 0, &PrintIntoFile, myfilehandle, 0, &threadID); for (int i = 0; i < 10; i++) { cout << "Potik 1...\n"; Sleep(150); } WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); printf("Potik zaversheno..\n"); fclose(myfilehandle); break; case 9: cout << "Exit COde Thread: " << GetExitCodeThread(hThread,0) << endl; break; case 10: cout << "Using Suspend Thread..." << endl; SuspendThread(hThread); break; case 11: SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST); break; case 12: cout << "Using Resume Thread..." << endl; ResumeThread(hThread); break; case 13: system("CLS"); break; } } return 0; } unsigned __stdcall PrintIntoFile(void* pArguments) { FILE* Ptr = (FILE*)pArguments; DWORD DoubleWord = GetCurrentProcessId(); char proc[100] = "Process ID: "; for (int i = 0; i < 100; i++) { if (proc[i] == NULL) break; fprintf(Ptr, "%c", proc[i]); } char procID[10]; sprintf(procID, "%d", DoubleWord); for (int i = 0; i < 10; i++) { if (procID[i] == NULL) break; fprintf(Ptr, "%c", procID[i]); } fprintf(Ptr, "%c", '\n'); DoubleWord = GetCurrentThreadId(); strcpy(proc, "Thread ID: "); for (int i = 0; i < 100; i++) { if (proc[i] == NULL) break; Sleep(250); printf("Potik 2...\n"); fprintf(Ptr, "%c", proc[i]); } char thrId[10]; sprintf(thrId, "%d", DoubleWord); for (int i = 0; i < 10; i++) { if (thrId[i] == NULL) break; fprintf(Ptr, "%c", thrId[i]); } time_t now = time(0); tm* localtm = localtime(&now); fprintf(Ptr, "%c", '\n'); fprintf(Ptr, "%s", asctime(localtm)); _endthreadex(0); return 0; }  Рис.1.Результат виконання. Висновок: На цій лабораторній роботі я засвоїв поняття «процесів» та «потоків» як основних компонентів сучасних операційних систем. Здобув навики створення, керування та знищення «процесів» та «потоків» в операційній системі Windows.
Антиботан аватар за замовчуванням

02.04.2019 14:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!