这两者毫无关系。页面用于映射连续内存,堆栈空间的大小由操作系统定义。从逻辑上讲,这两者没有任何关系。通常,堆栈空间是页面大小的整数倍。
这只是一个数学问题,页面大小是可以被系统预先设定和知道的。你知道的,对吧?逻辑空间地址等于页数乘以页面大小,然后加上偏移地址建立方程求解。其实就是根据页面大小求余数和整数商。
分段存储管理的实现可以基于可变分区存储管理的原理,为作业的每个段分配一个连续的主存空间,但段可以是不连续的。在分配存储时,应该为进入主存的每个用户作业建立一个段表。每个段在主存中的情况可以用一个段表来记录,段表指明每个段在主存中的起始地址和长度。同时,分段存储管理系统包括一个作业表,它注册这些作业的段表,每个作业在作业表中都有一个注册项。
段表条目实际上充当基址/长度受限的寄存器。当执行作业时,可以通过段表将逻辑地址转换成物理地址。由于每个作业都有自己的段表,所以地址转换要根据自己的段表进行。与分页内存类似,分段内存也有一个段表控制寄存器,用于存储当前占用处理器的作业的段表的起始地址和长度。
为了保证cpu在执行指令时能够正确访问存储单元,需要在运行时将用户程序中的逻辑地址转换成机器直接寻址的物理地址。这个过程称为地址映射。
地址映射的最小单位是4k大小的1页,因此最小l
现代存储器的容量太大,比如256m,而电脑的数据线往往只有16位、32位或64位(目前很少使用)。他们能找到的最大地址空间是2^16(64k)、2^32(4m)或2^64(16t),所以内存通常采用逐页存储。也就是说,内存空间被分成几个段,或者
例如在8086系统中,8086使用一个20位的线性地址来唯一标识一个存储单元,即每个存储单元都有一个唯一的20位地址,称为该单元的物理地址或绝对地址。
8086在内部结构和编程中使用逻辑段管理内存,形成逻辑地址。它的表达是"段基址:偏移地址"。
逻辑地址段基址:偏移地址
段基址-逻辑段在主存中的起始位置,简称段地址。由于8086规定一个段从模16地址开始,所以0的低4位省略,不显式表示,所以段基址可以用16位数据表示。
offs:0100h1380h:0f00h。
物理地址14700h
所以对于主存14700h单位,我们可以描述为1460h(或1380h)段中的100h(或f00h)单位,或者主存1460h:0100h(或1380h:0f00h)单位。
一年前