Antwort schreiben  Thema schreiben 
Verfasser Nachricht
Fly Destination
Durchstarter
**


Beiträge: 99
Gruppe: User
Registriert seit: Jul 2010

Status: Offline
Danke erhalten: 47
Beitrag: #1
xPSP  Syscalls? Threads?

Hallo, habe mir gerade ,,The naked PSP" von Tyranid durchgelesen und bin über zwei Begriffe gestolpert, die ich nicht so ganz verstehe und die auch nicht wirklich richtig erklärt werden.

Es gibt ein Kapitel das ,,Thread Security" heißt, nur verstehe ich nicht was denn jetzt so ein Thread ist. Wenn man in Google PSP Thread eingibt, kommt nichts brauchbares raus.

Und was sind syscalls? Bei ,,PSP syscalls" spuckt Google auch nichts brauchbares aus, was ich nicht verstehen kann, denn diesem Begriff bin ich öfters begegnet und es scheint ja eher berühmt zu sein.

Fly Destination

20.12.2010 20:50
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #2
RE: Syscalls? Threads?

Threads sind so ne Art "Unterprozesse", Funktionen die ähnlich wie ein Prozess parallel ausgeführt werden können. Wenn du also von nem Programm aus einen Thread startest, läuft dieser parallel zu deinem anderen Code mit.

Syscalls == Systemaufrufe
Mithilfe von Syscalls können User Module auf Kernel Funktionen zugreifen. Dass geschieht bei der PSP mithilfe von Stubs. Jede PSP-ELF (ELF ist das Dateiformat für ausführbare Dateien, dass die PSP benutzt) hat eine Stub Sektion und eine .lib.stub Sektion. In der .lib.stub Sektion stehen die NIDs (Idendifizierer für Funktionen in einer Bibleotek) der importieren Funktionen, die Stub Sektion ist ne Art Platzhalter für die Sprünge/Syscalls die dann vom Betriebsystem gelinkt werden (ich sag Betriebssystem, weil es bei OSs wie UNIX Systemen ähnlich funktioniert). Jeder Stub ist 64bit, also 8bytes groß, und sieht anfangs so aus:

Code:
jr $ra
nop


, springt also direkt zum Caller zurück.

Das Betriebssystem ändert den Stub mithilfe des NIDs dann, um entweder auf eine Funktion zu springen (user -> user, oder kernel -> kernel)

Code:
j 0xblaaaaaa
nop


oder einen Syscall aufzurufen (z.B. user -> kernel)

Code:
jr $ra
syscall 0xbla


Wenn eine Funktion aufgerufen wird springt die ELF dann direkt auf den Stub, und die Funktion wird gestartet.

20.12.2010 21:00
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
dark-awesome (Jun-18-2011), ~Hook~ (Mar-11-2011), fkrone (Dec-20-2010), Fly Destination (Dec-20-2010)
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP Problem mit Threads Gigor 6 1.996 30.05.2012 18:29
Letzter Beitrag: Gigor

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang