A programok végrehajtásának irányítása - stadopedia

Minden Linuxon futó programot folyamatnak neveznek. A multitasking rendszert úgy jellemzi, hogy egyszerre több, egy vagy több felhasználóhoz tartozó folyamatot is végrehajthat. Az éppen végrehajtott folyamatok listája megjelenhet a ps paranccsal, például az alábbiak szerint:

PID TT STAT TIME COMMAND

24 3 S 0:03 (bash)

A futási folyamatot is munkának nevezik. A folyamat és a feladat fogalma egymással felcserélhető. Azonban általában egy folyamatot neveznek munkának, amikor munkafelügyeletnek számítanak. A feladatkezelés olyan parancshéjfunkció, amely lehetővé teszi a felhasználó számára, hogy váltson több feladat között.

A legtöbb esetben a felhasználók csak egy feladatot futtatnak - ez az utolsó parancs a parancsértelmezőben. Azonban sok parancshéj (köztük bash és tcsh) rendelkezik munkamenet-menedzsment funkciókkal. lehetővé téve, hogy egyszerre több parancsot vagy feladatot futtasson, és szükség szerint váltson közöttük.

Előtér és háttér.

A feladatok végrehajthatók akár az előtérben (angol előtérben), akár a háttérben (angol háttér). Az előtérben egyszerre csak egy feladat lehet. Az előtérben lévő feladat kölcsönhatásban áll a felhasználóval, fogadja a bemenetet a terminál billentyűzetéről, és elküldi a kimenetet a képernyőre. A háttérben lévő feladatok nem kapnak bemenetet a terminálról, és általában nem adnak hozzá semmit (különben az előadott adatok önkényesen keverednek az előtérparancs kimenetével). Általában ezek olyan feladatok, amelyeknek nem kell kölcsönhatásba lépniük a felhasználóval.

Néhány feladat nagyon hosszú, és munkájuk alatt semmi érdekes nem történik. Az ilyen feladatok egy példája a programok összeállítása, valamint a nagy fájlok tömörítése. Nincs ok arra, hogy megnézzük a képernyőt, és várjuk, hogy ezeket a feladatokat elvégezzük. Ezeket a feladatokat a háttérben futtathatja, majd a végrehajtás során más programokkal is dolgozhat.

A folyamatok Linuxon történő végrehajtásának vezérlése érdekében egy jelző mechanizmust biztosítunk. Egy jel a folyamatok azon képessége, hogy szabványos rövid üzeneteket közvetlenül az operációs rendszer használatával cseréljenek. Az üzenetjelző nem tartalmaz semmilyen más információt, mint a jelszámot (a kényelem érdekében, a szám helyett, előre definiált rendszernév használatával). Egy jel továbbításához elegendő, ha a folyamat a kill () rendszerhívást használja, és annak érdekében, hogy megkapja a jelet, nem kell semmi. Ha a folyamat valamilyen módon reagál a jelre, akkor regisztrálhatja a kezelőt,
és ha a kezelő nem, akkor a rendszer a jelre reagál. Ez általában a jelzést fogadó folyamat azonnali befejezéséhez vezet. A jelkezelő aszinkron módon indul. miután azonnal megkapta a jelet, mi lenne a folyamat ebben az időben.

Két jel - a 9-es szám (KILL) és a 19 (STOP) - mindig feldolgozza a rendszert. Az első közülük erőszakosan megáll és elpusztítja a folyamatot (tehát a név, az angol kill - kill). A STOP jel felfüggeszti a folyamatot: ebben az állapotban a folyamat nem törlődik a folyamat táblából, de nem hajtódik végre, amíg nem kap jelet 18 (CONT), majd folytatja a munkát. A Linux shell-ban a STOP jelet továbbíthatja az aktív folyamathoz a menekülési sorrend segítségével +.

A 15-es jelzőszám (TERM) a feladat megszakításához szolgál. Ha a megszakítás megszakad, a folyamat leáll. A feladatok megszakítását rendszerint a vezérlési sorrend végzi +. A megszakított munkát semmilyen módon nem lehet visszaállítani. A KILL jeltől eltérően a programok megszakíthatják a TERM jelet, és beállíthatják saját kezelőjüket ehhez a jelhez, így egy billentyűkombináció + nem szakíthatja meg azonnal a folyamatot. Ez úgy történik, hogy a program helyesen fejezze be munkáját - törölje az ideiglenes fájlokat, befejezze az adatok írását stb., Mielőtt elkészül. A gyakorlatban egyes programokat egyáltalán nem lehet megszakítani.

Van egy kill segédprogram, amely jelet küld önkényes folyamatnak. Formátuma:

megölni [-s SIGNAL | -SIGNAL] PID

ahol a SIGNAL a folyamathoz küldött jel, és a PID a megfelelő folyamatazonosító. Például, ha KILL jelet küld az 1. eljáráshoz, írhat:

-bash: kill: (1) - A művelet nem megengedett

Az adott parancs természetesen hibával zárult, a jelek küldése mellett a beléptetési megállapodások is kiterjedtek,
és az átlagos felhasználó nem küldhet semmilyen jelet (főleg megölni) folyamat futását root (ahogy azt a korábbi laboratóriumi munka, a folyamat PID egyenlő 1 -. Ez az init).

Kapcsolódó cikkek