当前位置:首页 » 服务存储 » 知道页号怎么算存储块号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

知道页号怎么算存储块号

发布时间: 2023-04-21 20:53:02

① (操作系统)已知页号怎么求块号(怎么对应快表,看不懂,求大神了)

物理地址 (physical address): 放在寻址总线上的地址。放在寻址总线上,如果是读,电路根据这个地址每位的值就将相应地址的物理内存中的数据放到数据总线中传输。如果是写,电路根据这个 地址每位的值就将相应地址的物理内存中放入数据总线上的内容。物理内存是以字节(8位)为单位编址的。
虚拟地址 (virtual address): 4G虚拟地址空间中的地址,程序中使用的都是虚拟地址。
如果CPU寄存器中的分页标志位被设置,那么执行内存操作的机器指令时,CPU会自动根据页目录和页表中的信息,把虚拟地址转换成物理地址,完成该指令。 比如 mov eax,004227b8h ,这是把地址004227b8h处的值赋给寄存器的汇编代码,004227b8这个地址就是虚拟址。CPU在执行这行代码时,发现寄存器中的分页标志位已 经被设定,就自动完成虚拟地址到物理地址的转换,使用物理地址取出值,完成指令。对于Intel CPU 来说,分页标志位是寄存器CR0的第31位,为1表示使用分页,为0表示不使用分页。对于初始化之后的 Win2k 我们观察 CR0 ,发现第31位为1。表明Win2k是使用分页的。
使用了分页机制之后,4G的地址空间被分成了固定大小的页,每一页或者被映射到物理内存,或者被映射到硬盘上的交换文件中,或者没有映射任何东西。对于一 般程序来说,4G的地址空间,只有一小部分映射了物理内存,大片大片的部分是没有映射任何东西。物理内存也被分页,来映射地址空间。对于32bit的 Win2k,页的大小是4K字节。CPU用来把虚拟地址转换成物理地址的信息存放在叫做页目录和页表的结构里。
物理内存分页,一个物理页的大小为4K字节,第0个物理页从物理地址 0x00000000 处开始。由于页的大小为4KB,就是0x1000字节,所以第1页从物理地址 0x00001000 处开始。第2页从物理地址 0x00002000 处开始。可以看到由于页的大小是4KB,所以只需要32bit的地址中高20bit来寻址物理页。
页表,一个页表的大小为4K字节,放在一个物理页中。由1024个4字节的页表项组成。页表项的大小为4个字节(32bit),所以一个页表中有1024 个页表项。页表中的每一项的内容(每项4个字节,32bit)高20bit用来放一个物理页的物理地址,低12bit放着一些标志。
页目录,一个页目录大小为4K字节,放在一个物理页中。由1024个4字节的页目录项组成。页目录项的大小为4个字节(32bit),所以一个页目录中有 1024个页目录项。页目录中的每一项的内容(每项4个字节)高20bit用来放一个页表(页表放在一个物理页中)的物理地址,低12bit放着一些标 志。
对于x86系统,页目录的物理地址放在CPU的CR3寄存器中。
CPU把虚拟地址转换成物理地址:
一个虚拟地址,大小4个字节(32bit),包含着找到物理地址的信息,分为3个部分:第22位到第31位这10位(最高10位)是页目录中的索引,第 12位到第21位这10位是页表中的索引,第0位到第11位这12位(低12位)是页内偏移。对于一个要转换成物理地址的虚拟地址,CPU首先根据CR3 中的值,找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项 (PDE,page directory entry),页目录项中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表 中相应的页表项(PTE,page table entry),页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚 拟地址所对应的物理地址。
一个页目录有1024项,虚拟地址最高的10bit刚好可以索引1024项(2的10次方等于1024)。一个页表也有1024项,虚拟地址中间部分的 10bit,刚好索引1024项。虚拟地址最低的12bit(2的12次方等于4096),作为页内偏移,刚好可以索引4KB,也就是一个物理页中的每个 字节。
一个虚拟地址转换成物理地址的计算过程就是,处理器通过CR3找到当前页目录所在物理页,取虚拟地址的高10bit,然后把这10bit右移2bit(因 为每个页目录项4个字节长,右移2bit相当于乘4)得到在该页中的地址,取出该地址处PDE(4个字节),就找到了该虚拟地址对应页表所在物理页,取虚 拟地址第12位到第21位这10位,然后把这10bit右移2bit(因为每个页表项4个字节长,右移2bit相当于乘4)得到在该页中的地址,取出该地 址处的PTE(4个字节),就找到了该虚拟地址对应物理页的地址,最后加上12bit的页内偏移得到了物理地址。

② 页式存储计算

地址寄存器24位,页号14位,那么页面大小就用10位来描述(24-14)。2的14次冥就是16K,即主存可划分为16K个页。2的10次冥就是1K,即每个页面大小为1K。

③ 计算机操作系统 分页存储 用十六进制怎么解这道题啊分析不大懂

每个页面大小为1kB,也就是400h B。
首拦好帆先计算块号:0A5Dh / 400h = 2,因此逻辑页号为2,对应的物理块号为4,相应的起始地址为4 * 400h = 1000h。
其次计算块袜悔内简雹偏移:0A5Dh % 400h = 25Dh,因此相对偏移为25Dh。
1000h + 25Dh = 125Dh

网络嫌我字数不够

④ 问一道操作系统某请求分页存储管理系统题

页的大小为2K —> 1 0000 0000 0000(对应的二闹雹进制),则页内地址为11位
5678 —> 10 11000101110(对应的二进制),则后11位为页内地址1582(11000101110对应的十进制)。前两位(10)为页号(2)对应的块号为4,块内地址为块号*块大小+ 页内地址,即4*1024+1582,其中1024为块大小巧宏2K。
不知道你明液宽帆白了没?

⑤ 操作系统,页号,页面号和块号怎么区别 页面号是不是就是块号

页号是进程的每页的标号,从0到n顺序排列。页面号是操作系统分配的,每个页号对应一个页面号。

⑥ 页储存管理中,已知一个逻辑地址长度为16位,页面大小为4096B,地址为2F6AH,怎么知道这个地址的页号啊

页面大小4096B,那页内需要12位才能表示,逻辑地址16位,也就是4位页地址加12位页内偏移地址组成,那16位逻辑地址中前面的4位就是页号。
想要求出物理地址,那还需要页表,根据页号查找对应的页表,页表存放是的页号对应的物理页地址,物理地址就是物理页地址加上页内偏移。

⑦ 操作系统问题(页式存储管理问题)

1.5000B约等于4.88KB 每个页面有2KB 所以占用3个页面
页表
页号 块号
0
3
1
7
2
9
2.页内地址为11位【块内地址(也叫块内位移)长度与页内地址相等 也是11位】 则每页大小为2^11=2KB 逻辑地址长16位 所以页号有16-11=5位 那么最多有2^5=32页

你给的逻辑地址4500应该是十进制数 转换成二进制即
1000110010100 (数一下 总共13位)
后面11位是页内地址 那么页号就是前面的两位了 是10 也就是二进制的2
那么根据页表 对应的块号是9 转换成二进制即1001 即块号是1001 而块内地址是逻辑地址的页内地址(4500的后11位)
那么物理地址是1001+00110010100(这里+表示连接 而不是逻辑加)
即100100110010100 转换成十进制就是18836 十六进制就是4994

多加点分

⑧ 基本分页存储管理

  阅读前请先阅读 内存管理基础 。从本文开始就介绍不连续分配的几种方式,本文主要介绍基本分页存储管理。

  假设进程A的大小为23MB,但是每个分区的大小只有10MB,如果进程只能占用一个分区,显然是放不下的。
  解决思路:如果允许进程占用多个分区,那么可以把进程拆分成 10MB + 10MB + 3MB三个部分 ,再把这三个部分别放在三个分区中(这些分区不要求连续).....

  将内存空间分为一个个大小相等的分区(如每个分区4KB,每个分区就是一个 “页框” ,或称 “内存块” “物理块” 。每个页框有一个编号,即 “页框号” ,或 “内存块号” “物理块号” ,页框号 从0开始 )。将用户进程的地址空间也分为与页框大小相等的一个个区域,称为 页面 。页框的大小不能太大,否则可能会产生过大的内存碎片。
  操作系统 以页框为单位为各个进程分配内存空间。 进程的每个页面分别放入一个页框中,即进程的 页面和内存的页框 一一对应 的关系。

  进程分页后,进程的各个页面可以放在不连续的页框中,所以如何实现逻辑地址到物理的地址的转换?
  如下图,将下面的进程分页,假设每页大小为50B,那么就分为4个页面。

  手动计算方法:
   页号 = 逻辑地址 / 页面长度(取整数部分)。
   页内偏移量 = 逻辑地址 % 页面长度
   页面在内存中的起始位置 :操作系统需要用某种数据结构记录进程各个页面的起始位置。
  对于计算机,通常将 页面的大小划分为2的整数次幂 。假设用32个二进制位表示逻辑地址,页面大小为取2 12 B = 4096B = 4KB。

  如逻辑地址2,用二进制表示00000000 00000000 0000 0000 00000010 ,前24位二进制对应的十进制值就是逻辑地址2对应的页号,即0号页,而后12二进制位对应的十进制值就是偏移量。如果0号页在内存中的起始地址为X,那么逻辑地址2对应的物理地址就是 X + 2.
  同理,逻辑地址4097,用二进制表示00000000 00000000 0001 0000 00000001 ,前24位二进制对应的十进制值就是逻辑地址4097对应的页号,即1号页,而后12二进制位对应的十进制值就是偏移量。如果0号页在内存中的起始地址为Y,那么逻辑地址4097对应的物理地址就是 Y + 1.
  结论: 如果每个页面的大小为2 k B,用二进制表示逻辑地址,则末尾的K位表示页内偏移量,其余部分就是页号。
  因此,如果让 每个页面的大小为2的整数次幂, 计算机就可以很方便的得出一个逻辑地址对应的页号和页内偏移量。
  如果一个页面的大小为2KB,那分页存储管理的逻辑地址结构为:

  地址结构包括两个部分:前一个部分表示页号,后一个部分表示页内偏移量W。

  在知道如何计算页号和偏移量后,要计算实际的物理地址,还需要知道页号在内存中的起始地址,如何知道每个页面在内存中存放的位置——操作系统要为 每个进程建立一张页表。

  按照之前的方法计算出逻辑地址所对应的页号N,然后根据页表区查询实际的内存块号M,由于每个内存块号的大小都是相等的,所以实际地址 = M * 内存块大小 + 偏移量。

  在实际上,页表中是没有页号的,那怎么找到实际对应的内存块号呢?
  假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该占用多少字节?

  各页表项会 按顺序连续地 存放在内存中,如果该页表在内存中存放的地址为X,则M号页对应的页表项存放的地址为:X + M * 3B
  因此,页表的页号可以是隐含的。只需要知道 页表存放的起始地址 页表项长度 ,即可找到各个页号对应的页表项存放的位置,找到位置后就可以读取该位置的值,即实际内存块号。
  举个例子,如果按照逻辑地址计算出了偏移量为20,页号为1,页表中的页号是隐藏的,那么根据页表在内存中的起始地址20(假设的值),以及页表项长度3B,那么页号为1所对应的实际内存块号的值所在的地址就是:20 + 3 * 1 = 23的位置,然后在该位置的值,该值就是实际内存块号,如果是4的话,那么实际地址就是: 4 * 页面大小(4096B) + 20 = 16404。

  基本地址变换结构可以借助进程的页表将逻辑地址转换为物理地址。
  通常在系统中设置一个 页表寄存器(PTR Page-Table Register) ,存放 页表在内存中起始地址F 页表长度M
  进程在未执行时,页表的起址和页表长度放在 进程控制块(PCB)中 ,当进程被调度时,操作系统内核会把它们放在页表寄存器中。

  逻辑地址到物理地址变换的过程:

  比较页表长度,页表项长度和页面大小三个概念:

  在分页存储管理(页式管理)系统中,只要确定了每个页面的大小,逻辑地址结构就确定了。因此, 页式管理中地址是一维的。 即只要给出一个逻辑地址,系统就可以自动算出页号、页内偏移量两个部分,并不需要显示告系统这个逻辑地址中,页内偏移量占多少位。
  基本地址变换结构需要访问两次内存: 第一次访问内存查找页表;第二次访问物理内存对应的内存单元。

  对于上图,会很频繁地访问10号块中的指令、23号块。
   时间局部性 :如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行:如果某个数据被访问过,不久之后该数据很有可能再次被访问。(因此程序中存在大量循环)。
   空间局限性 :一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的。如上面的数组,每次循环一次都会访问邻近的下一个元素地址)。
  在基本地址变换机构中,每次访问一个逻辑地址,都需要查询内幕才能中的页表。由于局部性原理,可能连续很多次查找到的都是一个页表项。既然如此,就可以利用这个特性减少访问页表的次数——快表。

   快表 ,又称 联想寄存器(TLB) ,是一种 访问速度比内存快很多 的高速缓冲存储器,用来存储当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为 慢表。
  快表的地址包换过程:
  (1) CPU给出逻辑地址,由某个硬件算得页号、页内偏移量,将页号与快表中的所有页号进行比较。
  (2) 如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出该页对应的内存块号,再根据内存块号中与页内偏移量算地物理地址。最后访问该物理地址对应的内存单元。因此如果快表命中,则访问某个逻辑地址只需 一次 访问内存即可。
  (3) 如果没有找到匹配的页号,则就需要访问页表,需要两次访问内存,在第一次访问内存查询得到页号后,需要将页号添加到快表中,以便后面再次被访问。如果快表已满,则必须按照一定的算法对旧的页表项进行替换。
  由于查询快表比查询页表的速度快很多,因此只要快表命中,就可以节省很多时间。因为局部性原理,一般来说快表的命中率可以达到90%以上。

⑨ (存储管理)01.分页式存储管理

将内存划分为若干个大小相等的分区,叫做块;将逻辑空间划分出与块大小一致的分区,叫做页。作业运行时,通过地址重定位技术,实现页与块的对应。这样就以页的方式来管理存储块,就叫分页式存储管理。

在分配存储块时,会根据作业的逻辑地址的大小计算所需要多少个存储块,然后查找空闲块并更新空闲块的状态为占用;回收存储块时,会将作业关联的所有空闲块的状态设置为空闲。记录空闲块状态的方法有两种:位图法和链表法。

在分配存储块之后,就在页表中,增加页和块对应关系的记录;同理,回收存储块时,就会删除对应记录。

访问存储块时,就会根据逻辑地址的页号,在页表找到对应的块号,然后再通过块号计算出物理地址,找到对应的存储块。如下图:

补充

页表:记录页号与块号对应关系的表,包含页号和块号两个字段。

逻辑地址:由 “页号” 和 “页内地址” 组成。其中页内地址是通过页大小来决定。

例如:逻辑地址长度为 16 位,页大小是 1kb (二的十次幂),那么页内地址占低十位,高六位是页号。如下:

在重定位存储块时,需要访问页表。为了加快重定位,就会通过快表(联想存储器,记录常用的页号和块号的对应关系)来快速通过页号找到对应的块号。但是如果不能通过快表找到对应的块号,那么就会按照查找页表的方式来完成重定位。

⑩ 操作系统,页号,页面号和块号怎么区别 页面号是不是就是块号

1、页和块的对象不同:页是对逻辑地址进行分页存储,块是对实际地址进行分块存储。

2、页号是虚拟地址的划分,敬巧指向程序中的某一页,每个页号对应一个亮哗键页面号。

3、块号是实际地址的划分,指向内存空间中某一个物理块。

4、页面号不是块号。



(10)知道页号怎么算存储块号扩展阅读

分页存储

1、分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。

2、相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。

3、在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。

分段存储

1、在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等。

2、每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。

3、段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。

参考芦培文献:网络-存储管理