段地址机制以及段地址转换触发segmentation falt
推动存储管理方式从固定分区到动态分区分配,进而又发展到分页存储管理方式的主要动力是提高内存利用率。可以实现一个内存用于多个程序同时执行而不会发生地址冲突。
引入分段存储管理方式的目的,则主要是为了满足用户(程序员)在变成和使用上多方面的要求(方便编程、信息共享、信息保护、动态增长、动态链接)。段是内存的逻辑单位,它有一组有意义且相对完整的信息,段的长度不固定个,取决于用户所编写的程序,通常由编译程序划分。
段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问时访问内存中的页表,从中去除该页所载的物理块号,并将该块号与页面地址一起形成指令或数据的物理地址;第三次访问才是真正从上一步所得地址中去除指令或数据。当然实际应用中已经对段页式系统进行了硬件支持,有专门的寄存器等提速设备,可以大大降低实际的访问内存次数。
段错误--段地址变换,在进行地址变换时,系统将逻辑地址中的段号与短标长度TL进行比较,倘若S>TL表示段号太大,就是访问越界,产生越界中断信号;若未越界,则根据段表的始址与该段段号计算出该段对应段表项的位置,从中读出该段在内存的起始地址,然后在检查段内地址d是否超过该段的段长SL,倘若超过,同样产生越界中断。
段错误的最原始含义,但是后面段错误范围应该是更大了
段错误的名字是保留了,但实际当前段错误已远不仅仅是分段机制中的了,至少应该包含了整个内存段页管理机制下的所有检测到的访问越界。
分段也更多是一种历史遗留,实际是已不能够提供太多实际作用的内存管理机制了。