之前软考写写题目,关于地址这里的题目是会写了,但是也仅限于题目会写,于是准备把操作系统系统性的过一遍,然后到了这里的位置有一点疑惑,对逻辑地址作用于分页管理这里有点疑惑,于是就在这里学一下写下心得。
物理地址就是绝对地址,是内存里的实际地址。主要的还是逻辑地址。
逻辑地址
一开始我没搞清楚逻辑地址的性质,就想着这逻辑地址怎么比页面长度还大。后来看清楚了逻辑地址的属性,是页面号+偏移量。逻辑地址是一个整体,假设用32个二进制位表示逻辑地址。页面大小是4KB。
那么00000000000000000000000000000000红色部分就是偏移量,黑色部分就是页码号。
所以要表示0号页面的逻辑空间就是0~1023
00000000000000000000000000000000~00000000000000000000111111111111
表示1号页面的逻辑空间就是1024~2047
00000000000000000001000000000000~00000000000000000001111111111111
逻辑地址与物理地址的转化
逻辑地址到物理地址的转化就是初始值+偏移量。初始值就可以用页面号对应的内存块号 * 页面大小(页面大小等于内存分块大小)。
页 页表 页表项
页:将进程划分的块,对应的大小就叫页面大小。
页框:将内存划分的块。
页和页框二者一一对应,一个页放入一个页框,(理论上)页的大小和页框的大小相等。
页表:就是一个页和页框一一对应的关系表。【存放在内存中】 关系表只是起到一个索引的作用,说白了就是能根据关系表能查到某一个页面和哪一个页框所对应。
页表项是由页号+块号。但是一定要记住,页号其实是不存在的。页表项里存储的只有块号,页号是按顺序的。设每个块号被3个字节存储,该页表在内存中的起始地址为X,则M号页对应的页表项一定是存放在内存地址为X + 3 * M。所以页号就是页表存放的初始地址和页表项长度计算出来的,并非被存储的数值。(这是慢表)
但是快表是有页表号的,不需要计算,所以称之为快表。