最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

操作系统 内存管理 分区 分页 分段

互联网 admin 1浏览 0评论

操作系统 内存管理 分区 分页 分段

                                    内存管理 分区 分页 分段

我们知道进程运行的话需要记载在内存中,并占用处理及来执行程序。那么计算机是怎么对内存进行分配和管理的?

首先操作系统把内存分区。每个区里又分页,每个页里又分表。

整个操作系统把内存切分区,我们平常运行的软件都在用户区里分配空间。

程序在加载的时候会给用户分配空间,分配空间的大小取决于进程的大小。进程小的话可以一两个页就够,大的话就需要分配多

的页。分配的页也不是连续的,可能给某个进程分配的页是不连续性的。例如分配到了1,3,5,6页。那么怎么根据页的逻辑地

址去找到对应的实际物理存储位置呢?

比如有16位的页地址对用16位的物理地址。

页的地址的高四位是对应的物理地址的块,低十二位是对应物理地址的偏移量。

所以当有一个逻辑地址送过来的时候。可以把这个串分割,前四位查出来的数去页表寄存器查找对一个物理块的哪个地址,

再与后八位拼接形成实际的物理地址。

那么逻辑地址为2f6a的实际地址对应的物理地址就是bf6a

注意:分割出的前四位是相对位置,这是根据页表首地址寄存器得出的。然后得到2号页号。

2对应的b是根据页表寄存器中查询的。这种对应关系通过硬件就可以实现,效率会很高。

需要注意的是,当表有很多的时候,每次查表都会访问一次页表寄存器,为了节省开销,会有一个名字叫快表的寄存器。

这个寄存器的作用是,当需要查页号对应的物理块的时候,先来这里查,如果存在直接返回,不存在则去页表寄存器里查,然后

更新到这个快表里。这样再次查找的时候就会提高很多性能。这个快表类似于cache缓存,所以存储的内容肯定不会很多。

得到对应的物理地址,就可以进行读写操作了。当我们分的页比较多的时候,可能所有页分配给进程还不够,所以需要有二级

页表,通过访问页表寄存器得到外层页表的页号,根据页表寄存器得到对应的的偏移地址是内存页表的页号,再根据页号访问

页表寄存器得到物理块。也可以在各个有页表寄存器的地方加快表减小开销。

简单分页的特点:

1:分页的内容少,产生的碎片少。

2:一个进程可以占有多个分页。

3:占用多个分页不需要连续。充分利用空闲分页。

分段也是类似的实现,

段和段之间不需要连续。每个段和物理地址之间有一个映射关系,叫做段表。类似于页表。段表中记录了段的基址和段长。

访问段表的时候先查看是否大于该段的长度,如果大于则越界。访问

失败。如果小于,则用该段的始址加上段内地址得到对应的物理地址。

分页和分段的区别:

1:页是信息的物理单位,为了方便管理内存。对于用户来说是透明的。段是信息的逻辑单位,分段是逻辑的要求。对用户是可

见的

2:页的大小是固定的,是由操作系统设计的。段的大小是不固定的,是由用户程序本身决定的。

3:分页的地址空间是一维的,分段的地址空间是二维的。

 

操作系统 内存管理 分区 分页 分段

                                    内存管理 分区 分页 分段

我们知道进程运行的话需要记载在内存中,并占用处理及来执行程序。那么计算机是怎么对内存进行分配和管理的?

首先操作系统把内存分区。每个区里又分页,每个页里又分表。

整个操作系统把内存切分区,我们平常运行的软件都在用户区里分配空间。

程序在加载的时候会给用户分配空间,分配空间的大小取决于进程的大小。进程小的话可以一两个页就够,大的话就需要分配多

的页。分配的页也不是连续的,可能给某个进程分配的页是不连续性的。例如分配到了1,3,5,6页。那么怎么根据页的逻辑地

址去找到对应的实际物理存储位置呢?

比如有16位的页地址对用16位的物理地址。

页的地址的高四位是对应的物理地址的块,低十二位是对应物理地址的偏移量。

所以当有一个逻辑地址送过来的时候。可以把这个串分割,前四位查出来的数去页表寄存器查找对一个物理块的哪个地址,

再与后八位拼接形成实际的物理地址。

那么逻辑地址为2f6a的实际地址对应的物理地址就是bf6a

注意:分割出的前四位是相对位置,这是根据页表首地址寄存器得出的。然后得到2号页号。

2对应的b是根据页表寄存器中查询的。这种对应关系通过硬件就可以实现,效率会很高。

需要注意的是,当表有很多的时候,每次查表都会访问一次页表寄存器,为了节省开销,会有一个名字叫快表的寄存器。

这个寄存器的作用是,当需要查页号对应的物理块的时候,先来这里查,如果存在直接返回,不存在则去页表寄存器里查,然后

更新到这个快表里。这样再次查找的时候就会提高很多性能。这个快表类似于cache缓存,所以存储的内容肯定不会很多。

得到对应的物理地址,就可以进行读写操作了。当我们分的页比较多的时候,可能所有页分配给进程还不够,所以需要有二级

页表,通过访问页表寄存器得到外层页表的页号,根据页表寄存器得到对应的的偏移地址是内存页表的页号,再根据页号访问

页表寄存器得到物理块。也可以在各个有页表寄存器的地方加快表减小开销。

简单分页的特点:

1:分页的内容少,产生的碎片少。

2:一个进程可以占有多个分页。

3:占用多个分页不需要连续。充分利用空闲分页。

分段也是类似的实现,

段和段之间不需要连续。每个段和物理地址之间有一个映射关系,叫做段表。类似于页表。段表中记录了段的基址和段长。

访问段表的时候先查看是否大于该段的长度,如果大于则越界。访问

失败。如果小于,则用该段的始址加上段内地址得到对应的物理地址。

分页和分段的区别:

1:页是信息的物理单位,为了方便管理内存。对于用户来说是透明的。段是信息的逻辑单位,分段是逻辑的要求。对用户是可

见的

2:页的大小是固定的,是由操作系统设计的。段的大小是不固定的,是由用户程序本身决定的。

3:分页的地址空间是一维的,分段的地址空间是二维的。

 

发布评论

评论列表 (0)

  1. 暂无评论