system calls wie implementieren (linux)

Gast #1073721
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.