1
OS-Design / scheduling verstaendnisfrage
« am: 25. March 2005, 12:10 »
yoa was interrupts sind weiss ich eigentlich; sie werden zb von der prepherie ausgeloest, wenn sie einen job fertig hat, damit die cpu ihre aktuelle arbeit unterbrechen kann und sich der prephierie bzw den process widmen kann, der die prephierie benutzt. oder so
malloc gehoert aber net zum kernel, das ist doch part der (g)libc oder nicht?! also user-libary oder wie man sie dann nennt.
wo werden die denn registriert? der pc muss ja auch wissen, was zu tun ist, wenn ein process drann ist. sind die entsprechenden sachen direkt in der cpu(register?) gespeichert?
yea, aber da kommt ja wieder kernelcode zum einsatz.
bei linux zb liegt der kernel im bereich zwischen _text und _etext, wobei _text 0x100000 ist, also nach dem erste mbyte des ram, und _etext ist halt das ende, also die groesse des kernel. da liegt nun der linux kernel in binaerform, und damit auch die ganzen anweisungen.
so, wenn nun also ein process mittels einen interrupt unterbrochen wird, weil seine zeitscheibe abgelaufen ist, muss ja direkt der kernel code am start sein, um die register zu sichern, die processstrukturen zu aktualisieren und einen neuen process auszuwaehlen. heisst das, das mittels des interrupt zu einer anderen stelle im code gesprugen wird, der dann ausgefuehrt wird (aber nicht als process?! wie gehtn das dann) und sagen wir mal dann der code ab 0x100000 ausgefuehrt wird (oder wo sich der kern und damit auch irgendwo der sheduler befindet)? aber woher weiss man dann, wo ab 0x100000 was (zb der scheduler) liegt?
Zitat
nehmen wir mal dein beispiel vom user-thread, der ram haben will; der user-thread ruft, zb, malloc() auf und genau hier tritt dann der kernel in kraft, da die funktion wohl teil des kernels sein muesste.
malloc gehoert aber net zum kernel, das ist doch part der (g)libc oder nicht?! also user-libary oder wie man sie dann nennt.
Zitat
der einmal ausgefuehrt wird um die interrupts zu registrieren
wo werden die denn registriert? der pc muss ja auch wissen, was zu tun ist, wenn ein process drann ist. sind die entsprechenden sachen direkt in der cpu(register?) gespeichert?
Zitat
und einigen interrupts, die dann aufgerufen werden, wenn zb. eine gewisse zeitspanne um ist und der naechste thread dran ist.
yea, aber da kommt ja wieder kernelcode zum einsatz.
bei linux zb liegt der kernel im bereich zwischen _text und _etext, wobei _text 0x100000 ist, also nach dem erste mbyte des ram, und _etext ist halt das ende, also die groesse des kernel. da liegt nun der linux kernel in binaerform, und damit auch die ganzen anweisungen.
so, wenn nun also ein process mittels einen interrupt unterbrochen wird, weil seine zeitscheibe abgelaufen ist, muss ja direkt der kernel code am start sein, um die register zu sichern, die processstrukturen zu aktualisieren und einen neuen process auszuwaehlen. heisst das, das mittels des interrupt zu einer anderen stelle im code gesprugen wird, der dann ausgefuehrt wird (aber nicht als process?! wie gehtn das dann) und sagen wir mal dann der code ab 0x100000 ausgefuehrt wird (oder wo sich der kern und damit auch irgendwo der sheduler befindet)? aber woher weiss man dann, wo ab 0x100000 was (zb der scheduler) liegt?