Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Чем различаются процесс и нить (thread)?

Читайте также:
  1. Cаяси процесс
  2. II. Процесс принятия решений.
  3. ISO 12207 - Б. процесс жизненного цикла для развития ПО
  4. IV Основной вид деятельности (процесс производства) 32. Состав и классификация затрат на производство.
  5. Lt;ОТВЕТ>Экономическая теория - это наука о поведении людей в процессе воспроизводства благ в мире ограниченныхресурсов
  6. Process Control Block и контекст процесса
  7. S: Наиболее точно реальный процесс износа основного капитала отражает ### амортизация
  8. VII. Методическое обеспечение учебного процесса
  9. А. При решении процессуальных вопросов;
  10. Абразионные процессы

 

Общее понятие процесса, рассмотренное выше в п. Ошибка! Источник ссылки не найден., для ОС Windows как бы распадается на два понятия: собственно процесса и нити (thread; в некоторых книгах используется термин поток). При этом нить является единицей работы, она участвует в конкуренции за процессорное время, изменяет свое состояние и приоритет, как было описано выше для процесса. Что же касается процесса в Windows, то он может состоять из нескольких нитей, использующих общую память, открытые файлы и другие ресурсы, принадлежащие процессу. В двух словах: процесс – владеет (памятью, файлами), нити – работают, при этом совместно используя ресурсы своего процесса. Правда, нить тоже кое-чем владеет: окнами, очередью сообщений, стеком.

Процесс создается при запуске программы (EXE-файла). Одновременно создается одна нить процесса (должен же кто-то работать!). Создание процесса выполняется с помощью API-функции CreateProcess.

  1. Что делает функция CreateProcess?

Процесс создается при запуске программы (EXE-файла). Одновременно создается одна нить процесса (должен же кто-то работать!). Создание процесса выполняется с помощью API-функции CreateProcess. Основными параметрами при вызове этой функции являются следующие.

· Имя файла запускаемой программы.

· Командная строка, передаваемая процессу при запуске.

· Атрибуты защиты для создаваемых процесса и нити. И процесс, и нить являются объектами ядра Windows и в этом качестве могут быть защищены от несанкционированного доступа (например, от попыток других процессов вмешаться в работу данного процесса).

· Различные флаги, уточняющие режим создания процесса. Среди них следует отметить класс приоритета процесса, флаг отладочного режима (при этом система будет уведомлять процесс-родитель о действиях порожденного процесса), а также флаг создания приостановленного процесса, который не начнет работать, пока не будет вызвана функция возобновления работы.

· Блок среды процесса.

· Текущий каталог процесса.

· Параметры первого окна, которое будет открыто при запуске процесса.

· Адрес блока информации, через который функция возвращает родительскому процессу четыре числа: идентификатор созданного процесса, идентификатор нити, хэндл процесса и хэндл нити.

Если процесс успешно создан, функция CreateProcess возвращает ненулевое значение.

Класс приоритета процесса используется при определении приоритетов его нитей.

Хэндл объекта ядра Windows (в данном случае процесса или нити) позволяет выполнять различные операции с этим объектом. После создания процесса его единственная нить начинает выполнять программу процесса, работая параллельно с нитями других запущенных процессов. Если логика работы программы предполагает параллельное выполнение каких-либо действий в рамках одного процесса, то могут быть созданы дополнительные нити.

  1. Чем различаются в Windows хэндл процесса и идентификатор процесса?

Хэндл – это некоторое число, которое система возвращает пользовательской программе при удачном выполнении операции открытия или создания файла.

идентификатор процесса - некое условное число, обозначающее данный процесс

  1. Что делает функция OpenProcess?

Функция OpenProcess позволяет одному процессу получить хэндл любого другого процесса, указав для этого два параметра: идентификатор интересующего процесса и маску, задающую набор запрашиваемых прав по отношению к этому процессу.

  1. Какие действия может выполнить один процесс по отношению к другому процессу?

Основные права следующие:

· запускать новую нить процесса;

· запрашивать и изменять класс приоритета процесса;

· читать и записывать данные в памяти процесса;

· использовать процесс в качестве объекта синхронизации;

· принудительно прекращать выполнение процесса;

· запрашивать код завершения процесса.

 

  1. Чем отличаются объекты синхронизации от других типов объектов Windows?

Объекты синхронизации представляют собой частный случай объектов ядра Windows. Отличительной особенностью объектов синхронизации является возможность использовать в качестве аргументов функций ожидания.

  1. Что делает функция WaitForSingleObject?

Функция WaitForSingleObject имеет два аргумента:

· хэндл какого-либо объекта синхронизации;

· тайм-аут ожидания, т.е. максимальное время ожидания (в миллисекундах).

Эта функция – блокирующая: если в момент ее вызова указанный объект находится в несигнальном состоянии, то вызвавшая нить переводится в состояние ожидания (разумеется, пассивного!). Ожидание, как правило, завершается в одном из двух случаев: либо объект переходит в сигнальное состояние, либо истекает заданный тайм-аут. Третий, особый случай завершения связан с понятием «заброшенный мьютекс», которое будет пояснено ниже. Значение, возвращаемое функцией, позволяет узнать, какая из трех причин пробуждения нити имела место.

  1. Чем функция WaitForMultipleObjects отличается от WaitForSingleObject?

Функция WaitForMultipleObjects отличается тем, что вместо единственного хэндла принимает в качестве аргументов адрес массива, содержащего несколько хэндлов, и количество этих хэндлов (размер массива).

  1. Какие имеются объекты синхронизации в Windows?

Список объектов синхронизации включает следующие типы объектов:

· процессы;

· нити;

· события (в узком смысле);

· мьютексы (двоичные семафоры);

· семафоры (недвоичные);

· таймеры;

· уведомления об изменениях в каталоге;

· консольный ввод.

  1. Какое состояние процесса или нити является сигнальным?

Рассмотрение объектов синхронизации проще всего начать с процессов и нитей. Для тех и других сигнальным состоянием является только состояние завершения работы. Другими словами, можно заставить нить одного процесса ожидать завершения работы другой нити или процесса.

  1. Чем различаются события с ручным сбросом и с автосбросом?

Событие с автосбросом означает, что функция ожидания при завершении ожидания сбрасывает то событие (или события), которого (которых) она дождалась. Если несколько нитей ждут одного и того же события с автосбросом, то разблокирована будет только одна из них (Windows не гарантирует, какая именно), поскольку остальным «события не достанется». Напротив, событие с ручным сбросом остается в сигнальном состоянии и может быть сброшено только функцией ResetEvent, а до тех пор оно может «накормить» сколько угодно ожидающих нитей. Можно сказать, что событие с ручным сбросом больше похоже не на событие, а на состояние.

  1. Какие функции Windows соответствуют семафорным примитивам P(S) и V(S)?

Для освобождения мьютекса нить, владеющая им, вызывает функцию ReleaseMutex, которая является аналогом дейкстровской V(S). Никакая другая нить, кроме владельца, не может освободить «чужой» мьютекс.

В специальной функции для захвата мьютекса нет необходимости, поскольку работу примитива P(S) с успехом выполняют функции ожидания.




Дата добавления: 2015-02-16; просмотров: 115 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав