什么决定了记忆模型?

时间:2012-03-19 21:44:21

标签: operating-system computer-architecture

具体来说,这个问题是关于实模式下的平面和分段模型。我正在阅读一本关于汇编的书,其中提到在DOS上COM文件使用平面内存模型,EXE文件使用分段内存模型。但是我不明白是什么告诉DOS使用哪种内存模型。我问这个问题是因为我正在阅读有关引导程序的内容。

3 个答案:

答案 0 :(得分:4)

COM文件使用“平面内存模型”,因为当程序加载指向同一段时,段寄存器由DOS设置,并且所有代码和指针按照惯例相对于那个段寄存器中的一个值。

另一方面,EXE文件格式允许以不同的偏移量加载段。 DOS不会将段寄存器设置为默认值;这取决于代码本身。 16位EXE代码要复杂得多,因为代码必须管理段寄存器。

现在很多EXE代码或多或少都会忽略段寄存器;不需要将32位或64位寄存器添加到段寄存器中以生成可用地址。

答案 1 :(得分:1)

COM和EXE可执行文件在文件头中有内存要求:EXE headerCOM (MS-DOS) header。如果程序要求< 64KB,使用平面空间,如果> 64KB,使用分段存储器。

答案 2 :(得分:1)

DOS中没有任何东西可以阻止COM文件使用分段内存模型,因为DOS没有对其应用程序强制执行内存管理策略。

您可以阅读关于COM files的维基百科条目,它可以深入了解这些旧问题。