Mi a folyamat?

A fájlrendszertől a folyamatokig...


 

  Fájlrendszer

  Általános jellemzők

  Névkonvenciók

  Könyvtárak (katalógusok)

  Általános könyvtárnevek

  Fájlkezelő utasítások

  Folyamatok

  A folyamat fogalma

  Folyamatkezelő utasítások

  Folyamatkezelés a Korn shellben (ksh)

 


 

  Bevezető

  Fájlrendszer

  Általános jellemzők

A UNIX fájlrendszere a DOS-szal összehasonlítva sokkal egységesebb: felfogása szerint minden fájl. Ez azt jelenti, hogy a felhasználó fájljai, a rendszer könyvtárkatalógusai és a rendszerhez csatlakoztatott hardver eszközök egységesen kezelendőek és egy könyvtárfára vannak "felakasztgatva".

A fájl Unix felfogás szerint egy strukturálatlan bájt-sorozat. Nincsen semmilyen rá vonatkozó megkötés, nincs fájlvég-jel stb. Minden fájnak van tulajdonosa, nyilván van tartva, hogy a tulajdonos mely csoport tagja (csoportmunkához). A fájlokhoz olvasási, írási, végrehajtási jogok kötődnek, amelyek külön beállíthatók a tulajdonos, a csoportja és mindenki más számára (lásd chmod). Ezenkívül a rendszer nyilvántartja a fájl hosszát, az utolsó módosítás időpontját valamint, hogy a fájlrendszer hány pontjáról hivatkozunk (könyvtárbejegyzéssel) erre a fájlra (linkszám).

  Névkonvenciók

Unixban a fájlnevek (manapság, általában) 255 karakter hosszúak lehetnek, tetszőleges számú elválasztó karaktert tartalmazhatnak (.), sőt érvényes név a ponttal kezdődő név is. Ezeket a rendszer némileg rejtettként értelmezi; például alapértelmezésben nem listázza és nem is törli őket (lásd ls parancs). Az ilyen fájlok gyakran különféle programok inicializációs adatait tartalmazzák.

A Unix minden esetben (paraméterekben is) megkülönbözteti a kis és nagybetűket, így például nem azonos file, File és FILE.

A futtatható állományokra nincs névbeli megkötés, akkor futtathatunk valamit, ha van rá futtatási jogunk (lásd chmod). A futtatás a név beírásával történik, ekkor a shell megkísérli bináris fájlként értelmezni és végrehajtani, ha ez nem megy, akkor shell scriptként értelmezi (a shell scriptek a DOS batch fájljaihoz állnak a legközelebb.)

  Könyvtárak (katalógusok)

A UNIX hierarchikus felépítésű, ami azt jelenti, hogy a fájlokat könyvtárakban tárolja. Egy könyvtárból alkönyvtárak nyílhatnak, amelyek ugyancsak tartalmazhatnak további fájlokat és alkönyvtárakat. A gyökérkönyvtárnak nincs neve és szülő könyvtára. A / jel jelenti a gyökeret (root), alkönyvtárai pedig az usr, home stb. Ezek a /usr, /home stb. hivatkozással érhetők el. Ezt a hivatkozást elérési útvonalnak (path name) hívják. Ez független attól az alkönyvtártól, amelyikben éppen tartózkodunk. A /usr alkönyvtárnak további alkönyvtárai vannak, például bin, etc stb. Ezek elérési útvonala /usr/bin, /usr/etc és így tovább.

  Általános könyvtárnevek

/      a főkönyvtár (root), a fájlrendszer kiindulópontja

~/     a felhasználó saját könyvtára

./     az aktuális munkakönyvtár

../    az aktuális fölötti könyvtár

/dev   a különféle eszközök könyvtára

/mnt   az ideiglenesen „felakasztott” eszközök becsatolási pontja (lást mount)

/usr   felhasználói programok, forrásszövegek, könyvtárak

              /usr/bin        végrehajtható programok (főként segédprogramok)

              /usr/lib        utasításkönyvtárak programozóknak

              /usr/src        forrásnyelvű szövegek

              /usr/local      helyileg telepített programok és tartozékaik

              /usr/local/bin  helyileg telepített futtathatók

  Fájlkezelő utasítások

Azon utasítások gyűjteménye, amelyek a fájlrendszerben való eligazodást, navigálást, könyvtárak, fájlok létrehozását, törlését és kezelését végzik.

  Folyamatok

  A folyamat fogalma

A UNIX-ban megkülönböztetjük a program, a folyamat (process) és a feladat (job) fogalmát. A program a háttértárolón várakozó, végrehajtható fájl, a folyamat a program egy memóriában futó példánya, a job pedig egy végrehajtáshoz sorba állított utasítás (pl. nyomtatás). A felhasználó bejelentkezésekor elindul egy shell egy folyamatazonosítóval (PID, process identifier). Ha egy programot elindítunk, az leszármazott folyamatként (child process) indul el. Az ilyen folyamatok is egyenrangúak a szülőkkel, bizonyos paramétereket örökölnek tőlük és maguk is újabb folyamatokat indítanak.

A munka során a kiadott parancsok a DOS-hoz hasonlóan, szekvenciálisan kerülnek végrehajtásra. A DOS-szal ellentétben itt viszont mód van ún. háttérfolyamatok elindítására, ahol a parancs kiadása után a promptot azonnal visszakapjuk és az előzőleg kiadott parancs végrehajtása a háttérben folyik tovább.

A háttérfolyamat egy speciális fajtája a démon. Ezt a rendszer automatikusan indítja el és valamilyen felügyeleti szerepet lát el. Például gondoskodik a terminálvonalak figyeléséről, a nyomtatási kérelmek besorolásáról és végrehajtásáról.

  Folyamatkezelő utasítások

ps futó folyamatok kiírása

ALAKJA:

ps [opciók]

Paraméter nélkül indítva egy ilyen listát kapunk:

$ ps
PID TTY STAT TIME COMMAND
49  p2  S    0:01 -ksh
208 p2  R    0:00 ps
$

A lista elemei (sorban):

- a folyamatazonosító (PID),
- mely terminálról adtuk ki,
- milyen állapotban van (S: sleeping, alszik; R: running, fut; Z: zombie),
- mennyi processzoridőt vett eddig igénybe,
- milyen utasításhoz tartozik.

A ps parancs kiadása után minden futó folyamatról tájékoztatást kapunk. A ps -f paraméterezéssel a szülő folyamatok PID-jét is kiírja a program (PPID).

kill folyamat kiirtása

(CÉLSZERŰ) ALAKJA:

kill -9 processzazonosító

A processzorazonosítót megtudhatjuk például egy ps utasításból.

  Folyamatkezelés a Korn shellben (ksh)

A Korn shellben egy futtatható fájl nevét beírva, előtérben indítjuk el azt. Háttérben indítható egy fájl a neve mögé tett & jellel, például:

$ sleep 10&
[1] 245
$

Ez azt jelzi számunkra, hogy a shell 245-ös PID-del saját számozása szerint [1]-es jobként indította el a folyamatot. Ha 10 másodperc múlva begépelünk egy parancssort, kapunk egy plusz üzenetet is:

$
[1]+ Done sleep 10
$

Az üzenet a folyamat befejezéséről tájékoztat bennünket.

Ha egy folyamatot előtérből háttérbe szeretnénk helyezni, előbb állítsuk le Ctrl-Z-vel azt (a program a memóriában marad!). Ekkor írjuk be:

$ bg

Ennek hatására a folyamat háttérben fog futni, mígnem az fg paranccsal előtérbe nem hozzuk.

  Folyamatok közti kommunikáció

 


Copyright (C) Buzogány László, 2002

About