与分页区别-离散分配时分配地址空间的基本单位不同
一、概述
1.分段
将进程地址空间按程序自身逻辑关系划分为若干个段,每个段都有段名,且从0开始编址
逻辑地址=段号(段名)+段内地址(段内偏移量)
程序中的段名会被翻译成对应段号,段内单元会被翻译成段内地址。
2.段表
为找到内存中各逻辑段的存放位置,需为每个进程建立一张段映射表,即段表。
段表=段号+段长+基址(段在内存中的起始位置)
每个段对应一个段表项,各段表项长度相同。
段号也是隐含的,不占存储空间
二、实现地址变换
设置一个段表寄存器存放段表的起始地址和长度,从PCB中取出。
三、分段与分页管理对比
1.页是信息的物理单位,分页主要是为了实现离散分配,提高内存利用率。该过程对用户不可见。
分页的用户进程地址空间是一维的,给出页号即可
2.段是信息的逻辑单位,分段是为了满足用户需求。一个段包含一组逻辑模块信息。该过程对用户可见。
分段的用户进程地址空间是二维的,既要给出段号,也要给出段内地址。
3.分段更容易实现信息的共享和保护。只需让各进程的段表项指向同一个段即可。只有不可修改/不属于临界资源的代码才可以共享。
4.访问逻辑地址的访存次数
分页(单级页表)-第一次访存查内存中的页表,第二次访存访问目标内存单元。
分段-第一次访存查内存中的段表,第二次访存访问目标内存单元。
均可引入快表机构,减少访问次数