Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 368; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.