Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
I am currently busy with creating processes in my 64-bit OS and am wondering how to implement the basics.
I have a higher-half micro kernel of which the memory is going to be mapped in every process space. Within the kernel area i intend to put a 32 KiB area, at a fixed location, that contains the GDT, IDT, TSS, IOPB, RSP0 and IST1 for that process. Thus this area changes every process switch. This implies that all other pages of the kernel map could be global pages but these 8 pages can't.
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.
- C. A. R. Hoare
Interrupt Stack Table (IST) is a field in the 64 bit TSS that points to a piece of memory that is used as stack memory during an interrupt. This assures that an interrupt has a valid stack at all time. Very handy feature