Jádro zpracovává signály v kontextu procesu, který je přijímá, takže pro zpracování signálů musí být proces spuštěn. Existují tři způsoby, jak zacházet se signály: proces se ukončí, když přijme signál, ignoruje signál nebo provede speciální (uživatelem definovanou) funkci, když jej přijme. Výchozí odezvou pro proces běžící v režimu jádra je volání exit, ale funkci signálu může proces použít ke specifikaci dalších speciálních akcí, které má provést, když obdrží určité signály.
Syntaxe pro volání funkce signálního systému je:
oldfunction = signal(signum, function);
kde signum je číslo signálu, po jehož přijetí se provede akce spojená se spuštěním uživatelské funkce, function je adresa funkce, oldfunction je hodnota vrácená funkcí. Místo adresy funkce může proces předat volané signálové proceduře čísla 1 a 0: pokud je funkce = 1, proces bude ignorovat všechny následující příchody signálu s číselným signum (zvláštní případ ignorování „ dětská smrt“ je popsána v části 7.4), pokud = 0 (výchozí), proces se ukončí, když je přijat signál režimu jádra. Procesní prostor udržuje pole polí pro zpracování signálu, jedno pole pro každý signál definovaný v systému. V poli odpovídajícím signálu se zadaným číslem jádro ukládá adresu uživatelem definované funkce, která je volána, když proces přijme signál. Způsob zpracování jednoho typu signálu neovlivňuje zpracování jiných typů signálů.
psig algoritmus /* zpracování signálů po kontrole jejich existence */
vstupní informace: žádné
výstupní informace: žádné
vyberte číslo signálu ze záznamu v tabulce procesů;
vymažte pole s číslem signálu;
if (uživatel dříve zavolal funkci signálu, pomocí které dal pokyn ignorovat signál tohoto typu)
if (uživatel zadal funkci, která má být provedena po přijetí signálu)
vybrat uživatelskou virtuální adresu funkce zpracování signálu z procesního prostoru;
/* následující prohlášení má nežádoucí vedlejší účinky */
vymažte pole v procesním prostoru obsahující adresu funkce zpracování signálu;
provést změny uživatelského kontextu:
uměle vytvořit položku v zásobníku úloh, která simuluje volání funkce zpracování signálu;
provést změny v kontextu systému:
zapište adresu funkce zpracování signálu do pole programového čítače patřícího do uloženého registru úlohy;
if (signál vyžaduje uložení obrazu procesu do paměti)
vytvořte soubor s názvem „core“ v aktuálním adresáři;
přepsat obsah uživatelského kontextu do souboru „core“;
okamžitě spusťte výstupní algoritmus;
Obrázek 7.8. Algoritmus zpracování signálu
Zpracováním signálu (obrázek 7.8) jádro určí typ signálu a vymaže (zhasne) bit v záznamu tabulky procesů odpovídající tomuto typu signálu a nastavený v době, kdy proces signál přijal. Pokud je funkci zpracování signálu přiřazena výchozí hodnota, jádro v některých případech před ukončením procesu resetuje (uloží) obraz procesu v paměti na externí médium (viz cvičení 7.7). Dumping je vhodný pro programátory, protože vám umožňuje určit důvod ukončení procesu a tím ladit programy. Jádro vypíše stav paměti, když jsou přijaty signály, které indikují jakékoli chyby při provádění procesů, jako je pokus o provedení nezákonného příkazu nebo přístup k adrese umístěné mimo virtuální adresový prostor procesu. Jádro nevypisuje stav paměti, pokud signál není způsoben softwarovou chybou. Například přerušení způsobené stisknutím kláves „delete“ nebo „break“ na terminálu má za následek odeslání signálu, který indikuje, že uživatel chce proces předčasně ukončit, zatímco signál „zavěsit“ indikuje selhání komunikace s registračním terminálem. . Tyto signály nejsou spojeny s chybami v procesu. Signál ukončení však způsobí reset stavu paměti, i když k němu dojde mimo běžící proces. Tento signál, který se obvykle spouští současným stisknutím kláves ‹Ctrl/|›, umožňuje programátorovi získat výpis paměti kdykoli po spuštění procesu, což může být nezbytné, pokud se proces dostane do nekonečné smyčky provádění stejných příkazů ( smyčka).
Pokud proces obdrží signál, kterému se rozhodne nevěnovat pozornost, proces pokračuje v provádění, jako by se signál nikdy nevyskytl. Protože jádro neresetuje hodnotu odpovídajícího pole indikujícího nutnost ignorovat signál tohoto typu, když signál znovu dorazí, proces mu opět nebude věnovat pozornost. Pokud proces obdrží signál, na který se rozhodne reagovat, provede se předem určená akce, jakmile se proces vrátí do režimu úloh, ale jádro musí stále provést následující kroky, než proces přepne do režimu úloh:
1. Jádro přistoupí k uloženému kontextu registru úloh a vybere hodnoty počítadla programu a ukazatele zásobníku, které mají být vráceny uživatelskému procesu.
2. Resetuje předchozí hodnotu pole funkce zpracování signálu v procesním prostoru a přiřadí jí výchozí hodnotu.
3. Vytvoří novou položku v zásobníku úloh, do které v případě potřeby alokováním další paměti přepíše hodnoty počítadla programu a ukazatele vrcholu zásobníku dříve vybraného z uloženého kontextu registru úlohy. Zásobník úloh se objeví, jako by proces nazval uživatelskou funkci (zpracování signálu) v bodě, kde zavolal systémovou funkci nebo kde jádro přerušilo její provádění (před rozpoznáním signálu).
4. Provede změny v kontextu uloženého registru úlohy: nastaví hodnotu čítače programu rovnou adrese funkce zpracování signálu a hodnotu horní části ukazatele zásobníku rovnou hloubce zásobníku úlohy.
Po návratu z režimu jádra do režimu úloh tedy proces začne vykonávat funkci zpracování signálu; po jeho ukončení se řízení přenese do místa v uživatelském programu, kde došlo k přístupu k funkci systému nebo k přerušení, čímž se simuluje opuštění funkce systému nebo přerušení.
Příkladem je program (obrázek 7.9), který přijímá signály přerušení (SIGINT) a sám je posílá (v důsledku provedení funkce kill). Obrázek 7.10 ukazuje fragmenty programového kódu získané jako výsledek rozebrání zaváděcího modulu v operačním prostředí VAX 11/780. Když se proces spustí, volání procedury knihovny kill má adresu (hexadecimální) ee; tato procedura zase před voláním systémové funkce kill provede příkaz chmk (uvede proces do režimu jádra) na adrese 10a. Návratová adresa ze systémové funkce je 10c. Během provádění systémové funkce vyšle jádro procesu signál přerušení. Jádro věnuje pozornost tomuto signálu, když se proces chystá vrátit do režimu úloh, načte návratovou adresu 10c z uloženého kontextu registru a vloží ji do zásobníku úloh. V tomto případě je adresa funkce zpracování signálu 104 umístěna jádrem do kontextu uloženého registru úlohy. Obrázek 7.11 ukazuje různé stavy zásobníku úloh a kontext uloženého registru.
V uvažovaném algoritmu zpracování signálu existují určité nekonzistence. První a nejdůležitější z nich se týká vymazání, než se proces vrátí do režimu úloh, pole v prostoru procesu, které obsahuje adresu uživatelem definované funkce zpracování signálu. Pokud proces potřebuje znovu zpracovat signál, bude se muset opět uchýlit k použití funkce signálního systému. To může mít nežádoucí důsledky: mohou se například vytvořit podmínky závodu, pokud signál dorazí podruhé dříve, než měl proces možnost spustit systémovou funkci. Protože proces běží v režimu úloh, jádro by mělo provést přepnutí kontextu, aby se zvýšila šance procesu na přijetí signálu před resetem pole funkce zpracování signálu.
Signál je materiálním nosičem informace. V přírodě se projevuje v podobě nějakého fyzikálního procesu. Teorie signálu abstrahuje (odchází se) od fyzikální podstaty signálu. Zde pracují s matematickými modely signálů. Z matematického hlediska je signál funkcí, tzn. závislost jedné veličiny na druhé, nezávisle proměnné. Obsahově se jedná o informační funkci, která nese zprávu o fyzikálních vlastnostech, stavu nebo chování jakéhokoli fyzického systému, objektu nebo prostředí a za účel zpracování signálu lze považovat vytěžení určité informační informace, která je zobrazovat v těchto signálech (zkráceně užitečné nebo cílové informace) a převádět tyto informace do podoby vhodné pro vnímání a další použití. Obvykle je signál, bez ohledu na jeho fyzikální povahu, reprezentován jako určitá funkce času x(t). Tato reprezentace je obecně přijímanou matematickou abstrakcí fyzického signálu. Cíle analýzy signálu jsou obvykle: – Určení nebo odhad číselných parametrů signálů (energie, průměrný výkon, efektivní hodnota atd.). — Rozklad signálů na elementární složky pro porovnání vlastností různých signálů. — Porovnání stupně blízkosti, „podobnosti“, „příbuznosti“ různých signálů, včetně určitých kvantitativních odhadů. Všechny modely signálů jsou rozděleny na úplné a neúplné. Příklady úplných modelů zahrnují: časovou funkci x(t) a spektrální funkci F(j). Kompletní model odráží všechny potřebné informace o fyzickém signálu. Neúplný model (nebo odhad) neposkytuje všechny informace o signálu. Umožňuje nám to popsat s nějakou chybou. V důsledku toho se některé informace ztratí. Příklady neúplných modelů zahrnují: amplitudové spektrum A(), energetické spektrum E(), korelační funkce R(), soubor diskrétních hodnot nějaké funkce.
Druhy rušení se dělí podle zdrojů jejich výskytu, podle energetického spektra, podle charakteru působení na signál, podle pravděpodobnostních charakteristik a dalších charakteristik. Zdroje rušení mohou být vnitřní nebo vnější. Elektrická a magnetická pole různých zdrojů rušení v důsledku přítomnosti indukčních, kapacitních a odporových vazeb vytvářejí parazitní potenciálové rozdíly a proudy v různých úsecích a obvodech signálních systémů, které se superponují na užitečné signály. Rušení se dělí na fluktuační, pulzní a periodické. Podle charakteru dopadu na signál se rušení dělí na aditivní a multiplikativní.
Signály se rozlišují:
1) podle fyzikální povahy (elektromagnetické, tepelné, akustické atd.); 2) v závislosti na čase (konstantní a proměnné); 3) podle prvku náhodnosti je D deterministický, nebo regulární, jedná se o signál, jehož zákon změny je znám a jsou známy všechny jeho parametry. Kvazideterministický je signál, jehož zákon změny je znám, ale jeden nebo více parametrů jsou náhodné veličiny. Příklad: x(t)=Asin(wt+), kde A je náhodná veličina. Signál se nazývá náhodný, jehož hodnota je v každém okamžiku náhodná veličina. Kromě toho mohou být všechny signály spojité nebo diskrétní. Signál se nazývá diskretizovaný, pokud je alespoň jeden parametr diskrétní hodnotou, tzn. má konečnou množinu hodnot.
Pro periodické signály je splněna obecná podmínka s(t) = s(t + kT), kde k = 1, 2, 3, . – libovolné celé číslo (z množiny celých čísel I od -∞ do ∞), T – perioda, která je konečným segmentem nezávisle proměnné. Mnoho periodických signálů: LP = . Harmonický signál a spektrum jeho amplitud
Harmonické signály (sinusové) jsou popsány pomocí následujících vzorců:
s(t) = hřích (2pf o t+ ) = hřích (w o t+), | |
s(t) = A cos(w o t+j), | (1.1.1) |
kde A, fo, wo, j, jsou konstantní veličiny, které mohou hrát roli informačních parametrů signálu: A je amplituda signálu, f o je cyklická frekvence v hertzech, w o = 2pf o je úhlová frekvence v radiánech, j a jsou počáteční fázové úhly v radiánech. Perioda jednoho kmitu je T = 1/f o = 2p/wo. Při = – /2 popisují funkce sinus a kosinus stejný signál. Frekvenční spektrum signálu je reprezentováno amplitudou a počáteční fázovou hodnotou frekvence f o (v t = 0). Polyharmonické signály tvoří nejrozšířenější skupinu
periodické signály a jsou popsány součtem harmonických kmitů: | |||||
s(t) = A n sin (2pf n t+jn ), | (1.1.2) | ||||
nebo přímo funkcí s(t) = y(t kT p ), k = 1,2,3. kde T r je perioda jednoho celého | |||||
oscilace signálu y(t), specifikované během jedné periody. Zavolá se hodnota fp =1/T p | |||||
základní frekvence kmitání. | |||||
Matematický popis signálu je dán vzorcem: | |||||
3 | A k cos(2 fk t+ | ||||
s (t) = | ), | ||||
kde: | k 0 | = — | |||
A | k | = — amplituda harmonických; F | k | ||
frekvence v | hertz; | jk = je počáteční fázový úhel oscilací v |
radiány; k = 0, 1, 2, 3. Frekvence základního signálu 40 Hz. Frekvenční znázornění tohoto signálu (spektrum signálu) je na obrázku. Poznamenejme, že frekvenční reprezentace periodického signálu s(t), omezená počtem harmonických spektra, je pouze osm vzorků a je velmi kompaktní ve srovnání s časovou reprezentací.
Periodický signál libovolného tvaru může být reprezentován jako součet harmonických kmitů s frekvencemi, které jsou násobky základní frekvence kmitů f r = 1/T r . K tomu stačí rozšířit jednu periodu signálu do Fourierovy řady v goniometrických funkcích sinus a kosinus s frekvenčním krokem rovným základní frekvenci kmitání ∆f = fp: s(t) = (ak cos 2πk∆ ft + bk sin 2πk∆ft), (1.1.3)
ao = (1/T) | T s(t) dt, ak = (2/T) | T s(t) cos 2πk∆ft dt (1.1.4) |
bk = (2/T) | T s(t) sin 2πk∆ft dt | (1.1.5) |
Téměř periodické signály se tvarem blíží polyharmonickým. Představují také součet dvou nebo více harmonických signálů (v limitě – do nekonečna), ale ne s násobky, ale s libovolnými frekvencemi, jejichž poměry (minimálně dvě frekvence) se nevztahují k racionálním číslům, jako výsledkem čehož je základní perioda celkových oscilací nekonečně velká Takže například součet dvou harmonických s frekvencemi 2f o a 3.5fo dává periodický signál (2/3.5 je racionální číslo) ze základu s frekvencí 12 0.5fo, na jedné 12 period, z nichž se vejdou 4 periody první harmonické a 7 period druhé harmonické. Pokud je však hodnota druhé harmonické frekvence nahrazena blízkou hodnotou fo, pak se signál stane neperiodickým, protože poměr 2/ není racionální číslo. Téměř periodické signály jsou zpravidla generovány fyzickými procesy, které nejsou vzájemně propojeny. Matematické zobrazení signálů je shodné s polyharmonickými signály (součet harmonických), diskrétní je i frekvenční spektrum.
Aperiodické signály tvoří hlavní skupinu neperiodických signálů a jsou specifikovány libovolnými funkcemi času. Na obrázku je příklad aperiodického signálu zadaného vzorcem na intervalu (0, ): s(t) = exp(-at) – exp(-bt), kde a a b jsou konstanty, v tomto případě a = 0.15, b = 0.17. Frekvenční spektrum aperiodických signálů je spojité a může obsahovat libovolné harmonické ve frekvenčním intervalu [0, ]. K jejímu výpočtu se používá integrální Fourierova transformace, kterou lze získat přechodem ve vzorcích (1.1.3) ze součtu do integrace při ∆f 0 ak∆f f. Náhodný signál je funkcí času, jejíž hodnoty jsou předem neznámé a lze je předvídat pouze s určitou pravděpodobností. Za hlavní statistické charakteristiky náhodných signálů se berou: a) zákon rozdělení pravděpodobnosti nalezení hodnoty signálu v určitém rozsahu hodnot; b) spektrální rozložení výkonu signálu. Náhodné signály se dělí na stacionární a nestacionární.
x (t) |
Analogový |
signál |
t |
Nepřetržitá funkce |
x d (t) |
x čtvereční (t) | |
Oddělený | |
funkce | |
kontinuální | |
argument | |
x | Úroveň |
kvantování | |
t | |
Kvantovaná funkce úrovně |
x d, čtvereční (t) x tt
Nepřetržitá funkce diskrétní – | Diskrétní funkce diskrétního argumentu |
argument (funkce, diskrétní | ment (funkce diskretizovaná tím |
podle času) | čas kvantovaný úrovní) |