Содержание
- 2. В Windows под процессом понимается объект ядра, которому принадлежат системные ресурсы, используемые исполняемым приложением. Поэтому можно
- 3. Каждый процесс в операционной системе Windows владеет следующими ресурсами: виртуальным адресным пространством; рабочим множеством страниц в
- 4. Новый процесс в Windows создается вызовом функции CreateProcess, которая имеет следующий прототип: BOOL CreateProcess( LPCTSTR lpApplicationName,
- 12. При использовании параметра lpCommandLine система для запуска нового процесса осуществляет поиск требуемого ехе-файла в следующей последовательности
- 13. #include #include int main() { STARTUPINFO si; PROCESS_INFORMATION pi; // заполняем значения структуры STARTUPINFO по умолчанию
- 14. // запускаем процесс Notepad if (!CreateProcess( NULL, // имя не задаем "Notepad.exe", // имя программы NULL,
- 15. { cout « "The new process is not created." « endl « "Check a name of
- 16. Процесс может завершить свою работу вызовом функции ExitProcess, которая имеет следующий прототип: VOID ExitProcess( UINT uExitCode
- 17. Наследование дескрипторов Свойство наследования объекта означает, что если наследуемый объект создан или открыт в некотором процессе,
- 18. Не могут наследоваться следующие дескрипторы: дескриптор виртуальной памяти, который возвращает любая из функций LocalAlloc, GlobalAlloc, HeapCreate
- 19. #include #include int main(int argc, char *argv[]) { HANDLE hThread; char с; // преобразуем символьное представление
- 20. if (c == ‘t’) { _cputs("t\n") ; break; } // завершаем поток TerminateThread(hThread, 0); // закрываем
- 21. #include #include volatile int count; void thread() { for (;;) { count++; Sleep(500); _cprintf("count = %d\n"/
- 22. _cputs("Press any key to start the count-thread.\n"); _getch(); // устанавливаем атрибуты защиты потока sa.nLength = sizeof(SECURITY_ATTRIBUTES);
- 23. // формируем командную строку wsprintf(IpszComLine, "С:\\ConsoleProcess.exe %d", (int)hThread); // запускаем новый консольный процесс if (!CreateProcess( NULL,
- 24. { _cputs("The new process is not created.\n"); _cputs("Press any key to finish.\n"); _getch(); return GetLastError(); }
- 25. Функция для изменения свойств дескрипторов имеет прототип BOOL SetHandlelnformation( HANDLE hObject, // дескриптор объекта DWORD dwMask,
- 26. Псевдодескрипторы процессов Псевдодескриптор текущего процесса отличается от настоящего дескриптора процесса тем, что он может использоваться только
- 27. Обслуживание потоков Приоритеты потоков в Windows определяются относительно приоритета процесса, в контексте которого они исполняются, и
- 28. Idle_prioriтy_class — класс фоновых процессов; below_normal_prioriтy_class — класс процессов ниже нормальных; normal_prioriтy_class — класс нормальных процессов;
- 29. Фоновые процессы выполняют свою работу, когда нет активных пользовательских процессов. Обычно эти процессы следят за состоянием
- 30. Приоритет процесса можно изменить при помощи функции setPriorityClass, которая имеет следующий прототип: BOOL SetPriorityClass( HANDLE hProcess,
- 32. Скачать презентацию