software task switching in only ring 0
Posted: Wed Apr 09, 2008 4:27 pm
Hello,
It's been a long time ago since I was last active with os development. Got as far as setting up paging and extremely basic malloc and getting the PIT to run. The next step is to get familiar with task switching.
All my code runs in ring 0 in a single address space and I was wondering if it is possible to do software task switching with only this environment, or do I need a ring 0 and a ring 3 and a TSS to get minimal software task switching working?
Because as far as I can tell, when I'm in ring 0 and a interrupt happens, the interrupt handler runs in the same stack as the code before the interrupt and changing the the currently in use stack for task switching is very impractical if not impossible.
Any thoughts on this one?
It's been a long time ago since I was last active with os development. Got as far as setting up paging and extremely basic malloc and getting the PIT to run. The next step is to get familiar with task switching.
All my code runs in ring 0 in a single address space and I was wondering if it is possible to do software task switching with only this environment, or do I need a ring 0 and a ring 3 and a TSS to get minimal software task switching working?
Because as far as I can tell, when I'm in ring 0 and a interrupt happens, the interrupt handler runs in the same stack as the code before the interrupt and changing the the currently in use stack for task switching is very impractical if not impossible.
Any thoughts on this one?