为了让操作系统能够使用32位模式,需要对CPU做各种设定
最近的操作系统能同时运行多个程序,如果内存地址的使用范围重叠了怎么办?解决这个问题的方法就是分段。
什么是分段?
打个比方,将4GB的内存分成很多块,每一块的起始地址都看作0来处理,有了这个功能,任何程序都可以先写上一句 ORG 0 。这样割出来的块,称为段。
为了表示一个段,需要有以下信息:
1.段的大小是多少?
2.段的起始地址在哪里?
3.段的管理属性:禁止写入、禁止执行、系统专用等
GDT的意思是全局段号记录表,将这些数据整齐的排列在内存中的某个地方,然后将内存的起始地址和有效设定个数放在CPU内被称作GDTR的特殊寄存器中,设定就完成了。
IDT是“中断记录表”,它记录了0-255的中断号码与调用函数的对应关系。
有中断机制和没有中断机制的区别可以用下面这个图形象描述:
接下来对C语言源文件拆分: