2012-10-03 2 views
0

Я пытаюсь пересмотреть концепцию операционной системы, но у меня были некоторые путаницы. Я знаю, что процесс - это поток с собственным адресным пространством.Threads and Processes

1) Являются ли взаимоблокировки только вызванными потоками или процессами? (Темы разделяют стек процесса, где различные процессы имеют разные стеки).

2) Может ли один процесс вызвать тупик? или требуется больше одного процесса для тупика?

Я не уверен, что это подходящее место, чтобы спросить об этом. Если нет, сообщите мне, и я удалю вопрос.

+0

IMO-процесс - это не поток с собственным адресным пространством, это что-то вроде исполняющей среды, которая связывает ресурсы (данные, адресное пространство) и исполняемые действия (потоки). – Apokal

ответ

2

Оба потока И процессы могут попасть в тупиковые блоки в зависимости от того, что они пытаются заблокировать. Если ресурс, который они хотят заблокировать, является ресурсом, который совместно используется в процессе (например, критический раздел), потоки могут попасть в тупик. С другой стороны, если это общий ресурс (например, названный mutex), процессы могут попасть в тупик. Для 2) необходимо задействовать более одного процесса, так как более одного процесса должны пытаться заблокировать (глобально) общий ресурс, чтобы произошел тупик.

2

Ответ лежит на вашем самом Вопросе. Каждый процесс имеет стек, и все потоки, созданные процессом, совместно используют стек. когда два потока одного и того же процесса запрашивают ресурс (данные, коммит ...), что другие потоки имеют блокировку и в очереди ждут освобождения другого ресурса, тогда возникают взаимоблокировки.

Ответ:
для 1):
нити вызывают тупики внутри процесса и процесса вызывают тупиков внутри родительского процесса (в большинстве случаев ОС)
для 2):
да один процесс может вызвать взаимоблокировки.

+0

Это не совсем правильно. Темы разделяют адресное пространство содержащего процесса, но каждый поток имеет свой собственный стек. – Tudor

+0

Можете ли вы привести пример одного потока, вызывающего тупик? Не удалось найти его в Интернете или подумать об этом. :) – rgamber