system calls wie implementieren (linux)

Gast #1073721
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
#1073742
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.
Gast #1073773
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren