首页 第4章 存储器的管理课件文本

第4章 存储器的管理课件文本

举报
开通vip

第4章 存储器的管理课件文本null第4章 存储器管理 第4章 存储器管理 本章学习目标 本章主要讲解了存储器管理的基本方式,剖析了Linux 操作系统对内存的管理模式。通过对本章学习,读者应该达到以下学习目标: 重点掌握本章的基本概念,分页式存储管理技术和分段式存储管理技术,虚拟存储器的概念。 理解段页式存储管理技术,虚存中的置换算法。 了解Linux操作系统的存储管理技术。第4章 存储器管理*教学内容教学内容4.1 存储器管理概述 4.2 连续分配存储管理方式 4.3 分页存储管理方式 4.4 分段存储管理方式...

第4章 存储器的管理课件文本
null第4章 存储器管理 第4章 存储器管理 本章学习目标 本章主要讲解了存储器管理的基本方式,剖析了Linux 操作系统对内存的管理模式。通过对本章学习,读者应该达到以下学习目标: 重点掌握本章的基本概念,分页式存储管理技术和分段式存储管理技术,虚拟存储器的概念。 理解段页式存储管理技术,虚存中的置换算法。 了解Linux操作系统的存储管理技术。第4章 存储器管理*教学内容教学内容4.1 存储器管理概述 4.2 连续分配存储管理方式 4.3 分页存储管理方式 4.4 分段存储管理方式 4.5 虚拟存储器的基本概念 4.6 请求分页 4.7 请求分段存储管理 4.8 LINUX系统的内存管理方法 本章小结 *4.1 存储器管理概述 4.1 存储器管理概述 4.1.1 存储器的层次 图4.1所示就是存储器的体系结构。第4章 存储器管理*第4章 存储器管理4.1.2 用户程序的处理过程用户程序处理分以下几个阶段: (1)编译。由编译程序将用户源代码编译成若干个目标模块。 (2)链接。有链接程序将编译后形成的目标代码以及它们所需的库函数,链接在一起,形成一个装入模块。 (3)装入。有装入程序将装入模块装入内存。 处理过程示意图见4.2第4章 存储器管理*第4章 存储器管理第4章 存储器管理*1.目标程序装入内存的方式 1.目标程序装入内存的方式 程序只有装入到内存后才能运行。装入方式分绝对装入方式、可重定位装入方式和动态运行时装入方式。 (1)绝对装入方式 在编译时,如果知道程序将驻留在内存什么位置,那么编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。装入模块被装入内存后,不须对程序和数据的地址进行修改,程序中所使用的绝对地址,即可以在编译或汇编中给出,也可以有程序员直接给予。一般不让程序员给予地址,通常情况是在程序中采用符号地址,然后在编译或汇编时,将这些符号地址再转化为绝对地址。第4章 存储器管理* (2)可重定位装入方式 又称静态重定位。是在程序执行之前,有操作系统的重定位装入程序完成。一般用于多道程序环境中,编译程序不能预知所编译的目标模块在内存什么地方。重定位程序根据装入程序的内存起始地址,直接修改所涉及到的逻辑地址,将内存的起始地址加上逻辑地址得到正确的内存地址。第4章 存储器管理*第4章 存储器管理第4章 存储器管理*(3)动态运行时的装入方式(3)动态运行时的装入方式 又称动态重定位。是在程序执行期间进行的。一般说来,这种转换有专门的硬件机构来完成,通常采用一个重定位寄存器 ,每次进行存储访问时,对取出的逻辑地址加上重定位寄存器的内容,形成正确的内存地址。如图4.4所示.第4章 存储器管理*第4章 存储器管理第4章 存储器管理*2.目标程序链接2.目标程序链接 链接程序的功能,是将经过编译或汇编后得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现链接的方法有三种:静态链接、装入时动态链接和运行时动态链接。 (1)静态链接 设编译后得到的三个目标模块A、B、C,它们的长度分别为L、M和N。 程序链接示意图如图4.5所示。需要完成的工作是对相对地址进行修改,同时变换外部调用符号,将每个CALL语句改为跳转到某个相对地址,从而形成一个完整的装入模块,又称可执行文件。通常不再拆开,运行时可直接装入内存。这种事先进行链接,以后不再拆开的方式称为静态链接。第4章 存储器管理*第4章 存储器管理(2)装入时动态链接 用户源程序经编译后得到目标模块,是在装入内存时边装入边链接的。即在装入一个目标模块时,若发生一个外部模块调用时,将引起装入程序去找相应的外部目标模块,并将它装入内存。 (3)运行时动态链接 装入时进行的链接虽然可以将整个模块装入到内存的任何地方,但装入摸块的结构是静态的。在程序执行期间装入模块是不可改变的,因为无法预知本次要运行哪个模块,只能将所有可能要运行的模块,在装入时全部链接在一起,使得每次执行的模块都相同。这样效率很低,因此采用运行时动态链接。在这种链接方式中,可将某些目标模块的链接,推迟到执行时才进行。即在执行过程中,若发现一个被调用模块尚未装入内存时,有OS去找该模块,将它装入内存,并把它链接到调用模块上。第4章 存储器管理*第4章 存储器管理第4章 存储器管理*4.2.连续分配存储管理方式 4.2.连续分配存储管理方式 连续分配是指为一个用户程序分配一个连续的内存空间,连续分配有两种:单道程序的连续分配和多道程序的连续分配。多道程序的连续分配又称为分区分配方式,它包括固定分区、动态分区和动态重定位分区三种。下面就是对各种连续存储管理的研究。第4章 存储器管理*4.2.1 单道程序的连续分配4.2.1 单道程序的连续分配 这是一种最简单的存储方式,只能用于单用户、单任务的操作系统。在这种存储方式中,内存分为两个分区:系统区和用户区。 1.系统区。 仅供操作系统使用,一般驻留在低址部分,其中包括中断向量。第4章 存储器管理*第4章 存储器管理2.用户区 操作系统以外的全部空间。其结构图如图4.6所示。第4章 存储器管理*第4章 存储器管理 为了避免用户程序执行时访问了操作系统所占空间,应将用户程序的执行严格控制在用户区域。称之为存储保护,保护措施主要是有硬件实现。硬件提供界地址寄存器和越界检查机构。将操作系统所在空间的下界a存放在界地址寄存器中,用户程序执行时,每访问一次主存,越界检查机构便将访问主存的地址和界地址寄存器的值进行比较,若出界则报地址错。第4章 存储器管理*第4章 存储器管理第4章 存储器管理*4.2.2 固定分区分配方式4.2.2 固定分区分配方式 固定分区管理比较简单,本节仅以举例的方式说明其原理。设一个容量为32k的实际内存,分割成如下若干区域,如图所示。 这种分区分配方式在整个系统运行期间是不变的。在这种情况下,当为一个作业分配空间时,应该先判定它分在哪个区域比较合适,然后再进行分配。第4章 存储器管理*4.2.3 动态分区分配4.2.3 动态分区分配动态分区分配需要解决的问题有三个: (1)分区分配中所用的数据结构。 (2)分区的分配算法。 (3)分区的分配与回收操作。 1.分区分配中的数据结构。 要实现分区分配,系统必须配置相应的数据结构,用来 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 内存的使用情况。为分配提供依据。常用的数据结构有两种:第4章 存储器管理*第4章 存储器管理(1)空闲分区 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 其表的结构如图4.11所示:第4章 存储器管理*(2)空闲分区链(2)空闲分区链 为了实现对空闲分区的分配与链接,在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针:在分区尾部则设置一后向指针;然后形成一个双向链。其结构如图4.12所示。如图4.12 空闲链结构第4章 存储器管理*二、分区分配算法 二、分区分配算法 为把一个新作业装入内存,须按照一定的分配算法,从空闲区表或空闲分区链中,选一个分区分配给该作业,目前常用以下三种分配算法: 1.首次适应算法 此算法可以在上述两种数据结构上实施,但通常要求自由块按始地址从小到大的顺序排序。当须分配空间时,总是从头开始查找,直到找到一个符合要求的自由块。第4章 存储器管理*第4章 存储器管理2.最佳适应法 可以在上述两种数据结构上实施,但要求按自由块从小到大的顺序排序。分配从头开始查找,即从小端到大端的方向查找。直到找到第一个满足要求的自由块。显然,所能找到的自由块能满足要求的最小块。 3.最坏适应算法 数据结构和排序方法如上。当分配空间时不 是从小往大查,而是从大往小查,因此,所找到的自由块是所有自由块中最大者。第4章 存储器管理*三、分区分配和回收三、分区分配和回收在动态分区存储管理方式中,主要操作是分配和回收内存。 1.分配内存 首先,系统利用某钟算法,从空闲区表中找到所需的分区。设请求的分区的大小为u.size,表中每个分区的大小可表为m.size。若m.size-u.size≤size (size是事先规定的不再切割的剩余分区的大小),说明多余部分太小,可不再切割,将整个分区分给请求者;否则,从该分区中划分出与请求的大小相等的内存空间分配出去,余下的部分仍留在空闲分区链或空闲分区表中。最后,将分配的首地址返回给调用者。第4章 存储器管理*2.回收内存2.回收内存 回收分区的主要工作是:首先检查是否有临接的空闲区,如有则合并,使之成为一个连续的空闲区,而不是许多零散的小的部分;之后,修改有关的分区描述信息。一个回收分区邻接空闲区的情况有四种:如图4.13所示。第一种情况是回收分区r上邻的一个空闲区,此时应合并成为一个连续的空闲区,其始址为r上邻的空闲区始址,而大小为二者之和。第二种情况与r下面的空闲区相邻。直接合并。第三种情况是与上下空闲区相邻。将三个区域合并成一个连续的空闲区。第四种情况不和任何空闲区相邻,应建立一个新的空闲区,并加到自由主存队列中。第4章 存储器管理*第4章 存储器管理 图4.13 内存回收时的情况第4章 存储器管理*4.2.4 可重定位分区4.2.4 可重定位分区1.紧凑 在连续分配方式中,必须把一个系统程序或用户程序,装入到连续的内存空间中,如果在系统中若干个小的分区,其总容量大于要装入的程序,但由于它们不相连接,使该程序不能装入内存。例如图4.14(a)所示.,紧凑后如图4.14(b)所示。第4章 存储器管理*第4章 存储器管理第4章 存储器管理*2.动态重定位2.动态重定位 在该方式中,将程序中的相对地址转换为物理地址的工作被推迟到程序指令真正要执行时进行。因此,允许作业在运行过程中移动的技术,必须获得硬件地址变换机构的支持。即在系统增加一个重定位寄存器,用它来装入程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中地址相加而形成的。第4章 存储器管理*第4章 存储器管理第4章 存储器管理*3.动态重定位分区分配算法3.动态重定位分区分配算法 动态重定位分区分配算法,与动态分区分配算法基本相同;差别仅在于:在这种分配算法中,增加了“紧凑”功能,通常是找不到足够大的空闲区来满足用户的需要,进行“紧凑”。然后寻找合适的内存空间。第4章 存储器管理*4.3 分页存储管理方式 4.3 分页存储管理方式 4.3.1页式系统应解决的问题 采用“紧凑”技术解决按区分配中存在的碎片问题,是以花费CPU时间为代价换来的。为了寻找解决碎片问题的新途径,人们很容易想到让程序不连续存放,例如,有一个作业要求投入运行,其程序的地址空间是3KB,而主存当前只有两个各为1KB和2KB的空闲区。显然各空闲区的大小比该程序的地址空间小,而总和却相同。这样就考虑将程序分开存放。放在不相邻的两个区域中。这正是分页的思想。在分页存储管理中,主存被分成一系列的块,程序的地址空间被分成一系列的页面。然后将页面存放在主存块中。为了便于实现动态地址变,一般主存的块和页面大小相等并为2的幂次。第4章 存储器管理*4.3.2分页存储管理的基本方法4.3.2分页存储管理的基本方法一、页面和物理块 在分页存储管理中,将一个进程的逻辑地址空间分成若干个相等的片。称为页面或页。相应的,内存空间也分成与页相同的大小的若干个存储块,或称为物理块或页框。为它们从0开始依次编号。如图4.16所示。为进程分配内存时,以块为单位将进程中若干页分别装入不相接的块中。由于进程的最后一页经常装不满一块,而形成不可利用的碎片称为“页内碎片”。 二、页表 在分页系统中,允许进程的每一页离散地存储在内存的任一物理块中,但系统应能保证进程的正确运行。即能在内存中找到每个页面所对应的物理块。为此系统又为每个进程建立一张页面映象表,简称页表。在进程地址空间的所有页内(0~n),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块。见图的中间部分。可见页表的作用实现了从页号到物理块号的地址映象。即使在简单的分页系统中,也常在页表的表项中设置一存取控制字。用于对存储块中内容进行保护。第4章 存储器管理*第4章 存储器管理图4-16 页表第4章 存储器管理*三、虚地址结构三、虚地址结构 如何利用页表进行地址变换,这和计算机所采用的地址结构有关。而地址结构又与所选择的页面尺寸有关。比如,当CPU给出的虚地址长度为32位,页面的大小为4kb时,在分区系统中的地址格式如图4.17所示。页号页内偏移量 如图4-17 虚地址结构第4章 存储器管理*四、页式地址变换四、页式地址变换 下面图4.18所示作业2程序中的一条指令的执行过程,来说明页式系统中的地址变换过程。程序的地址空间中第100号单元处有一条指令为“ mov r1,[2500]”。这条指令在主存中的实际位置为2148号单元(第2块100号单元),而这条指令要取的数123在程序的地址空间中位于2500号单元(第2页的452号单元)处。它在主存中存于7620号单元(第7块452号单元)。假设页面大小为1kb,机器的地址长度为16位。第4章 存储器管理*第4章 存储器管理图4.18 页式系统地址变换结构第4章 存储器管理*第4章 存储器管理 当作业2的相应进程在CPU上运行时,操作系统负责把该作业的页表在主存中的起始地址(a)送到页表起始地址寄存器中。以便在进程运行中进行地址变换时由它控制找到该作业的页表。 当作业2的程序执行到指令“mov r1,[2500]”时,CPU给出的操作数地址为2500,首先由分页机构自动把它分成两部分,得到页号p=2,页内相对位移w=452。然后,根据页表始址寄存器指示的页表始地址,以页号为索引,找到第2页所对应的块号7。然后,将块号7和页内位移量w拼接在一起,就形成了访问主存的物理地址7620。这正是所取数123所在主存的实际位置。第4章 存储器管理*五、快表五、快表 有一些系统将部分页表放在快速存储器中,其余部仍放在主存中。存放页表部分内容的快速存储器称相联存储器,也称为联想存储器。联想存储器中存放的部分页表称为“快表”。它的格式如图4.19所示。这样的联想存储器一般由8个~16个单元组成。它们用来存放正在运行进程的当前最常用的页号和它相应的块号,并具有进行查找的能力和通常的执行过程一样,只要访问一次主存,就可以取出指令或存取数据。如果所需要查的页号和联想存储器中所有的页号不匹配,则地址变换过程还得通过主存中的页表进行。实采用联想存储器和主存中页表相结合的分页地址变换过程如图4.19所示。 第4章 存储器管理*第4章 存储器管理图4-19 带有快表的分页地址变换第4章 存储器管理*4.3.3 两级和多级页表4.3.3 两级和多级页表一、两级页表 针对难以找到大的存储空间以存放页表的问题,可利用页表进行分页的办法,使每个页面的大小与内存物理块的大小相同,并为它们编号。可以离散地将各个页面分别放在不同的物理块中,同样为每个离散的页面建立一张页表,称为外层页表。在每个页表项中记录物理块号。如图4.20所示。第4章 存储器管理*第4章 存储器管理图4-20 带有快表的分页地址变换第4章 存储器管理*第4章 存储器管理 由图可以看出,在页表的每个表项中存放的是进程的某页在内存中的物理块号,如第0#页存放在1号物理块中,1#页存放在4#物理块中。而在外层页表的每个页表项中,所存放的是某页表分页的首址。如0#页表存放在第1011#物理块中。我们可以利用外层页表和页表这两级页表,来实现从进程的逻辑地址到内存地址的变换。第4章 存储器管理*第4章 存储器管理图4-21 具有两级页表的地址变换机构第4章 存储器管理*第4章 存储器管理 为了地址变换实现,在地址机构中同样需要设置一个外层页表寄存器,用于存放外层页表的始址。并利用逻辑地址的外层页号,作为外层页表的索引。从中找到指定页表分页的首址。再利用P2作为指定页表分页的索引,找到指定的页表项。其中即含有该页在内存中的物理块号。用该块号和页内地址d即可构成访问内存的物理地址。图4.21即为两级页表的地址变换机构。第4章 存储器管理*二、多级页表结构二、多级页表结构 对于32位的机器,采用两级页表的结构是合适的。但对于64位的机器,对于二级页表是否合适,需要简单的 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 。如果页面大小仍采用4KB即212B,那么还剩52位,假定仍按物理块的大小(210位)来划分页表,则将所有剩余的42位用于外层页号。此时在外层页表中可能有4096G个页表项,即使按220位来划分页表。此时,每个页表分页将达1MB;外层页表仍有4G个页表项。要占用16GB的连续内存空间。可见,不论怎样划分,其结果都是不能接受的。第4章 存储器管理*4.4 分段存储管理方式4.4 分段存储管理方式4.4.1分段系统的基本原理 一、分段 在分段存储管理方式中,段是一组逻辑信息集合。例如,把作业按逻辑关系加以组织,划分成若干段,并按这些段来分配内存。这些段是主程序段MAIN,子程序段,数据段,和堆栈段等。 每个段都有自己的名字和长度,为了实现简单,通常用一个段号来代替段名。每个段从0开始编号,并采用一段连续的地址空间,各段长度不同。第4章 存储器管理*第4章 存储器管理 分段系统中的逻辑地址由段号s和段内偏移量w组成。其地址结构如图所示。图4-22分段系统中的地址结构第4章 存储器管理*二、分页和分段的主要区别二、分页和分段的主要区别分页和分段存储管理系统虽然有很多地方相似, (1)页是信息的物理单位,分页是为了实现离散分配,提高内存利用率,便于系统管理;而段是信息的逻辑单位,每一段在逻辑上是相对完整的一组信息,如一个函数,一个过程,一个数组,分段是为了满足用户的需要。 (2)分页式存储管理的作业的地址空间是一维的,地址从0开始编号一直到末尾,而分段式存储管理作业地址空间是二维的,要识别一个地址,除给了段内地址外,还必须给出段号。 (3)页的长度由系统决定,是等长的。而段的长度是由具有相对完整意义上的信息长度决定。第4章 存储器管理*三、基本原理三、基本原理 所谓分段管理,就是管理由若干段组成的作业,并且按分段来进行存储分配,由于分段的作业地址空间是二维的,所以分段的关键在于如何把分段的地址空间变成一维的地址空间。和分业管理一样,可以采用动态重定位技术进行地址转换。起初系统作业建立一张段表,每个表目至少有4个数据:段号,段长,内存始址和存取控制。其中,段长指明段的大小,内存始址指明该段在内存中的位置,存取控制说明对该段访问的限制(RWX)。 段地址转换和分页地址转换得过程基本相同,其大致过程如图4.23所示:第4章 存储器管理*第4章 存储器管理图4-23 分段地址转换过程第4章 存储器管理*第4章 存储器管理(1)将逻辑地址分为两部分,段号s 和段内偏移量w。 (2)将该进程的段表地址寄存器中的段表内存地址B与段号s 相加,得到该进程在段表中相应表项的索引值,从该表项中得到该段的长度以及该段在内存中的起始地址。 (3)将段内地址d与该段的内存始址相加得到访问单元的内存地址。第4章 存储器管理*4.4.2信息共享4.4.2信息共享 段是按逻辑意义来划分的,可以按名存取,所以,段式存储管理可以方便的实现内存的信息共享,并进行有效的内存保护。 1.段的共享 段的共享是指量各以上的作业,使用同一个子程序,在内存中只包含一个副本。具体的操作是在每个进程的段表中,用相应的表项指向共享段在内存中的起始地址即可。如图4.24所示。 当用户进程或作业需要共享内存中某段的程序或数据时,则只要用户使用相同的名字,就可以在新的段表中填入已存在段的内存起始地址,并设置一定的访问权限,从而实现段的共享。 当共享此段的某进程不再需要它时,应将该段释放,取消在该进程中共享段所对应的表项。第4章 存储器管理*第4章 存储器管理图4-25 分段系统中段的共享第4章 存储器管理*2.段的保护2.段的保护 在分段系统中,由于每个分段在逻辑上是独立的,因而比较容易实现信息保护。段的保护是为了实现段的共享和保证作业正常运行的一种措施。分段存储管理中的保护主要有地址越界保护和存取方式控制保护。地址越界保护是利用段表中的段长和逻辑地址中的段内相对地址相比较,如段内地址大于段长,则发出地址越界中断,系统会对段进行保护。第4章 存储器管理*4.4.3段页式存储管理方式4.4.3段页式存储管理方式一、基本概念 段页式存储管理方便使用又提高了内存利用率,是目前用的较多的一种存储管理方式。它主要涉及到以下的概念: (1)等分内存。它把内存分成大小相等的内存快,称之为页。 (2)作业或进程的空间。采用分段方式,按程序的逻辑关系把进程的地址空间分成若干段,每一段都又一个段名。 (3)段内分页。按照内存的大小将各个段分成若干页。每段从0开始依次编以连续的页号。第4章 存储器管理*第4章 存储器管理(4)逻辑地址结构。一个逻辑地址由3部分构成,段号s、段内页号p和页内地址d,记做v=(s,p,d),如图4.26所示。段号(s)段内页号(p)段内地址(d) 图4-26 逻辑地址结构 (5)内存分配。内存以页为单位分配给每个进程。第4章 存储器管理*第4章 存储器管理(6)段表、页表和段表地址寄存器。为了实现从逻辑地址到物理地址的转换,系统要为每个进程或作业建立一张段表,并且还要为该作业中的每一段建立一个页表。这样,作业段表的内容是页表长度和页表地址,为了指出运行作业的段表地址,系统有一个段表地址寄存器,它指出作业的段表长度和段表起始地址。图4.27 给出了段表、页表和内存的关系。第4章 存储器管理*第4章 存储器管理 图4-27 利用段表和页表实现地址映射第4章 存储器管理*第4章 存储器管理 在段页式存储管理系统中,面向物理实现的地址空间是页式划分的,而面向用户的地址空间是段式划分的,也就是说,用户程序被逻辑划分为若干段,每段又划分成若干页面,内存划分成对应大小的块,进程映像是以页为单位进行的,从而使逻辑上连续的段存入在分散内存块中 第4章 存储器管理*二、地址转换二、地址转换 在段页式系统中,一个程序首先被分成若干程序段,每一段赋予不同的分段标识符,然后,将每一段又分成若干个固定大小的页面。段页式系统中地址转换过程如图4.28所示。第4章 存储器管理*第4章 存储器管理图4-28 段页式系统中的地址转换机构第4章 存储器管理*第4章 存储器管理段页式系统中的地址转换过程大致如下: (1)首先利用段号s,将它与段长TL进行比较,若s
本文档为【第4章 存储器的管理课件文本】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_496728
暂无简介~
格式:ppt
大小:486KB
软件:PowerPoint
页数:0
分类:高中语文
上传时间:2010-06-15
浏览量:22