Ugrás a tartalomhoz

Operációs rendszerek

Dr. Fazekas Gábor (2011)

Kempelen Farkas Hallgatói Információs Központ

4. fejezet - Szálak, mikrokernelek

4. fejezet - Szálak, mikrokernelek

Folyamatok és szálak

  • A processzusokkal kapcsolatban két jellemzőt lehet megemlíteni:

    • – erőforráskiosztás: a processzus számára virtuális címtartomány van lefoglalva a processzus kép (process image) tárolásához

    • – ütemezés/végrehajtás: a processzus végrehajtása egy programvégrehajtási útvonalat követ, mely kereszteződhet más processzusok végrehajtásával

  • Ezen jellemzők egymástól függetlenek, az operációs rendszer egymástól függetlenül kezelheti őket:

    • – Processzus

      • erőforráskiosztás alapegysége

      • virtuális címtartomány, főmemória

      • I/O eszközök és fájlok

    • – Szál (vagy könnyűsúlyú processzus, újraindított programkód)

      • processzor kiszolgálás, ütemezés alapegysége

      • ütemezés és kiszolgálás operációs rendszer vezérlése szerint

      • a szálak olyan mechanizmust szolgáltatnak, amely lehetővé teszi a szekvenciális processzusoknak a rendszerhívások blokkolását, s közben a „párhuzamosság elérését”

  • Többszörös szálak (Multithreading)

    • Az operációs rendszer támogathatja egy processzuson belül több vezérlési szál végrehajtását

      • – MS-DOS csak egyszeres szálakat támogat

      • – UNIX támogat párhuzamos felhasználói processzusokat, de egy processzuson belül csak egy szálat

      • – Windows 2000, Solaris, Linux, Mach, és OS/2 támogatja a többszörös szálakat

  • Egy processzuson belül egy vagy több szál lehetséges a következő jellemzőkkel

    • – végrehajtás állapota (futó, készen álló, stb.)

    • – tárolt „szálkörnyezet”

      • program címszámláló, verem tartalma, regiszterkészlet, gyerekszálak, lokális változók számára memória

    • – a processzushoz lefoglalt memóriához és erőforrásokhoz való hozzáférés

      • ugyanazon processzushoz tartozó szálak (task) közösen használják

  • Események, melyek egy processzus összes száljára hatással vannak

    • – egy processzus megszakítása az összes szál megszakításával jár

  • Szálak használatának előnyei:

    • egy szál létrehozásához kevesebb idő kell, mint egy processzus létrehozásához

    • kevesebb idő egy szál megszakítása, mint egy processzusé

    • ugyanazon processzuson belüli szálak közötti átváltás kevesebb idővel jár, mint processzusok között

    • mivel az egy processzuson belüli szálak a memórián és a fájlokon osztoznak, a kernel segítségül hívása nélkül tudnak kommunikálni

  • Műveletek melyek egy szál állapotát megváltoztatják

    • – származtatás: másik, új szálat származtatni

    • – blokkolás, deblokkolás

    • – befejezés: erőforrások felszabadítása (regiszterek, vermek)

Szálak megvalósítása

  • felhasználói-szintű szálak (User Level Thread - ULT)

    • – a szálak kezelését az alkalmazások (futtató rendszer!) végzik

    • – a kernel nem tud a szálak létezéréről

  • kernel-szintű szálak (Kernel Level Thread - KLT)

    • – a kernel tartja fent a processzusok és szálak környezetét

    • – szál alapú ütemezés

    • – Pl: Windows XP, Linux, OS/2

  • vegyes megközelítés

    • – szál létrehozása a felhasználói térben

      • az ütemezés és szinkronizáció nagy része is

    • – egy alkalmazáshoz tartozó több ULT leképzése ugyanannyi vagy kevesebb KLT-re

    • – példa: Solaris