Linux: Preemptív Linux kernelpatch

Címkék

A MontaVista nevezetű cég és Rober Love egy olyan kernelpatch -en dolgoznak, amely a Linux kernelt teljesen preemptívvé teszi. Több felhasználó is tesztelte már, és a tesztek igazolták a nagymértékű késedelem csökkentést. A kernelpatch elérhető itt. Végül, egy interjú Robert Love -al, a preemtivitásról és másról.

Hogy mi is a preemtivitás vagy kooperativitás? Olvasd tovább...
A több, változó feladatszétosztású CPU-val rendelkező gépeket az operációs rendszerükkel együtt multi processing rendszereknek szokás nevezni.


Az egy processzoros gépek működtető rendszere lehet single tasking (egyidőben egy processz lehetséges), vagy multi tasking rendszer (kvázi párhuzamosságban több processz fut).

Az egyidejű felhasználók száma szerint beszélhetünk egyfelhasználós (single user) rendszerkről és többfelhasználós (multi user) rendszerekről. Az utóbbiak mindenképp multi tasking vagy multi processing rendszerek kellenek, hogy legyenek, az egyfelhasználós rendszer lehet single tasking is.

A CPU időkiosztása lehet szekvenciális (egy processz teljes feldolgozása után kapcsol a másikra), kooperatív-event polling rendszerű, megszakítás vezérelt (interrupt driven), vagy beavatkozó-megszakításvezérelt (preemptiv-interrupt driven).

Az event polling rendszer már lehet többfelhasználós/többfeladatos rendszer. A processzek között előre beállított, körkörös sorrend van. Az a processz lesz aktív, amelyik eseményt (billentyű lenyomás, ablakba belépés stb.) kap, és addíg aktív, amíg új esemény aktívvá nem tesz egy másik processzt. A kooperatív rendszerkben egy-egy processz saját elhatározásából is lemondhat a CPU-ról, átadhatja a vezérlést a soron következő processznek.

A megszakítás vezérelt rendszerekben minden I/O megszakítás bekövetkezésekor újraértékelik a processzek prioritási állapotait, és a legmagasabb prioritású kapja a CPU-t. Ha nincs I/O megszakítás, a futó processz nem mond le önszántából a CPU-ról.

A beavatkozó rendszerű időkiosztásnál nemcsak az I/O megszakításoknál értékelik újra a prioritási állapotokat, hanem bizonyos óra megszakításoknál is. Elveszik a CPU-t a futó processztől akkor is, ha az továbbra is futásra kész állapotban van, ha találnak nála magasabb prioritásút. Az időkiosztási algoritmus szerint e rendszeren belül megkülönböztethetünk klasszikus időosztásos (time sharing) és valós idejű (real time) rendszereket, az utóbbiak az igéretvezérelt időosztású rendszerek egy alrendszerét képezik.

Pl:

Windows NT: általános célú (kliens és szerver is), többfelhasználós, többfeladatos rendszer (multi-processing). Preemptive-interrupt driven az időkiosztása. Minden taszk védett.

Unix rendszerek: általános célú, többfelhasználós, többfeladatos rendszerek. A korszerű Unix-ok képesek többproceszoros rendszereket működtetni, tehát multi processing jellegűek. A klasszikus Unix-ok preemtive time sharing időkiosztásúak. Fejlesztik a valós idejű Unix alapú rendszereket (ilyen pl. az OS9, a QNX). A mikro- és kisgépek, a munkaállomások, sőt, a nagygépek (szerverek) is működtethetők Unix származékokkal. Kapcsolattartóik szerint minden változat (interaktív parancsnyelvi, interaktív GUI, kötegelt parancsfeldolgozásos kapcsolattartás) előfordul.