КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Запуск. Создание процесса
ЛЕКЦИЯ №9 Способы взаимодействия между процессами. 1. Общая память(самый быстрый способ взаимодействия) Этот способ требует строгой синхронизации данных. Типы данных должны совпадать по структуре, должна совпадать последовательность полей структур данных и выравнивание (размер, с границы которого имеет право начинаться новое поле структуры) должно совпадать. 2. Сигналы. Один процесс передает сигналы другому (информация, которая передается процессу – это номер сигнала). Сигнал очень похож на прерывание: у него есть номер и он обязателен к выполнению. 3. Сообщение. Структура данных, которая может передаваться от одного процесса другому. В зависимости от операционной системы и типа сообщения могут быть строго стандартизированы. В сообщении нельзя, как правило, передавать указатель, потому что у процессов разные виртуальные пространства и адресный указатель одного пространства неравен адресному указателю другого процесса. 4. Каналы (pipe) Это специального вида файл, открываемый между двумя процессами. Это файл одностороннего доступа с последовательным доступом, как правило ограничен в объеме. 5. Сокеты. Способ сетевого взаимодействия.
Управление процессами в среде Window’s. В Window’s многопоточная многозадачность. Имеется 32 приоритета, которые поделены на 6 классов: 1. IDLE 2. BELOW_NORMAL 3. NORMAL 4. ABOVE_NORMAL 5. HIGH 6. REALTIME BOOL CreateProcess( LPCTSTR AppName, LPTSTR CmdLine, LPSECURITY ATTRIBUTES ProcAttr, LPSECURITY ATTRIBUTES ThreadAttr, BOOL InheritHaudles, DWORD CreationFlag, LPVOID Environmint, LPCTSTR Directory, LPSTARTUPINFO info, LPPROCESS_INFORMATION procInfo); Результат – запущен/не запущен процесс. Параметры: 1) имя программы, которую запускаем. Если имя состоит из слов, разделенных пробелом, то необходимо его заключить в «». Пнрывй параметр может быть пустым указателем. 2) строка, но не константная. Нужно завести строку, занести туда командную строку и передать как параметр. Если первый параметр NULL, то первое имя файла в командной строке рассматривается как имя запускаемого файла и, если у этого имени нет пути, то сперва операционная система будет искать его в текущем каталоге, а потом, если не найдет, во всех каталогах переменной окружения path. 3) 4)LPSECURITY ATTRIBUTES - структура данных, которая описывает атрибуты безопасности любого объекта. по умолчанию может быть NULL. 5) признак – будет ли запускаемый процесс наследовать ресурсы процесса родителя. 6) флаги создания: указывается класс приоритета. Если флаг не указан и у
родительского класса стоит приоритет IDLE, BELOW_NORMAL, то дочерний класс наследует, если NORMAL и выше – не наследует. 7) необязательный (NULL) указатель на область памяти, содержащей переменные среды окружения. Если NULL, то операционная система делает для нашего процесса копию своих переменных окружения, иначе область памяти должна быть представлена в виде: <пер1>=<знач1>\0<пер2>=<знач2> \0…\0\0 – в этом случае операционная система больше не добавляет в список переменных. 8) Каталог, который будет текущим при запуске приложения. Можно указать NULL, тогда текущим будет каталог, который записан в системной переменной %SYSTEM_ROOT%. 9) LPTSATRUPINFO – огромная структура, которая описывает параметры запуска программ, постоянно увеличивается. 10) выходной параметр. Надо передать указатель на переменную типа Process_Information. В структуре Process_Information 4 поля, два из них это: 1) HANDLE hProcess – дескриптор процесса 2) HANDLE hThread - дескриптор главного потока.
VOID ExitProcess(UINT ExitCode) – выход из программы. Функций осуществляет так называемое «магическое» завершение. Все заинтересованные стороны(системные библиотеки,…) получают уведомление о завершении процесса. ExitCode – число – код возврата.
BOOL TerminateProces (HANDLE h, UINT ExitCode) Прерывает любой процесс. Сперва пытается осуществить «мягкий» выход, при неудаче просто выкидывает его - «жесткий» выход. Возвращаемое значение: завершен процесс или нет, так как на завершение процесса может не быть прав.
HANDLE GetCurrentProcess() – возвращает собственный дескриптор.
LPTSTR GetCommandLine() – получить собственную командную строку.
BOOL GetProcessAffinityMask( HANDLE h, LPDWORD ProcessMask, LPDWORD SystemMask) Побитовая маска, которая указывает, на каких процессорах может работать процесс.
Дата добавления: 2014-01-07; Просмотров: 396; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |