Линукс. Механизми за комуникация м-у процесите
| Информационни технологии | 2009-12-04 | 75 сваляния |
Механизми на комуникация между процесите

За да координират работата си, процесите комуникират както помежду си, така и с ядрото. Linux поддържа известен брой механизми на комуникация между процесите (IPC - Interprocess Communication Mechanisms). Два от тях са сигналите и конвейрите, но Linux поддържа и механизмите от System V IPC, наречени по името на UnixTM изданието, в което са използвани за първи път.
1. Сигнали
Сигналите са един от най-старите методи на междупроцесова комуникация, използвани в системите UnixTM . Използват се за сигнализиране на асинхронни явления в един или повече процеси. Сигнал може да бъде генериран от клавишно прекъсване или при грешка, като например даден процес опитва достъп до несъществуващо място във виртуалната си памет. Освен това сигналите се използват от шеловете за означаване на команди за управление на работата към техните подчинени процеси.
Съществува комплект от определени сигнали, които ядрото може да генерира или които могат да бъдат генерирани от другите процеси в системата, при условие, че те имат съответните привилегии. Списъкът на комплекта от сигнали на системата може да бъде изведен чрез командата kill (kill -l), в Intel Linux box, което дава:
| 1) SIGHUP | 2) SIGINT | 3) SIGQUIT | 4) SIGILL |
| 30) SIGPWR | | | |
При Alpha AXP Linux box номерата са различни. Процесите могат да избират игнориране на повечето генерирани сигнали, с две важни изключения: не може да бъде игнориран сигналът SIGSTOP, при който процесът преустановява изпълнението си, и сигналът SIGKILL, при който се излиза от процеса. Въпреки това, даден процес може да избира как "желае" да борави с различните сигнали. Процесите могат да блокират сигналите и, ако не ги блокират, те могат да изберат да боравят с тях сами или да позволят на ядрото да борави с тях. Ако със сигналите борави ядрото, то ще изпълни обичайното действие, изисквано за дадения сигнал. Например, обичайното действие, когато даден процес получи сигнал SIGFPE (floating point exception - ) е да запише състоянието на системата в момента и да излезе. Сигналите нямат вътрешно присъщи приоритети. Ако за даден процес се генерират едновременно два сигнала, то те могат да бъдат представени и обработени към процеса в какъвто и да е ред. Освен това няма механизъм за обработка на множество сигнали от един и същ вид. Няма начин, по който процесът да каже дали е получил 1 или 42 SIGCONT сигнала.
Linux възприема и използва сигналите, като използва информация за
Тагове от реферата: инукс, мехнизми, комуникаия, процесит











