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.
hello i'm beginner in os devellepmnt so i did not understand each of those descriptor tables use and this paragraph.
thanks
There are three types of descriptor tables; the Global (GDT), Local (LDT) and Interrupt (IDT). The
GDT, pointed to by GDTR, holds up to 8191 objects (GDT 0 is reserved) that are accessible across all
tasks. The LDT, pointed to by LDTR, holds up to 8192 objects (LDT 0 is not reserved) that are local to
each task. The IDT, pointed to by the (need I say) IDTR, holds up to 256 gates (more on gates later).
Much like with the 8086, the IDT holds the destinations for the various interrupts. Each interrupt,
software or hardware, has a vector number associated with it. This vector number serves as the index
into the IDT. All three of these tables are created by software and reside in the memory space.
I would recommend that you start reading the intel or amd manuals for system programming. You can find the amd manuals here: http://www.amd.com/us-en/Processors/Dev ... 44,00.html. Read up on chapter 4, section 4.6 for details on the descriptor tables.
Well, here's a basic explanation of the descriptor tables:
Global Descriptor Table: Lets you define the memory selectors to put in the segment registers. You can do some fun stuff with this, like defining a separate selector that just handles video memory, etc.
Local Descriptor Table: Used for defining different selectors for different tasks on the 286, before TSS came.
Interrupt Descriptor Table: Used for defining software interrupts. A lot harder to use than the real mode Interrupt Vector Table.
Solar wrote:It keeps stunning me how friendly we - as a community - are towards people who start programming "their first OS" who don't even have a solid understanding of pointers, their compiler, or how a OS is structured.