操作系统地址转换细节

地址转换        

        虚拟地址转物理地址,CPU根据PID查到当前运行的进程的PCB,将PCB中有关页表的信息(页表始址等)载入页表寄存器。

拓展:

struct PCB{

//进程描述信息

Int PID;

//进程控制和管理信息

//资源分配清单

//cpu相关信息和上下文

指针  页表始址;

}

查页表

        根据页表寄存器得到页表(页表在操作系统内核区),页表项结构:页号、块号、有效位(状态位)、脏位(修改位)、替换控制位(访问字段)、外存地址

拓展:

Struct 页表项{ //页表项本质是结构体

Int 页号;

Int 块号;

Int 状态位;  //有效位

Int 修改位;  //脏位

Int 访问字段; //替换控制

指针 在外存地址;

}

Struct 页表项 页表[10];  //页表本质是数组

        1.没有引入快表:骚图pro 图1 数据7 查到对应表项后,发现有效位为0,因此引发缺页异常(指令引起),于是调页(将数据从外存送入内存),并修改慢表的页表表项,有效位0变1,外存地址设置为调入的物理块的物理地址。cpu再一次运行引发缺页异常的指令。必定在慢表命中

        2.引入快表:骚图pro 图2快表缺失,查慢表(同上)缺失,引发缺页异常(指令引起),于是调页(将数据从外存送入内存),并修改慢表的页表表项,有效位0变1,外存地址设置为调入的物理块的物理地址,同时,修改快表相关表项。cpu再一次运行引发缺页异常的指令。必定在快表命中。

缺页异常的子功能:页面置换

        假设上述过程2,调页时发现内存已经满了,于是利用页面置换算法,从内存置换出一个页(写回外存),并且修改其对应表项

①块号修改为NULL或者不变。

①有效位置0。

③外存地址修改为其对应的外存地址。

而换入的7号页,对应表项的

①块号修改为置换进去的内存的块号(原先8号的块号)。

②有效位置1 。

注:对于快表,只需要知道其也被修改了,但是具体修改细节可以不用掌握,重点掌握慢表的修改细节。

页表变化总结

页表字段

换入

换出

页号

不变

不变

页框号块号

更新为新的物理页框号

清空或保留不变(页面在外存中,不需要物理页框号)

有效位

设为 1,表示页面在内存中

设为 0,表示页面在外存中

脏位

设为 0,表示页面未修改

如果页面被修改,设为 1;否则保持为 0

访问位

重置为 0,表示尚未访问

保持当前状态,可能清除或重置

外存地址

不变

更新为页面在外存中的具体位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值