操作系统之基本分页存储管理方式

时间:2014.07.18

地点:基地

---------------------------------------------------------------------------

一、连续分配方式缺点

连续分配方式的主要缺点是会形成许多碎片,尽管我们可以通过紧凑的方法将碎片拼接成可用的大块空间,但这样须付出很大的开销。

---------------------------------------------------------------------------

二、离散分配方式

离散分配方式思想:将进程直接分散地装入到许多不相邻接的分区中。

1.如果离散分配的基本单位是页——>分页存储管理方式

2.如果离散分配的基本但是是段——>分段存储管理方式

基本的分页存储管理方式不具备页面对换功能,也不支持实现虚拟存储器功能,它需要把每个作业全部装入内存后才能运行。

---------------------------------------------------------------------------

三、页面

分页存储管理是将一个进程的逻辑地址空间划分为若干个大小相等的片,这些片称之为页面,并编号第0页,第1页....同时,我们还把内存空间也划分为与页面大小相同的若干个存储块,称为块或叶框,也进行编号0#,1#.....之后我们为进程分配内存时,即是将进程的若干个页分别映射装入到可以不相邻的块中去。由于这里进程的最后一页往往装不满块而会形成不可利用的碎片,我们称之为页内碎片。

---------------------------------------------------------------------------

四、页面大小

很明显,页面大小过小可使得内存碎片变小,减少内存碎片总空间,提高内存利用率,但缺点是:每个进程由此会占用更多页面,导致进程页表过长,占用大量内存(页表也是要耗费内存的),而且还降低了页面切换的效率。

而页面过大,可以减少页表长度,提高页面切换效率,但内存碎片增大。

在页面大小选择适中,一般为2的幂,通常为512B~8KB

---------------------------------------------------------------------------

五、页面地址结构

页号(P)+位移量(W)

位移量W也称呼为页内地址,对于特定机器,其页面地址结构时确定的,给定逻辑地址空间中的地址A,页面大小L,则页号P=int(A/L)

页内地址W=A%L

比如:系统页面大小为1KB,A=2170B,可得

页号P=A/L=2170/1024=2

页内地址=A%L=122

---------------------------------------------------------------------------

六、页表

在分页系统里,允许将进程各个页面离散存储在内存的不同物理块中,为了保证进程的正常运行,需要能在内存中找到每个页面所对应的物理块,于是系统得为进程建立一张页面映像表,以方便查找页面对应的地址,这张表叫做页表,进程地址空间内的所有页(0~n)都将通过页表映射到块号,进程执行时,只要通过查找页表,就可知道每页在内存中的物理块号。总的一句说来:页表的作用就是实现从页号到物理块号的地址映射。

---------------------------------------------------------------------------

七、一道网易笔试题

对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少。

解答:首先0X0005F123这个地址对应的十进制是:389411B

其次页面大小8KB对应8*1024B=8192B

于是页号P=A/L=47页

页内偏移W=A%L=4387=0X00001123

操作系统之基本分页存储管理方式

时间: 2024-12-20 13:26:58

操作系统之基本分页存储管理方式的相关文章

操作系统基本分页存储管理方式

操作系统基本分页存储管理方式 连续分配内存方式会形成许多"碎片",通过紧凑的方式将碎片拼接成一块大的空间,但是拼接过程系统开销太大.如果允许将一个进程直接分散地装入到许多不相邻的分区中,那么就不需要再进行"紧凑".基于这一思想而产生了离散分配方式.如果离散分配的基本单位是页,则称为分页存储管理方式:如果离散分配的基本单位是段,则称为分段存储管理方式. 在分页管理方式中,如果不具备页面对换功能(将处于阻塞状态且优先级低的进程对换到外存),则称为基本的分页存储管理方式,

操作系统——请求调页存储管理方式的各种模拟

1.设计目的 通过对页面.页表.地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解. 2.设计内容 1)假设每个页面中可存放10条指令,分配给作业的内存块数为4. 2)用c语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存.在模拟过程中,如果所访问的指令已在内存,则显示其物理地址,并转下一条指令.如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存.如果4个内存块均已装入该作业,则需进行页面置

内存管理-基本分页管理方式

在存储器管理中,连续分配方式会形成许多"碎片",虽然可通过"紧凑"方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销.如果允许将一个进程直接分散地装入到许多不相邻的分区中,则无须再进行"紧凑".基于这一思想而产生了离散分配方式.如果离散分配的基本单位是页,则称为分页存储管理方式.在分页存储管理方式中,如果不具备页面对换功能,则称为基本分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后

操作系统基本分段存储管理方式

操作系统基本分段存储管理方式 引入分段存储管理方式的目的:满足程序员在编程和使用上多方面的要求.这种存储管理方式已经成为当今所有存储管理方式的基础. 1.分段存储管理方式的引入 主要满足用户和程序员以下需求: 1).方便编程 用户把自己的作业按照逻辑管理划分为若干段,每个段都是从0开始编址,并有自己的名字和长度.因此,希望要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的. LOAD1,[A] | <D>;//将分段A中D单元内的值读入寄存器1 STORE1,[B] | <C

分页式存储管理方式AND请求分页式存储管理

先说下什么是页(页面):就是将用户的程序的的地址空间分成固定大小的区域,称为”页“,或者”页面“ 之后将这些页离散的放进内存中,这样解决了内存的碎片问题 记得老师上课说了下这两个概念不能混,现在区分下: 在第4章存储器管理,学习了分页式存储管理方式(是为了解决内存的碎片问题) 在第5章虚拟存储器,学习了请求分页式管理方式(除了解决碎片问题外,又“扩充”了内存的大小(虚拟)) 在这里为了使得固定数目的内存来运行较多的进程,增加了调页功能和页面置换功能. (在这可以看书或者笔记上的例题更好理解) 请

【操作系统总结】存储器管理-程序的装入与连接,连续分配存储管理方式

程序的装入与连接 程序要经过编译,链接,装入才能运行 绝对转入方式 将程序装入事先指定的地址,程序装入以后逻辑地址与实际内存地址相同.要求程序员非常熟悉内存地址 可重定位方式 根据内存的具体情况将程序装入适当的位置,把装入时对程序和数据的地址修改过程称为重定位. 动态运行时的装入方式 程序对换的时候内存是改变的 可重定位不允许程序运行时在内存中移动位置.动态运行时的装入程序在把装入模块装入内存后,并不立即把装入模块转换程物理地址,而是吧这中地址转换推迟到程序真正要求执行时进行. 程序的链接 静态

常见的分页实现方式

1.MySql查询语句: --------  select * from t_student limit 0,10   从第一条开始查,查十条 2.PostgreSQL查询语句: select * form t_student limit 10 offset 0 3.Oracle查询语句 select * from ( select s.*, rownum rn from (select * from t_student) s where rownum<=10 ) where rn>=1; 4

SQL两种简单分页查询方式

以前我们或许都用过了linq的skip and take方式进行分页查询,但是很少自己写sql的分页查询,因为大多数时候,我们都是在调用别人的方法. 最近看到一个文档,感觉方法里面实现的分页查询进入数据库调用的时候,实际最底层调用的还是SQL的分页查询,例如,我们用linq写个分页查询,转成sql表达式后发现: 实际调用的时候,才发现SQL底层是这样进行分页的. 下面,本文主要是介绍两种SQL的分页查询. 一,TOP方式 ----第一种分页查询方式:TOP方式 declare @page int

python中的字符串编码问题——3.各操作系统下的不同编码方式

各操作系统下的不同编码方式  先看一下 linux,python2.7 >>> B = b'\xc3\x84\xc3\xa8' >>> B.decode('utf-8') u'\xc4\xe8' >>> type(B) <type 'str'> >>>   windows,python2.7,python shell >>> B = b'\xc3\x84\xc3\xa8' >>> B.d