1: 页式管理很好的解决了进程代码离散分布内存的问题,页式分配将程序中的逻辑地址分为两部分,低0~12位为页内地址高13~31位为页数。因此,内存中最大页面数为1M。为了维护页面信息,要建立一张页面表,里面包含了页号,块号。还应当设立一个页地址寄存器,用来存放页表地址和页表长度。当进程需要访问数据地址时,通过寄存器进行转换成物理地址。由于页表也存放在内存中,故每进行一次数据的存取都要访问内存两次,这样做使得访问的速度降低了2倍,这非常得不偿失。因此通常将部分页面表存入内存与cpu之间的高速缓存中,每次转换到缓存中查找是否存在该表目,不存在再到内存中查找。这样从快表中查找到的记录几率可达到90%以上,达到了可接受的程度。
缺点:由于现代计算机的逻辑地址空间非常大,每个进程页表的页表数可能占用1M的内存空间,这不现实。
改进方法:将一级页表分为两级页表。将逻辑地址分为三部分:低0~11为页内地址,中12~21为外层页内地址,22~31为外层页地址,这样只需将外层页表装入高速缓存,通过外层页表进行逐级转换。
2: 段式管理将逻辑地址分为两部分,高16为段号,低16位为段内地址。段式管理相比页式管理更加灵活,页式管理由操作系统分配大小,并且固定,且页是信息的物理单位,是操作系统为了管理的需要而不是用户的需求。而段则是信息的逻辑单位,它含有一组意义相对完整的信息。分页的地址是一维的,而分段的地址是二维的。分段管理每个进程也有一个段表,包含了段的基址,段长。在转换成物理地址时,将部分相连的段表信息装入高速缓存,每次通过段寄存器转换时,就从高速cache中查找,若没有找到在从内存中查找完整的段表。
3:段页组合的方式,利用两种管理的优势。将逻辑地址分为三部分,段号---段内页号--页内地址 。再增设一个高速缓存用来存储页表,在转换时同时进行段和页的查询,若不存在,在去内存查询。