Forum: PC-Programmierung system calls wie implementieren (linux)


von joschi (Gast)


Lesenswert?

Eine Frage. Wenn ein Prozess ein System call auslöst, wird dann der 
Interrupt welcher den Scheduler steuert ausgeschaltet, bis der call 
beendet ist ?  Oder werden generell alle Interrupts ausgeschaltet oder 
bleiben diese eingeschaltet ?  Zum Beisiel Linux ?  Hab noch nichts dazu 
gefunden?

danke joschi

von Εrnst B. (ernst)


Lesenswert?

Nein, es können problemlos mehrere Programme gleichzeitig einen Syscall 
ausführen, und mit der "Preemptible Kernel"-Einstellung kann sich der 
Kernel auch selber unterbrechen.
Gemeinsam benutzte Datenstrukturen im Kernel müssen dann natürlich 
entsprechend geschützt werden, aber das ist ja sowieso nötig, damit es 
auch mit Mehrprozessormaschinen funktioniert.

von joschi (Gast)


Lesenswert?

Hallo Ernst,
Danke für die Antwort, es geht um folgedes ich bin dabei ein kleines OS 
auf einem ARM zu schreiben mit Kernel Mode und User Mode - es läuft auch 
schon einiges.
Mein derzeitiges Problem wenn ein User Task (es gibt mal vorerst nur 
Tasks) ein system call macht, dann muss ich einen taskwechsel 
unterdrücken also ISR die den Scheduler aufruft ausschlten, sonst wird 
das mit dem kontext sichern sehr komplizert, also meine ich zumindestens 
:-)

Jetzt wollte ich wissen wie das Linux so macht, wie würdest du sowas 
machen?

gruss joschi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.