㈠ 操作系统,页号,页面号和块号怎么区别 页面号是不是就是块号
1、页和块的对象不同:页是对逻辑地址进行分页存储,块是对实际地址进行分块存储。
2、页号是虚拟地址的划分,敬巧指向程序中的某一页,每个页号对应一个亮哗键页面号。
3、块号是实际地址的划分,指向内存空间中某一个物理块。
4、页面号不是块号。
(1)分页存储系统页号扩展阅读
分页存储
1、分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。
2、相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。
3、在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。
分段存储
1、在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等。
2、每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。
3、段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。
参考芦培文献:网络-存储管理
㈡ 请教下,操作系统里分页存储的页框和页号有什么区别啊
假设你要运行一个4MB的游戏,为了方便易懂,不妨把这个游戏叫做扫雷。
现在是2021年,早已是大内存时代,16GB的内存已经司空见惯。
但是现在我们假设我们的内存并不大,只有16MB。
你的游戏本来存储在硬盘中,操作系统划分了一部分硬盘中的区域,假设是16MB,和内存构成了一个看起来比较大的存储器,总共32MB。
但其实你没这么大的空间。
操作系统按照事先定好的页面大小(这里假设是1MB)把你的游戏分割成了4MB/1MB=4页。
未调入内存中运行,在虚拟存储系统中,你总共有4页,这4页,就叫页号。
操作系统把真正的内存空间,16MB,也按页划分,总共有16页,现在可以分给你的扫雷用的,有2页。
你的扫雷运行时,并不是时时刻刻都需要4MB的完整数据,假如你正在玩第一关,你就只需要前面的数据。
按照这样的思想,就可以先调入你刚刚分好的4页中的前2页,进入内存,这样你的扫雷就可以跑了,也不需要占据太多空间,导致别的程序用不了。
而被调入的2页,占了真正内存中的2页,内存中的页,就叫页框。
当你需要用到本来4页中的第2页中的某个数据时,他已经在内存中了,你可以随时用。
但如果你要用第3页的里的某个数据,他不在内存,只能先从硬盘中调入第3页到内存中分配给你的2个页框中的某一个,再访问这个数据。
这个就叫缺页。
为了区分说的页是内存中的页,还是虚拟存储系统中的页,就有了两个叫法。
那为什么要这么干呢?因为你需要同时做很多事情。
你需要玩扫雷,还要挂着迅雷,同时上着QQ聊天,可能还用着网易云听歌。
如果扫雷、迅雷、QQ、网易云全部调入主存,很多数据是用不着的。
比如你在玩扫雷第三关,你并不需要第一关的数据。
那全都调入,就很浪费内存。需要调入,不需要调出,这样,你的程序能跑,而且还能跑很多个。
你的存储器看起来比原来大了,因为你本来的内存是无法同时跑这4个程序,现在靠着这个假的存储器就可以了,这个所谓假的存储器就叫虚拟存储器。
㈢ (存储管理)01.分页式存储管理
将内存划分为若干个大小相等的分区,叫做块;将逻辑空间划分出与块大小一致的分区,叫做页。作业运行时,通过地址重定位技术,实现页与块的对应。这样就以页的方式来管理存储块,就叫分页式存储管理。
在分配存储块时,会根据作业的逻辑地址的大小计算所需要多少个存储块,然后查找空闲块并更新空闲块的状态为占用;回收存储块时,会将作业关联的所有空闲块的状态设置为空闲。记录空闲块状态的方法有两种:位图法和链表法。
在分配存储块之后,就在页表中,增加页和块对应关系的记录;同理,回收存储块时,就会删除对应记录。
访问存储块时,就会根据逻辑地址的页号,在页表找到对应的块号,然后再通过块号计算出物理地址,找到对应的存储块。如下图:
补充
页表:记录页号与块号对应关系的表,包含页号和块号两个字段。
逻辑地址:由 “页号” 和 “页内地址” 组成。其中页内地址是通过页大小来决定。
例如:逻辑地址长度为 16 位,页大小是 1kb (二的十次幂),那么页内地址占低十位,高六位是页号。如下:
在重定位存储块时,需要访问页表。为了加快重定位,就会通过快表(联想存储器,记录常用的页号和块号的对应关系)来快速通过页号找到对应的块号。但是如果不能通过快表找到对应的块号,那么就会按照查找页表的方式来完成重定位。
㈣ 基本分页存储管理
假设是按字节编址
考虑支持多道程序的两种连续分配方式
原因:连续分配要求进程占有的必须是一块连续的内存区域
能否讲一个进程分散地装入到许多不相邻的分区,便可充分利用内存
基本分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分
页框/页帧:内存空间分成的一个个大小相等的分区(比如4KB)
页框号:页框的编号,从0开始,从低地址开始
页/页面:用户进程的地址空间分为和页框大小相等的一个个区域
页号:页/页面的编号,从0开始
进程的最后一个页面可能没有一个页框那么大,页框不能太大,否则可能产生过大的内部碎片
操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中,也就是说,进程的页面与内存的页框有一一对应的关系
每个页面不必连续存放,也不必按照先后顺序,可以放到不相邻的各个页框中
进程在内存中连续存放时,通过动态重定位实现逻辑地址到物理地址的转换。在装入模块之后,内存中指令使用的依然是逻辑地址,直到指令执行的时候才会进行地址转换。系统会设置一个重定位寄存器,用来存放装入模块存放的起始位置,重定位寄存器中的值加上逻辑地址就是该逻辑地址实际对应的物理地址
如果采用分页技术
页框大小为4KB,地址空间为4GB的系统
页号为前20位,页内偏移量为后12位
页表:为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表
一个进程对应一张页表
进程的每一页对应一个页表项
每个页表项由页号和页框号组成
页表记录进程页面和实际存放的页框之间的对应关系
每个页表项的长度是相同的,页号是隐含的
各页表项会按顺序连续存放在内存中,如果该页表在内存中的起始地址是X,4GB/4KB系统的页框有
用于实现逻辑地址到物理地址转换的一组硬件机构
通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M(M个页表项)
进程未执行时,页表的起始地址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把他们放到页表寄存器中
基本分页存储管理中地址是一维的,即只要给出一个逻辑地址,系统就可以自动计算出页号、偏移量,不需要显式告诉系统偏移量是多少
理论上,页表项长度为3即可表示内存块号的范围,但是为了方便页表查询,会让页面恰好能装得下整数个页表项,令每个页表项占4字节
4KB页面,可以放4096/3 =1365个页表项,有4096%3 =1B的碎片,访问1365及之后的页表项时,还要考虑前面的页框中的碎片,才能得到页表项的物理地址,比较麻烦
进程页表通常存放在连续的页框中,这样就能用统一的计算方式得到想要得到的页表项存储的位置
地址变换过程中有两次访存操作:查询页表、访问目标内存单元
局部性原理
如果这个程序将程序对应的指令存放在10号内存块,将程序中定义的变量存放在23号内存块,当这个程序执行时,会很频繁地反问10、23号内存块
时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能被再次执行;如果某个数据被访问过,不久之后该数据很有可能再次被访问(因为程序存在大量循环)
空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问(因为很多数据在内存中连续存放)
基本地址变换机构中,每次要访问一个逻辑地址,都要查询页表,由于局部性原理,可能连续多次查询同一个页表项
快表:又称联想寄存器(TLB),是一种访问速度比内存块很多的高速缓存,用来存放当前访问的若干页表项,以加速地址变换的过程。内存中的页表常称为慢表
引入快表后地址的变换过程
一般来说,快表的命中率可以达到90%以上
单级页表存在的问题
对问题1
可将页表进行分组,使每个内存块刚好可以放入一个分组。为离散分配的页表再建立一张页表,称为页目录表,或外层页表
各级页表的大小不能超过一个页面
针对两级页表
对问题2
可以在需要访问页面时,才把页面调入内存(虚拟存储技术),可以在页表项中增加一个标志位,用于表示该页面是否已经调入内存
若想访问的页面不在内存中,会产生缺页中断(内中断),然后将目标页面从外存调入内存
之后的文章会有展开
两级页表访存次数分析:如果没有TLB,第一次访存是访问内存中的页目录表,第二次访存是访问内存中的二级页表,第三次访存是访问目标内存单元
㈤ 分页式存储器的地址分成页号和页内地址两部分,但它仍是线性地址.为什么
分页式存储管理的基本原理:采用分页存储器允许把一个作业存放到若干不相邻的分区中,既可免去移动信息的工作,又可尽量减少主存的碎片。分页式存储管理的基本原理如下: 1、 页框:物理地址分成大小相等的许多区,每个区称为一块