精华内容
下载资源
问答
  • 2020-05-04 16:20:12

    概括的挺详细的,然后我加上了纯分页系统和请求式分页系统的基本概念,也对有些部分稍作修改

    一、分页存储管理

    1、基本概念(页面和物理块)

        将一个进程的逻辑地址空间划分成若干大小相等的部分,每一部分称为页或页面(页面的大小通常是2的次幂,大约在512B~4MB之间);同样,将内存空间也划分为与页面大小相同的若干个存储块,即物理块或页框。可将用户的任一页放在内存的任一块中,实现离散分配。
    

    2、分页技术地址结构:

    页号P 页内位移d

    设给定逻辑地址为A,页面大小为L

    页号: P=INT[A/L]

    页内位移: d=[A] MOD L

    举例:

    设某系统的页面大小为1KB,A=3456,则P=3;d=384

    3、页表

        在分页系统中,允许将进程的各个页面离散地装入内存的任何空闲块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程设立一张页面映像表,简称页表。在进程空间内的所有页(0~n-1)依次在页表中有一个页表项,其中记载了相应页面在内存中对应的物理块号。页表的作用是实现从页号到物理块号的地址映射。
    

    页号 块号 存储控制(存储控制用于对该存储块中的内容进行保护)

    0 2

    1 15(F)

    2 14(E)

    3 1

    4、地址转换

    (1) 程序执行时,从PCB中取出页表始址和页表长度(4),装入页表寄存器PTR。

    (2)由分页地址变换机构将逻辑地址自动分成页号和页内地址。

    例:11406D=0010|110010001110B=2C8EH

      页号为2,位移量为C8EH=3214D
    

    或11406 DIV 4096=2

     11406  MOD  4096=3214
    

    (3) 将页号与页表长度进行比较(2<4),若页号大于或等于页表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。

    (4)将页表始址与页号和页表长度(页表项所占的内存空间大小,因为计算机是通过计算得到相应的位置,不能一眼看出)的乘积相加,便得到该页表项在页表中的位置。

    (5)取出页描述子得到该页的物理块号。 2 14(E)

    (6) 对该页的存取控制进行检查。

    (7)将物理块号送入物理地址寄存器中,再将有效地址寄存器中的页内地址直接送入物理地址寄存器的块内地址字段中,拼接得到实际的物理地址。

    例:0010|110010001101B

    1110|110010001101B=EC8EH=60558D

    或 14*4096+3214=60558D

    5、快表的地址转换

        页表存放在内存中,使CPU每要存取一个数据,都要两次访问(访问页表,寻找物理块号;访问内存,读写数据);这使计算机的处理速度降低1/2。为提高地址变换速度,可在地址转换机构中增设一个具有并行查寻能力的特殊高速缓冲存储器,又称快表(TLB),用以存放当前访问最频繁的那些少量页表项。
    

    6、纯分页系统

        所谓纯分页系统是指在调度一个作业时,必须把它的所有页一次装入到内存的物理块中,如果当时物理块不足,则该作业必须等待,直到有足够的物理块为止,这时系统可再调度另外的作业
    
        纯分页系统同样有地址转换和快表,和基础分页系统求地址过程差不多
    

    7、请求式分页系统

        是目前常用的一种实现虚拟存储器的方式;基本思想是,作业在运行之前,只把当前需要的一部分页面装入内存,当需要其他页面是,才自动选择一些页交换到辅存,同时调入所需的页到内存中
    

    二、分段存储管理

    1.基本思想

    将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。

    1. 分段存储方式的引入

    方便编程

    分段共享

    分段保护

    动态链接

    动态增长

    1. 分段地址结构

    作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例程序段、数据段等。每个段都从0开始编址,并采用一段连续的地址空间。

    段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间是二维的。

    15 12 11 0

       段号            段内位移量
    

    段号4位,每个作业最多24=16段,表示段号从00001111(24-1);段内位移量12位,212=4k,表示每段的段内地址最大为4K(各段长度不同),从000000000000111111111111

    1. 段表

    段号 段长 起始地址 存取控制

    0 1K 4096

    1 4K 17500

    2 2K 8192

    1. 地址变换

    (1). 程序执行时,从PCB中取出段表始址和段表长度(3),装入段表寄存器。

    (2). 由分段地址变换机构将逻辑地址自动分成段号和段内地址。

    例:7310D=0001|110010001110B=1C8EH

    段号为1,位移量为C8EH=3214D

    (3). 将段号与段表长度进行比较(1<3),若段号大于或等于段表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。

    (4). 将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。

    (5). 取出段描述子得到该段的起始物理地址。1 4K 17500

    (6). 检查段内位移量是否超出该段的段长(3214<4K),若超过,产生越界中断。

    (7). 对该段的存取控制进行检查。

    (8). 将该段基址和段内地址相加,得到实际的物理地址。

    例:0001|110010001101B

    起始地址17500D+段内地址3214D=20714D

    三、分页与分段的主要区别

    分页和分段有许多相似之处,比如两者都不要求作业连续存放.但在概念上两者完全不同,主要表现在以下几个方面:

    (1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.

    (2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.

    (3)分页的作业地址空间是一维的.分段的地址空间是二维的.

    四、段页式存储管理

    1.基本思想:

    分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。

    在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,每段都有自己的段号,然后再将每段分成若干个大小相等的页。对于主存空间也分成大小相等的页,主存的分配以页为单位。

    段页式系统中,作业的地址结构包含三部分的内容:段号 页号 页内位移量

    程序员按照分段系统的地址结构将地址分为段号与段内位移量,地址变换机构将段内位移量分解为页号和页内位移量。

    为实现段页式存储管理,系统应为每个进程设置一个段表,包括每段的段号,该段的页表始址和页表长度。每个段有自己的页表,记录段中的每一页的页号和存放在主存中的物理块号。

    2.地址变换的过程:

    (1)程序执行时,从PCB中取出段表始址和段表长度,装入段表寄存器。

    (2)由地址变换机构将逻辑地址自动分成段号、页号和页内地址。

    (3)将段号与段表长度进行比较,若段号大于或等于段表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。

    (4)将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。

    (5)取出段描述子得到该段的页表始址和页表长度。

    (6)将页号与页表长度进行比较,若页号大于或等于页表长度,则表示本次访问的地址已超越进程的地址空间,产生越界中断。

    (7)将页表始址与页号和页表项长度的乘积相加,便得到该页表项在页表中的位置。

    (8)取出页描述子得到该页的物理块号。

    (9)对该页的存取控制进行检查。

    (10)将物理块号送入物理地址寄存器中,再将有效地址寄存器中的页内地址直接送入物理地址寄存器的块内地址字段中,拼接得到实际的物理地址。

    五、在网上找到了一个比较形象的比喻,挺不错的,呵呵,列出来如下:

    打个比方,比如说你去听课,带了一个纸质笔记本做笔记。笔记本有100张纸,课程有语文、数学、英语三门,对于这个笔记本的使用,为了便于以后复习方便,你可以有两种选择。

    第一种是,你从本子的第一张纸开始用,并且事先在本子上做划分:第2张到第30张纸记语文笔记,第31到60张纸记数学笔记,第61到100张纸记英语笔记,最后在第一张纸做个列表,记录着三门笔记各自的范围。这就是分段管理,第一张纸叫段表。

    第二种是,你从第二张纸开始做笔记,各种课的笔记是连在一起的:第2张纸是数学,第3张是语文,第4张英语……最后呢,你在第一张纸做了一个目录,记录着语文笔记在第3、7、14、15张纸……,数学笔记在第2、6、8、9、11……,英语笔记在第4、5、12……。这就是分页管理,第一张纸叫页表。你要复习哪一门课,就到页表里查寻相关的纸的编号,然后翻到那一页去复习
    六、虚拟内存的置换算法
    1、先进先出页面置换算法

        总是选择在内存中停留最长的页淘汰,即先进入内存的页先被换出内存
    

    2、最佳页面置换算法

        当调入一个新的页面必须预先淘汰某个老页面时,所选择的老页面应是将来不再被使用,或者是在很久以后才被使用的页面。采用这种算法,理论上能保证有最少的缺页率,但无法实现,因为它需要人们预先知道作业整个运行期间的页面走向情况。
    

    3、最近最少使用页面置换算法

        根据页面调入内存后的使用情况,选择最近最少使用的页面予以淘汰。
    

    4、第2此机会页面置换算法

        对最老页面的R位进行检查,如果R位是0,那么这个页既老又没用,可立即被置换掉,如果R位是1,就清除掉这个位,并将该页放到链表的尾端,修改它的装入时间就像刚装入一样
    

    5、时钟页面置换算法

        把所有页面都保存在一个类似时钟表面的环形链表中,用一个指针指向最老的页面。当发生缺页中断时,算法检查指针指向的页面,如果R位是0就淘汰掉这页,并把新页插入这个位置,再把指针前移一个位置;是1,就清除R位并把指针前移一个位置
    
    更多相关内容
  • 本设计通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 (1)从置换算法中任选 2 种(OPT、 FIFO、LRU、Clock);(2)建立页表;(3) 设计的输入数据要能...
  • 这样就以页的方式来管理存储块,就叫分页式存储管理。 在分配存储块时,会根据作业的逻辑地址的大小计算所需要多少个存储块,然后查找空闲块并更新空闲块的状态为占用;回收存储块时,会将作业关联的所有空闲块的...

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

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

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

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

    在这里插入图片描述

    补充

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

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

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

    在这里插入图片描述

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

    展开全文
  • 分区式存储管理最大的缺点是碎片问题严重,内存利用率低。究其原因,主要在于连续分配的限制,即它要求每个作用在内存中必须占一个连续的分区。 如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用...

    分区式存储管理最大的缺点是碎片问题严重,内存利用率低。究其原因,主要在于连续分配的限制,即它要求每个作用在内存中必须占一个连续的分区。

    如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用内存,而无需再进行“紧凑”。

    基于这一思想,产生了“非连续分配方式”,或者称为“离散分配方式”。

    连续分配:为用户进程分配的必须是一个连续的内存空间。

    非连续分配:为用户进程分配的可以是一些分散的内存空间。

    分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。

    分页存储管理分为:实分页存储管理和虚分页存储管理

    一、实分页式存储管理

    实分页式存储最大的优点是内存利用率高,与目前流行的虚分页存储管理相比,具有实现简单,程序运行快的优点。目前,飞速发展的硬件制造技术使得物理内存越来越大,因此我们认为,实分页式存储管理将是一种最有发展前途的存储管理方式。

    Linux内核更多免费文档,面试资料,教程视频加qqun:891587639获取资源

     

    1.1、基本原理

    假设一个大型饭店,所有的客房都是标准的双人间,部分客房已经住进客人,现在又有一个旅游团要求入住。接待员统计了一下,对旅游团领队说:“贵团全体成员都能住下,两人一个房间,但是不能住在同一楼层了,因为每层空着的客房不够,更没有几个挨着的。请原谅!”。对于这样的安排,一般人不会感到奇怪。因为旅游团本来就是由一位位个人或夫妻等组成的,而饭店的客房本来也是两人一间的,两人一组正好可住在一个客房里;另外,饭店几乎每天都有入住的和退房的客人,想在同一楼层找几间挨着的客房实在不容易。

    ①将整个系统的内存空间划分成一系列大小相等的块,每一块称为一个物理块物理页实页页架页帧(frame),可简称为块(block)。所有的块按物理地址递增顺序连续编号为0、1、2、……。
            这里的块相当于饭店的客房,系统对内存分块相当于饭店把大楼所有的客房都设计成标准的双人间。

    ②每个作业的地址空间也划分成一系列与内存块一样大小的块,每一块称为一个逻辑页虚页,也有人叫页面,可简称为页(page)。所有的页按照逻辑地址递增顺序连续编号为0、1、2、……。
               这里,对作业地址空间分页就相当于把旅游团成员分成两人一组。

    ③一个作业,只要它的总页数不大于内存中的可用块数,系统就可以对它实施分配。系统装入作业时,以页为单位分配内存,一页分配一个块,作业所有的页所占的块可以不连续。系统同时为这个作业建立一个页号与块号的对照表,称为页表。
            这就像饭店有个记录客户入住情况的客户登记表一样。另外,饭店安排客户入住是要查看全部客房的使用情况一览表,相应地系统给作业分配内存时要查看主存分配表或者内存块说明表。‘


    ④每个块的大小是固定的,一般是个1/2KB~4KB之间的数值(请读者思考:块尺寸为什么太大或太小都不好),而且必须是个2的幂次。
             对块尺寸这样规定相当于饭店规定客房是双人间。可以设想一下,如果上例中饭店所有的客房都是十人间的话,效益肯定不如全是双人间的好

    实模式下分页存储管理的基本原理:
    操作系统以页框为单位为各个进程分配内存空间。系统自动地将作业的地址空间分页,将系统的主存空间分块,页与块等大小,在作业运行时,一次性把作业的全部页面装入内存,各个页所占的内存块可以不连续,也不必按先后顺序,可以放到不相邻的各个页框中
    这实际是个把作业从地址空间映射到存储空间的过程

    1.2、页表

    页面的划分完全是一种系统硬件的行为,一个逻辑地址放到这种地址结构中,自然就分成了页号和页内单元号两部分。

    页面大小为:4KB

    在分页系统中,允许将作业(进程)的任一页装入到内存中的任一可用的物理块中,但进程的地址空间本来是连续的,若把他分页后装入到不相邻的物理块中,要保证系统仍能正确运行,就要实现从进程的逻辑地址变换为内存的物理地址

    所以,系统为每个进程建立一张页面映射表,简称页表。

    1.3、地址映射

    在系统中设置地址变换机构,能将用户进程地址空间中的逻辑地址变为内存空间中的物理地址。
    由于页面和物理块的大小相等,页内偏移地址和块内偏移地址是相同的。无须进行从页内地址到块内地址的转换。
    地址变换机构的任务,关键是将逻辑地址中的页号转换为内存中的物理块号。物理块号内的偏移地址就是页内偏移地址。
    页表的作用就是从页号到物理块号的转换,所以地址变换的任务借助于页表来完成的。

    如果题目中是用十进制数表示逻辑地址,则:

    例题1:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145,3412转换成内存地址。

    虚地址 3412
        P=3412 % 2048=1

        W=3412 mod 2048=1364
        MA=9*2048+1364=19796
        虚地址3412的内存地址是19796
        

    虚地址 7145
        P=7145 % 2048 =3
        W=7145 mod 2048 =1001
        MA=5*2048+1001=11241
        虚地址7145的内存地址是:11241

    1.4、快表

    因为页表是存放在内存中的,CPU要存取一个数据,需访问主存两次
    第一次:访内存中的页表,找到该页的的物理块号,将此块号与页内地址拼结形成物理地址;
    第二次:真正访问该物理地址,存取其中的内容。
    这样就把程序的执行速度降低一倍。
    为了提高存取速度,在地址变换机构中增设一组寄存器,用来存放访问的那些页表。

    快表是一种访存速度比内存快很多的高速缓冲器。
    把存放在高速缓冲寄存器中的页表叫快表,这个高速缓冲寄存器又叫联想存贮器(TLB)。与此对应,内存中的页表称为慢表。

    当进程访问一页时,系统将页号与快表中的所有项进行并行比较。若访问的页在快表中,即可立即进行地址转换。
    当被访问的页不在快表中时,去内存中查询页表,同时将页表找到的内存块号与虚页号填入快表中

    例题2:

    快表命中率98%,访问时间是10ns,内存访问时间是100ns,平均访问时间?
    平均访问时间=98%*(10+100)+(1-98%)*(10+100+100)

    若快表命中

    联想寄存器检索时间:10ns
    访问内存1次取数据时间:100ns
    取数据总时间:110ns

    若快表中未命中
    联想寄存器检索时间:10ns
    访问内存1次检索页表时间:100ns
    访问内存1次取数据时间:100ns
    取数据总时间:210ns
     

    1.5、两级和多级页表

    现代的大多数计算机系统,都支持非常大的逻辑地址空间(232~264)。页表就变得非常大,要占用相当大的内存空间。可采用两个方法来解决这一问题:

    ① 采用离散分配方式来解决难以找到一块连续的大内存空间的问题:

    ② 只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入。

     

    二级页表如何实现地址变换?

    1.6、页的分配与回收

    用一张“位示图”构成主存分配表。位示图的每一位与一个主存块对应,其值为0,表示对应的主存块空闲,其值为1,表示对应的主存块已分配。

    位示图优点是占用内存空间小,可常驻内存,加快分配进程,但缺点是不够直观。

    内存分配过程:

    计算一个作业所需要的总块数N
    查位示图,看看是否还有N个空闲块
    如果有足够的空闲块,则页表长度设为N,可填入PCB中;申请页表区,把页表始址填入PCB
    依次分配N个空闲块,将块号和页号填入页表
    修改位示图

    1.7、存在的问题

    为每个进程配置一张页表,进程逻辑空间非常大,带来的问题?

    可以引入Inverted page tables(反置页表)
    反置页表 – 按物理块号排序
     IBM RT; HP Spectrum…
    反置页表很大,使用Hash表加快检索
    所有在内存中的并发进程只有一张页表
    除了Hash表,联想寄存器也被用来存放最近使用过的页表项

    1.8、分页存储管理方案的评价

    优点:
        较好地解决了碎片问题
        打破了存储分配的连续性要求
        提高了主存的利用率

    缺点
    页内碎片
    动态地址变换、方案实施需耗用额外的系统资源
    存储扩充问题没有解决——作业大小受到限制,可用块数小于作业需求时需等待

    二、虚拟存储器(Virtual Memory)

    2.1、局部性原理(principle of locality)

    指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。还可以表现为:
    时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内;
    空间局部性:当前指令和邻近的几条指令,当前访问的数据和邻近的数据都集中在一个较小区域内。

    局部性原理的具体体现:
    程序在执行时,大部分是顺序执行的指令,少部分是转移和过程调用指令。
    过程调用的嵌套深度一般不超过5,因此执行的范围不超过这组嵌套的过程。
    程序中存在相当多的循环结构,它们由少量指令组成,而被多次执行。
    程序中存在相当多对一定数据结构的操作,如数组操作,往往局限在较小范围内。

    2.2、引入虚拟存储技术的好处

    大程序:可在较小的可用内存中执行较大的用户程序;
    大的用户空间:提供给用户可用的虚拟内存空间通常大于物理内存(real memory)
    并发:可在内存中容纳更多程序并发执行;
    易于开发:与覆盖技术比较,不必影响编程时的程序结构

    2.3、虚拟存储技术的特征

    不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续(数据段和栈段之间的空闲空间,共享段和动态链接库占用的空间)
    部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的;
    大空间:通过物理内存和快速外存相结合,提供大范围的虚拟地址空间

    2.4、虚拟存储技术的种类

    虚拟页式
    虚拟段式
    虚拟段页式

    三、虚拟页式(virtual paging)存储管理

    3.1、基本原理

    系统自动地将作业的地址空间分页,将系统的主存空间分块,页与块等大小,在作业运行前,只把初始需要的一部分页面装入内存块里,运行中需要访问自己地址空间中的但当前不在内存的页面时产生缺页中断,由缺页中断服务程序将所需的页面调入内存,若此时内存中没有空闲物理块安置请求调入的新页面,则系统按预定的置换策略自动选择一个或一些在内存的页面,把它们换出到外存。

    虚拟页式存储管理实际是实分页技术与虚拟存储技术相结合的产物,其分页思想与实分页是一样的。

    这里的请求调入和置换功能都是比实分页存储管理增加的内容,是实现虚拟存储的主要功能。

    为实现虚拟页式存储管理:
    需要置换技术、请求装入技术和大硬盘支持,另外:
    页表表目需要增加外存块号、状态位、访问位或访问字段、修改位、存取控制字段等。
    外存块号指出该页在外存的地址,供调入该页时用;
    状态位指示该页是否在内存;
    访问位或访问字段则是该页被访问过的标志或被访问过的次数;
    修改位表示该页是否被修改过;
    存取控制字段则是用来限制页面被安全共享的。


    作业1在请求分页系统中的存储映像

    当执行 “mov r1,[2120]”时
    CPU产生的虚地址为2120
    分页机构得 p=2,w=72(每页1K)
    查页表。该页中断位i=1,发生缺页中断 

    如主存中有空白块,直接调入
    如主存中无空白块,则需淘汰该作业在主存中的一页

    3.2、主存页面分配策略

    在虚拟页式存储管理中,内存分配似实分页方式,但还必须考虑解决下面两个问题:
    (1)是否对各进程采用平均分配策略?
    (2)发生缺页中断时,如何为所缺的页面分配内存?
     
    对问题(2)有一下几种做法:

    a、平均分配。

    b、按进程长度比例分配。

    c、按进程优先级分配。

    d、按进程长度和优先级别分配。

    对问题(2)主要有一下两种做法:

    a、固定分配局部置换。

    b、可变分配全局置换。

    3.3、页面调入策略

    (1)请求调入
    当发生页面故障时进行调度,即当进程访问不在内存的页面引发缺页中断时,由系统根据这种访问请求把所缺页面装入内存。
    优点:由请求调入策略装入的页一定会被访问,再加之比较容易实现,故在目前的虚拟存储器中,大多采用此策略。
    缺点:每次仅调入一页,增加了磁盘I/O的启动频率。

    ( 2)预调入
    =>也称先行调度,即一页面被访问前就已经预先置入内存,以减少今后的缺页率。
    =>主要适于进程的许多页存放在外存的连续区域中的情况。有的系统结合请求调入使用,即每次缺页时装入多个页面。
    优点:提高调页的I/O效率。
    缺点:基于预测,若调入的页在以后很少被访问,则效率低。常用于程序装入时的调页。
     

    调入页面的来源:

    通常对外存交换区的I/O效率比文件区的高。
    进程装入时,将其全部页面复制到交换区,以后总是从交换区调入。执行时调入速度快,要求交换区空间较大。
    凡是未被修改的页面,都直接从文件区读入,而被置换时不需调出;已被修改的页面,被置换时需调出到交换区,以后从交换区调入。

    存储分配的安全性考虑:
    把一个页面分配给进程之前,先要清除页面中的数据(如全部填充为0),以免该进程读取前一进程遗留在页面中的数据;

    3.4、页面调度算法

    由缺页中断服务程序将所需的页面调入内存,若此时内存中没有空闲物理块安置请求调入的新页面,则系统按预定的策略自动选择一个(请求调入策略)或一些(预调入策略)在内存的页面,把它们换出到外存。

    a、什么是淘汰策略(置换策略)?

     用来选择淘汰哪一页的规则就叫做置换策略,或称淘汰算法。如何决定淘汰哪一页?根据页面在系统中的表现(如:使用的频繁程度、进入系统时间的长短)

    b、颠簸
    颠簸(thrashing),又称为“抖动”。
    简单地说,导致系统效率急剧下降的主存和辅存之间的频繁页面置换现像称为“抖动”。
    现象?淘汰的页面恰好是不久又要访问的页面。

    (1)最佳淘汰算法——OPT(Optimal)
    这是Belady贝莱迪于1966年提出的一种理论上的算法。该算法每次都淘汰以后永不使用的,或者过最长的时间后才会被访问的页面。
    显然,采用这种算法会保证最低的缺页率,但它是无法实现的,因为它必须知道页面“将来”的访问情况。不过,该算法仍有一定意义,可作为衡量其他算法优劣的一个标准

    假定系统为某个进程分配了三个物理块,进程的访问顺序为7,0,1,2,0,3,0,4,2,3,0,3,2,1,2

    采用OPT淘汰算法:

    (2)先进先出淘汰算法——FIFO
    这是最早出现的淘汰算法。
    总是淘汰最先进入内存的页面。它实现简单,只需把进程中已调入内存的页面,按先后次序链成一个队列,并设置一个所谓的替换指针,使它总是指向内存中最老的页面
    缺点:效率不高,因为它与进程实际的运行规律不相适应,比如常用的全局变量所在的页面或者循环体所在页面都可能被它选为淘汰对象。出现bleady现象。

    页面进入主存的先后次序:
    2->4->5->1

     
    当要调入第6页时:
    置换第2页
    将第2页改为6
    替换指针指向第4页4->5->1->6

    Belady现象:采用FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多,缺页率反而提高的异常现象。
    Belady现象的描述:一个进程P要访问M个页,OS分配N个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(S,N)。当N增大时,PE(S, N)时而增大,时而减小。
    Belady现象的原因:FIFO算法的置换特征与进程访问内存的动态特征是非常不一致的,即被置换的页面通常并不是进程不会访问的

    采用FIFO淘汰算法:

    (3) 最近最久未使用算法(LRU, Least Recently Used)

    根据页面调入内存后的使用情况,选择内存中最久未使用的页面被置换。这是局部性原理的合理近似,性能接近最佳算法。
    OPT算法使用页面将要被访问的时间,LRU算法使用页面最后一次被访问的时间。二者唯一的差别是:OPT是向前看的,而LRU是向后看的。
    下面给出LRU的实现算法:
    a、计时法:对于每一页面增设一个访问时间计时器,每当一个页面被访问时,当时的绝对时钟内容被拷贝到对应的访问时间计时器中,这样系统记录了内存中所有页面最后一次被访问的时间。淘汰时,选取访问时间计时器的值最小的页面。
    b、堆栈法:每当进程访问某页面时,便将该页面的页号从栈中移出,将它压入栈顶。栈顶始终是最新被访问的页面的编号。栈底则是最近最久未被使用的页面的页面号。
    c、多位寄存器法
    为每页设置一个R位的寄存器
    每次访问一页时,将该页所对应的寄存器最左位置1
    每隔时间间隔T,所有寄存器右移一位。
    选择R值最小的页淘汰。
    例如,r寄存器共有四位,页面P0、P1、P2在T1、T2、T3时刻的r寄存器内容如下:
         页面                              时刻
                                 T1            T2           T3      
         P0                 1000        0100        1010
         P1                 1000        1100        0110
         P2                 0000       1000         0100

    给某作业分配了三块主存,该作业依次访问的页号为:4,3,0,4,1,1,2,3,2。当访问这些页时,页面淘汰序列变化情况如下

    LRU的开销是很大的,必须有硬件的支持,完全由软件实现其速度至少会减少10倍,因此LRU近似算法更实用些

    (4)二次机会淘汰算法——SC(Second Chance)淘汰算法
    这是一种LRU的近似算法,是通过对FIFO算法进行简单改造,结合页表中的访问位而得来一种淘汰算法。
    该算法首先检查位于FIFO链链首的页,如果它的访问位为0,则选择该页淘汰;如果它的访问位为1,则清除其访问位,将它移至FIFO链的链尾,重复此算法的查找过程,直至遇到新链首页是一个访问位为0的较早进入内存的页为止,把它选为被淘汰的页。

    为每一个存储块(存储分块表)或页面(页表)设立一个引用位。
    当访问某页时,就将该页引用位置1
    页面管理软件周期性地(设周期为T)将所有引用位重新置0
    在T内,被访问过的页面引用位为1,否则为0
    选择引用位为0的页面淘汰。

    (5)时钟(Clock)淘汰算法
    二次机会淘汰算法缺点:就是需要把访问位为1的处于链首的页移至链尾,这需要一定的开销。
    改进的方法:就是把进程所访问的页面链成一个环形链表,再设一个指针指向最老的页面,于是形成了一种简单实用的LRU近似算法——时钟淘汰算法。
    该算法首先检测指针所指的页面,如果它的访问位为0,则淘汰该页,新装入的页插入到此位置,然后指针前进一个位置;如果它的访问位为1,则清除为0,并将指针前进一个位置,继续检查访问位。重复此过程,直到找到访问位为0的页面为止。

    访问页号727
    引发缺页
     

     

    (6)最近未用淘汰算法——NRU(Not Used Recently)淘汰算法
    它把FIFO算法的思想与页面的访问位和修改位结合起来确定一个接近LRU算法的淘汰对象。
    该算法每次都尽量选择最近最久未被写过的页面淘汰,这种干净的页面可以不被写回到磁盘。在实现时,为每一个页面设置初始值0的访问位和修改位。当对某页面执行写操作时,其修改位和访问位均由硬件置成1;当对某页面执行读操作时,只有其访问位被硬件置成1。系统每隔固定时间将所有访问位都清0。

    按照下列次序选择被淘汰的页面:
    ①访问位=0,修改位=0;直接淘汰;
    ②访问位=0,修改位=1;写回外存后淘汰;
    ③访问位=1,修改位=0;直接淘汰;
    ④访问位=1,修改位=1;写回外存后淘汰;

    页面请求序列为:2,3,2,1,5,2,4,5,3,2,5,2
    内存分配3块
    用OPT、LRU、FIFO、Clock算法写出页面置换过程

    时钟clock算法中的箭头是当前指针的位置!

    3.5、影响缺页中断率的因素  

    (1)页面调度算法不合理
    抖动又叫颠簸,是指一段时间里,页面在内存与外存之间频繁地调度或换入换出,以至于系统用于调度页面所需要的时间比进程实际运行所占用的时间还要多。
    显然,抖动是由于缺页中断率很高而引起的一种坏现象,它将严重影响系统的效率,甚至可能使系统全面崩溃。
    (2)分配给作业的内存块数太少
    作业的缺页中断率与作业所占内存块数成反比。分配给作业的内存块数太少是导致抖动现象发生的最主要的原因,实验分析表明:对所有的程序来说,要使其有效地工作,它在内存中的页面数不应少于它的总页面数的一半。
    (3)页面大小的选择不合理
    虽然缺页中断率与页面尺寸成反比,但页面尺寸却不能一味地求大,它一般在0.5KB~4KB之间,是个实验统计值。因为页面大时,页表较小,占空间少,查表速度快,缺页中断次数少,但页面调度时间长,页内碎片较大。页面小时,恰恰相反。
    (4)用户程序编制的方法不合适
    作业的缺页中断率与程序的局部化(包括时间局部化和空间局部化)程度成反比。用户程序编制的方法不合适可能导致程序运行的时空复杂度高,缺页次数多。

    需要进一步了解,可以点下方链接,一元试听vip课程,赶快行动起来吧!
     http:// https://ke.qq.com/course/2705727?flowToken=1041141

     

    展开全文
  • 存储器管理之分页存储管理

    千次阅读 2021-10-07 14:19:23
    分页存储管理系统的思想被提出了。 分页,是把主存存储空间按大小一定的块划分,称为物理块,或页框。同时按同样的尺寸去划分作业的地址空间,形成一个个相等的页面,称为逻辑页或虚页。因此,作业可以按页为单位,...

    引入

    在动态分区的存储空间中,常常引入了“零头”问题。尽管采用“紧凑”技术可以解决这个问题,但要为移动大量信息花去不少的处理机时间,代价较高。分页存储管理系统的思想被提出了。
    分页,是把主存存储空间按大小一定的块划分,称为物理块,或页框。同时按同样的尺寸去划分作业的地址空间,形成一个个相等的页面,称为逻辑页或虚页。因此,作业可以按页为单位,零散地放在主存的不连续的页框中。
    在这里插入图片描述

    如上图所示,作业的各个页面与页框的对应,就是通过页表来实现。
    页面(page):在分页式系统中,把作业的地址空间划分成若干个大小相等的区域,例如一个区为1KB,称这样的每个区为页面或者简称页。页的大小通常在 512B~4KB范围。相应地,也需将主存空间划分为若干个大小相等的物理块,并使块与页的大小相同,这样,在将用户程序装入内存时,刚好一块中放页。
    页面映射表(page map table):简称页表。其中列出了作业的逻辑地址与其在主存中 的物理地址间的对应关系。一个页表中包含若干个表目,表目的内容是对应于用户程序中的页号,表目中 的最基本内容是该页所对应的物理块号。

    页表

    页表列出了作业的逻辑地址与其在主存中的物理地址间的对应关系。一个页表中包含若干个表目,表目的自然序号对应于用户程序中的页号,表目中的最基本内容是该页对应的物理块号。
    在这里插入图片描述
    页表的每一个表目除了包含指向页 框的指针外,还包括一个存取控制字段。 这个表目也称为页描述字。

    控制寄存器

    系统中每个装入内存的作业都有一张页表。各页表的起始地址都不同。为了方便查找页表表项,系统还设立了一个“控制寄存器”。(格式如下)控制寄存器存放CPU正在处理的作业所对应页表的起始地址以及该作业的页数。
    在这里插入图片描述
    如上例,CPU正在处理的作业共有3页,该作业的页表起址为1000。

    作业登记表

    在这里插入图片描述
    例:简述作业J1的页表定位过程。
    在这里插入图片描述
    作业被调度放进内存时,分页系统把该作业分成3页,建立页表,并把页表起址1000以及页数3写进系统的作业登记表中。
    系统调度J1执行时,从系统的作业登记表中读取页表起址(1000)和页数(3)写到控制寄存器。这样,J1的页表位置就确定了。

    纯分页存储管理

    又称静态页式管理,它的特点是系统若能满足一个作业所要求的全部块数,此作业才能被装入内存;否则,不为它分配任何内存。简单地说:要么全部调入,要么全部不调入

    ⑴地址变换

    在这里插入图片描述
    例如:简述指令 LOAD 10,2500 的地址变换过程。 说明:把10写进第 2500内存单元。

    ⑵变换过程

    第1步:把虚拟地址2500转换成页号P=2,位移量W=452;(这一步完全由硬件完成)
    第2步:如果页号2大于页表大小,则中断;否则继续;
    第3步:页号2与页表起址1000运算(1000+2*20,设页描述子大小为20)得到页描述子地址为1040;
    第4步:从页描述子中读取块号8;
    第5步:根据页描述子的“存取控制”判断该指令是否被允许访问内存,如果不允许,则中 断;否则继续;
    第6步:块号8与位移量452运算(8×1024+452=9644,1024为页面大小)得到物理地址9644 (这一步与①相反,完全由软件完成)
    第7步:把数字1写进内存地址9644单元中。

    快表

    如果把页表放在主存中,无疑会影响系统的性能。这是因为每次访问主存,首先必须访问页表,读出页描述字,之后根据页表形成的实际地址再访问主存,这样使访问主存的次数加倍,因而使总的处理速度明显下降。
    为了解决这个问题人们采用一组硬件寄存器,存放当前访问页的页描述子,此硬件寄存器即超高速缓存,称为“快表”。
    基地址转换过程如下图所示。
    在这里插入图片描述
    每次访问主存时,首先查找快表,若找到所需的页描述子,则快速形成物理地址。否则从页表中查找后形成物理地 址,同时把页描述子写入快表 。如果设计得当,快表的命中率可以很高。
    欢迎大家加我微信交流讨论(请备注csdn上添加)
    在这里插入图片描述

    展开全文
  • 通过实现一个操作系统的内存管理的模拟系统,观察内存空闲分区管理、内存分配和回收过程,了解内存管理技术等特点,掌握内存管理中的分配、回收和置换算法,加深对请求调页系统的原理和实现过程的理解。
  • 基本分页存储管理方式 离散分配内存: 作业规定大小划分成小份;内存也按同样大小划分成小份 作业的任一小份可分散放入内存任意未使用的小份 分页方式下,内存的使用率高,浪费少。但不是绝对没有碎片(进程的最后一...
  • 分页存储管理和分段存储管理 一、实验目的 加深对分页存储管理方式和分段存储管理方式的理解,特别是要掌握地址转换的方法。 二、实验原理 分页存储管理方式 页面:将一个进程的逻辑地址空间分成若干个大小相等的片...
  • os 虚拟存储器 请求分页存储管理方式
  • 操作系统简单分页存储管理(含代码)

    千次阅读 多人点赞 2019-05-19 01:03:39
    分页存储管理方式中,如果不具备页面置换功能,则称为基本的分页存储管理方式,或称为纯分页存储管理方式,它不具备支持虚拟存储器的功能,显示一次性的特征。本实验通过程序模拟操作系统的基本分页存储管理方式...
  • 本实验通过程序模拟操作系统的基本分页存储管理方式,进一步理解这一内存分配方式的原理和特点,加深对理论知识的掌握。
  • 目录页式存储管理段式存储管理分页和分段存储管理的主要区别段页式存储管理 页式存储管理 1. 基本原理 页式存储管理是把主存储器划分成大小相等的...分页式存储管理把主存空间划分成若干块,以块为单位进行主存空间的
  • 要求学生通过编写和调试请求页式的内存分配和回收、进程的地址转换过程的模拟程序以加强对地址转换过程的了解,通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面...
  • 虚拟存储实现思路在实际运行过程,把有关作业的全部信息都装入主存储器后,作业执行时实际上不是同时使用全部信息的,有些部分运行一遍便再也不用,甚至有些部分在作业执行的整个过程中都不会被使用到(如错误处理部分...
  • 分页存储管理方式

    万次阅读 2018-12-05 18:28:54
    段页式存储管理 二.基本分页存储管理 离散分配内存: 作业规定大小划分成小份;内存也按同样大小划分成小份 作业的任一小份可分散放入内存任意未使用的小份 1)页面的概念 内存划分成多个小单元,每个单元K...
  • 操作系统——分页式内存管理

    万次阅读 多人点赞 2017-08-27 18:50:41
    操作系统——分页式内存管理为什么要引入内存管理?答:多道程序并发执行,共享的不仅仅只有处理器,还有内存,并发执行不过不进行内存管理,必将会导致内存中数据的混乱,以至于限制了进程的并发执行。扩充内存的两...
  • C语言模拟实现虚拟存储管理(请求分页存储管理

    千次阅读 多人点赞 2020-06-25 23:19:08
    本实验的目的是:通过编程模拟实现请求分页存储管理中硬件地址转换过程、缺页中断处理过程,以及先进先出页面置换算法,加深对页式虚拟存储管理的理解,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换方法...
  • 1. 请求分页存储管理方式 请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储器功能,而增加了请求调页功能和页面置换功能。 相应地,每次调入和换出的基本单位都是长度固定的页面。因此,请求分页便称为...
  • 操作系统 请求分页存储管理

    千次阅读 2020-12-22 13:06:04
    请求分页存储管理中的页表机制 缺页中断机构 地址转换 页置换算法 页分配和页置换策略 工作集及抖动现象的消除 请求分页存储管理的优缺点 请求分页存储管理中的页表机制 系统需要解决的问题 系统如何获知进程当前...
  • 分段式内存管理 在段式存储管理中,将程序的地址空间划分为若干个段(segment),这样每个进程有一个二维的地址空间。在前面所介绍的动态分区分配方式中,系统为整个进程分配一个连续的内存空间。而在段式存储管理...
  • 分页式、分段式和段页式存储2.1 分页式存储2.2 分段式存储2.3 段页式存储 1. 进程虚拟空间 在32位的操作系统下,总共有32根地址线(32字节),而每根地址线只能表示两种电信号,即0:低电频,1:高电频,因此对应到...
  • 1 基本分页存储管理 连续分配:为用户进程分配的必须是一个连续的内存空间。 非连续分配:为用户进程分配的可以是一些分散的内存空间。 1.1 什么是分页存储 将内存空间分为一个个大小相等的分区(比如:每个分区4KB...
  • 一. 分页存储管理 1.基本思想 ...页式存储管理将内存空间划分成等长的若干物理块,成为物理页面也成为物理块,每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称作物理页号。 2) 逻...
  • 操作系统的分区分页与分段内存管理 计算存储的层次结构: 当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等...
  • 1、 多道程序技术的特点 2、 程序、进程、线程的区别 3、 生产者-消费者问题的同步...6、 在分页式存储管理中,什么叫快表,说明其工作原理和过程,画出具有快表的地址变换机构。 7、 系统抖动 8、 临界资源和临界区
  • 首先创建页面链指针数据结构,并设计页面映像表,采用数组的方法给定页面映像。 申请缓冲区,将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称做页面或页。每页都有一个编号,叫做页号,页号从0开始...
  • 2020/4/27 在家的网课,无聊,记录一下分页,分段,段页式存储笔记 昨天刚学了分页存储,听得我一脸懵逼,好在课下花了很长时间才弄懂。 1 分页存储管理 1.分页存储管理方式 分页存储管理是解决存储碎片的一种方法...
  • 计算存储的层次结构: 当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数...
  • 一般有两种方式,第一种是连续分配存储管理方式,即用户程序“整个儿”地放入内存空间中,单一连续分配、固定分区分配和动态分区分配都属于这种存储管理方式。但是连续分配的方式有很多缺点,比如产生大量的内部碎片...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,335
精华内容 8,534
关键字:

分页式存储管理的特点是