Hi,
Man muß hierbei bedenken, dass ein Prozeß nur dann Syscalls braucht, wenn er etwas tun will, dass er selber nicht darf, möchte er z.B. nur etwas berechnen, braucht er dafür keinen Call.
aber wie wird dann Prozessorzeit angefordert?
gar nicht - das Programm nimmt sie sich einfach.
Also zum berechnen wird CPU-Leistung gebraucht, ich dachte das wird auch über einen Syscall eingerichtet?
Nein. Die Anwendung rennt einfach los und macht ihr Ding. Irgendwann meint das Betriebssystem (hier: der Scheduler), dass es jetzt genug sei und nun ein anderer Prozess dran ist. Dann wird das laufende Programm quasi zwangsweise unterbrochen, für einige Millisekunden auf Eis gelegt und später an der Stelle fortgesetzt. Bei echtem (präemptivem) Multitasking kann sich die Anwendung dagegen nicht wehren, kann diese Unterbrechung nicht einmal zuverlässig feststellen.
"Befehlsregister"
Was steht in diesen Registern, befehle -also etwas was ein Programm anfordert wie z.B. write("irgendwas")- die im Arbeitsspeicher liegen und über die Adresse im Speicherbereich aufgerufen werden oder befehle die nur der CPU etwas angehen?
Im Befehlsregister, das für das Anwendungsprogramm nicht direkt zugänglich ist, steht der Opcode für die Instruktion, die in der CPU im Augenblick gerade ausgeführt wird. Bearbeitet die CPU also gerade den Befehl
ADD EAX,[ESI+0430h]
dann steht im Befehlsregister der Code für "Addiere durch ESI plus Offset indizierten Speicherinhalt zu EAX". Das sind bei einer x86-CPU AFAIK zwei Bytes, denn der Offset ist zwar Teil des Befehls, kommt aber nicht ins Befehlsregister; er hat eher die Rolle eines Operanden.
So long,
Martin
Man ist so alt, wie man sich fühlt.
Aber niemals so wichtig.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(