精华内容
下载资源
问答
  • 存储管理-存储管理功能

    千次阅读 2019-11-20 15:32:00
    存储管理-存储管理功能 存储器为什么比较重要? 存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。 存储器的组成 内存:存由...

    存储管理-存储管理的功能

    存储器为什么比较重要?

    存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。

    存储器的组成

    • 内存:存由顺序编址的块组成,每块包含相应的物理单元
    • 外存

    内存外存的信息交换式谁控制的?

    CPU控制相应的输入输出设备实现外存与内存信息的交换。

    C语言.c源程序文件变成.exe可执行文件的过程

    预编译->编译->汇编->链接

    预编译

    1.删除所有#define,展开所有宏定义;
    2.处理所有条件预编译指令,如#if,#ifdef,#elif,#else,#endif;
    3.处理#include预编译指令,将被包含的文件插入到该预编译指令的位置(该过程是递归进行的);
    4.删除所有注释(实际上是被替换为一个空格);
    5.添加行号和文件名标识;
    6.保留所有#pragma编译器指令。

    编译过程

    (编译之后生成.s文件)将预处理完的文件进行一系列的词法分析,语法分析,语义分析以及优化产生相应的汇编代码文件。

    汇编过程

    汇编之后生成.o文件,可重定位目标文件)将汇编代码转化成机器可以识别的指令。

    链接过程(重要的步骤,涉及地址和空间的分配)

    (链接之后生成.exe文件,可执行目标文件)合并多个可重定位目标文件生成可执行目标文件,需要完成的工作包括:地址和空间的分配;符号决议;重定位。
    1734701-20191120144625108-1063810418.png

    虚拟存储器

    为什么要有虚拟存储器?

    内存虽然访问速度快,但是太小了,而外存访问速度慢但是好处是空间大。引出问题,怎么相互弥补一下呢?不经常访问的数据和程序放到外存中去,只有在需要的时候才调入内存中。

    虚拟存储器是干什么用的?

    1.当物理内存不够用的时候,在硬盘上也就是外存开辟一块空间当内存用,但是这块内存不是内存条提供的,所以叫虚拟内存。
    例子:玩游戏的时候,你电脑内存1G,如果没有虚拟内存的话是没办法玩的,但是有了虚拟内存就可以玩了

    2.执行程序尽管向操作系统申请内存,而不管内存够不够用,好像有无限的内存一样

    3.编译链接程序
    什么是编译链接程序?源程序要由编译程序编译成CPU可以执行的代码,链接程序要把一个进程的不同程序段链接起来来让程序跑起来.
    1734701-20191120145415317-1030949311.png

    4.为进程提供虚拟空间

    虚拟存储器的定义

    进程中的目标代码、数据等的虚拟地址组成的虚拟空间称为虚拟存储器(virtual store或virtual memory)。

    虚拟存储器的特点

    1.虚拟存储器不考虑物理存储器的大小和信息存放的实际位置,只规定每个进程中互相关连信息的相对位置
    2.每个进程拥有自己的虚拟存储器,且虚拟存储器的容量由计算机的地址结构和寻址方式确定的,直接寻址时,如果CPU的有效地址长度为16位,则其寻址范围为0到64K
    3.要实现虚拟存储器到物理存储器的变换,必须有相应的硬件支
    4.每个进程都拥有自己的虚存,且每个虚存的大小不受实际物理存储器的限制
    5.内存只能存放经常被访问的程序和数据段,访问或在某一段时间内不会被访问的信息。进程执行过程中需要这些信息时,从外存中自动调入主存

    地址变换

    虚拟地址映射到物理地址涉及两个问题一个是分区问题,一个是虚拟空间的划分,另外一个是地址映射

    虚拟空间的分区

    虚拟空间的划分与计算机系统结构有关。一般划分为系统空间和进程空间两个部分,进程空间分为程序区和控制区
    1734701-20191120150914618-575782817.png

    地址映射

    把虚拟空间中已链接和划分好的内容装入内存,并将虚拟地址映射为内存地址

    静态地址重定位

    静态地址重定位在虚拟空间程序执行之前由装配程序完成地址映射工作

    特点:

    • 对于虚拟空间内的指令或数据来说,静态地址重定位只完成一个首地址不同的连续地址变换
    • 所有待执行的程序必须在执行之前完成它们之间的链接

    优点:不需要硬件支持。
    缺点:无法实现虚拟存储器;必须占用连续的内存空间,并且难以做到程序和数据的共享。

    动态地址重定位

    动态地址重定位在程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址。

    特点:动态重定位依靠硬件地址变换机构完成

    优点:

    • 可以对内存进行非连续分配
    • 动态重定位提供了实现虚拟存储器的基础
    • 有利于程序段的共享

    地址重定位机构需要一个(或多个)基地址寄存器BR和一个(或多个)程序虚拟地址寄存器VR。指令或数据的内存地址MA与虚拟地址的关系为:MA=(BR)+(VR)
    1734701-20191120151504786-1170651639.png

    内外存数据传输控制

    目的

    实现内存扩充

    过程

    内存和外存之间必须经常地交换数据,即将执行的程序和数据段调入内存,处于等待状态的程序和数据段调出内存

    基本控制方法

    用户自己控制:

    覆盖:
    1.要求用户清楚地了解程序的结构,并指定各程序段调入内存的先后次序
    2.覆盖技术不能实现虚拟存储器

    操作系统控制

    交换(swapping)方式

    1.交换方式由操作系统把那些在内存中处于等待状态的进程换出内存,而把那些等待事件已经发生、处于就绪态的进程换入内存
    2.交换方式一般不进行部分交换,每次交换除去常驻内存部分后的整个进程
    3.交换方式能完成内存扩充任务,但不能实现进程大小不受内存容量限制的虚拟存储器

    请求调入(on demand)方式和预调入(on prefetch)方式

    请求调入方式是在程序执行时,如果所要访问的程序段或数据段不在内存中,则操作系统自动地从外存将有关的程序段和数据段调入内存

    预调入由操作系统预测在不远的将来会访问到的程序段和数据段部分,并在它们被访问之前选择适当的时机调入内存

    请求调入方式和预调入方式可以实现进程大小不受内存容量限制的虚拟存储器

    内存的分配与回收

    存储管理模块要为每一个并发执行的进程分配内存空间。另外,当进程执行结束之后,存储管理模块要及时回收该进程所占用的内存资源,以便给其他进程分配空间

    策略:

    (1) 分配结构:登记内存使用情况,供分配程序使用的表格与链表。例如内存空闲区表、空闲区队列等。

    (2) 放置策略:确定调入内存的程序和数据在内存中的位置。这是一种选择内存空闲区的策略。

    (3) 交换策略:在需要将某个程序段和数据调入内存时,如果内存中没有足够的空闲区,由交换策略确定内存中的哪些程序段和数据段调出内存,以便腾出足够的空间。

    (4) 调入策略:外存中的程序段和数据段什么时间按什么样的控制方式进入内存。调入策略与内外存数据交换的控制方式有关。

    (5) 回收策略:回收策略包括两点,一是回收的时机,二是调整回收空闲区和已存在空闲区。

    内存信息的共享与保护

    共享

    在多道程序设计环境下,内存中的许多用户或系统程序和数据段可供不同的用户进程共享。这种资源共享将会提高内存的利用率

    保护

    内存信息保护方法有硬件法、软件法和软硬件结合三种:

    上下界保护法是一种常用的硬件保护法

    为每个进程设置一对上下界寄存器,分别放置被保护程序和数据段的起始地址和终止地址。
    程序执行过程中,对内存进行访问操作时首先进行访址合法性检查,即检查重定位后的内存地址是否在上、下界寄存器规定的范围之内。
    在规定的范围之内,访问是合法的;否则是非法的,并产生访址越界中断。

    1734701-20191120152843274-1268988512.png

    保护键法也是一种常用的存储保护法
    为每一个被保护存储块分配一个单独的保护键。在程序状态字中设置相应的保护键开关字段,不同进程赋予不同的开关代码与被保护的存储块中的保护键匹配。保护键可设置成对读写同时保护或只对读、写进行单项保护。

    保护键0对2K到4K的存储区进行读写同时保护的,保护键2对4K到6K的存储区进行写保护。

    如果开关字与保护键匹配或存储块未受到保护,则访问该存储块是允许的,否则将产生访问出错中断。

    1734701-20191120152901770-1133045141.png

    界限寄存器与CPU的用户态或核心态工作方式相结合的保护方式

    在这种保护模式下,用户态进程只能访问界限寄存器规定范围内的内存部分,核心态进程可以访问整个内存地址空间

    展开全文
  • 操作系统储存管理功能

    千次阅读 2019-05-12 11:32:59
    Windows虚拟内存 Windows虚拟地址空间分配 在32位的机器上,地址空间从0x00000000~ 0xFFFFFFFF,总大小为4GB。...功能 0x00000000 ~ 0x0000FFFF 这段内存为空指针区,不可以同时访问 0x00010000 ~...

    操作系统的存储管理功能分为四个部分

    • 地址映射
    • 虚拟储存
    • 内存分配
    • 储存保护

    一:地址映射

    1. 固定地址映射

    在编程或编译确定逻辑地址和物理地址的映射关系
    特点:程序加载时必须放在指定的内存区域
    容易产生地址冲突,运行失败

    2. 静态地址映射

    程序装入时由操作系统完成逻辑地址到物理地址的映射
    MA = VA + BA
    特点:程序运行之前确定映射关系,装入后不能移动,占用连续的内存空间

    3. 动态地址映射

    在程序执行过程中把逻辑地址转换为物理地址
    MA = VA + BA
    特点:程序占用的内存空间可动态变化,不要求连续的内存空间,便于多个进程共享代码,缺点是硬件支持(MMU),软件复杂

    二:虚拟存储

    借助辅存在逻辑上扩充内存,解决内存不足的问题
    过程:

    • 迁入:将要运行的部分装入内存
    • 迁出:把不运行的部分暂时放在辅存
      前提
      短时间内进程不运行的部分往往占大部分

    程序局部性原理
    时间局部性
    空间局部性

    实现虚拟存储的前提:
    足够的辅存
    适当容量的内存
    地址变换机构

    三:内存分配

    为程序分配足够的内存空间

    Windows虚拟地址空间分配

    在32位的机器上,地址空间从0x00000000~ 0xFFFFFFFF,总大小为4GB。一般而言,低地址空间,从0x00000000~ 0x7FFFFFFF使用户空间,高地址空间被分配给系统。

    总体:

    虚拟内存范围功能
    0x00000000 ~ 0x0000FFFF这段内存为空指针区,不可以同时访问
    0x00010000 ~ 0x7FFEFFFF这段供进程使用,包括所有的数据,静态或动态加载的exe和dll模块,以及内存映射文件
    0x7FFF0000 ~ 0x7FFFFFFF此64KB是禁止访问的,因为它挨着内核区域,防止内核区域被覆盖,以破坏内核的正确性和完整性,试图改写此区域,会产生异常,以阻拦进一步改写内存区域
    0x80000000 ~ 0xFFFFFFFFF内核区域,用于线程调度,内存管理,文件系统支持,网络支持和所有设备驱动的代码全部在次分区加载,驻留在这个分区中的一切均可被所有进程共享

    用户低2GB空间分配:

    虚拟内存地址范围功能
    0x0 ~ 0xFFFF拒绝访问区域,用于帮助程序员避免引用错误的指针
    0x00010000 ~ 0x7FFEFFFF专用进程地址空间
    0x7EFDE000 ~ 0x7EFDEFFF用于第一个线程的线程环境块(TEB),系统会在这一页的前面创建附加的TEB(从0x7FFDD000开始向上)
    0x7FFDF000 ~ 0x7FFDFFFF进程环境块(PEB)
    0x7FFE0000 ~ 0x7FFE0FFF共享的用户数据页,这个只读方式的页面被映射到系统空间中包含系统时间,时钟计数和版本号信息的一个页面,这个页面的存在使数据在用户态下可以直接读取而不必请求核心态的转换
    0x7FFE1000 ~ 0x7FFEFFFF拒绝访问区域
    0x7FFF0000 ~ 0x7FFFFFFF拒绝访问区域,用于防止线程跨越用户/系统空间边界传送缓存区,在变量MmUserProbeAddress中包含此页的起始地址

    核心高2GB空间分配:

    虚拟内存地址范围功能
    0x80000000 ~ 0xc0000000内核执行体,HAL和硬件驱动程序
    0xc0000000 ~ 0xc0800000进程页和超空间
    0xc0800000 ~ 0xFFBE000系统高速缓存,分页缓冲池,非分页缓冲池
    0xFFBE000 ~ 0xFFC0000崩溃储存驱动程序区域
    0xFFC0000 ~ 0xFFFFFFF留给HAL使用

    内存管理

    每个进程都拥有自己的4G(32位机)虚拟内存地址,各个进程之间是相互独立的,每个进程的数据可由其中线程共享。虚拟内存地址本身不对应任何物理地址,直接引用会引发错误,虚拟内存地址必须映射物理地址后才能储存数据。内存分配其实指的是虚拟内存地址映射物理内存,内存回收就是指解除映射关系。

    四:储存保护

    保证在内存中的多道程序只能在给定的储存区域内活动并互不干扰

    1. 防止访问越界
    2. 防止访问越权

    方法:界址寄存器
    在CPU中设置一对下限寄存器和上限寄存器存放程序在内存中的下限地址和上限地址
    程序访问内存时硬件自动将目的地址与下限寄存器和上限寄存器中存放的地址界限进行比较,判断是否越界

    关于计算机硬件存储系统详细见计算机存储系统

    展开全文
  • 通过编程模拟实现操作系统存储管理的基本功能,包括分区存储管理、分页存储管理,段式存储管理和段页式存储管理等机制的基本思想。对于每种管理方式,要求显示出存储空间的分配和回收的执行情况;地址空间的重定位的...
  • 存储管理功能

    万次阅读 2017-05-29 08:57:02
    我是一个强迫症的人,什么文件都要归类,电脑桌面干干净净的放着几个必要的文件夹,所有的文件对应不同的文件夹存放,如果看到某个文件(只要不是临时存放的)出现在桌面上,就感觉非常刺眼。

    我是一个有强迫症的人,什么文件都要归类,电脑桌面干干净净的放着几个必要的文件夹,所有的文件对应有不同的文件夹存放,如果看到某个文件(只要不是临时存放的)出现在桌面上,就感觉非常刺眼。
    我就是这么管理电脑文件的,感觉…….没救了。

    存储管理的功能


    存储管理可不仅是对外部存储资源(如磁盘文件)进行的管理,也包括了对内存的管理。内外存的资源管理技术可以相同,也可以不同,但一般情况下,都采用相同的管理技术。

    存储管理主要是完成如下功能:存储分配存储共享存储保护存储扩充地址映射

    存储分配

    我们知道,当一个作业进入内存时,操作系统会将其转变为进程,同时为其分配存储空间以供运行,而进程运行结束时,操作系统将进程所占有的存储空间回收。

    一般的存储分配

    如果操作系统带有虚拟存储管理功能,那么进程运行过程中一部分存在于内存,另一部分存在于外存。如果外存部分进入内存,则撤销外存空间,分配内存空间,反之,操作相反。

    带虚拟存储管理的内存分配

    仅仅知道要这样分配还不够,操作系统得记录这些情况——内存与外存资源的使用情况,为此,操作系统设置了两个表用于记录这些信息:
    1. 分配表:记录已经分配的区域。
    2. 空闲表:记录未分配区域。

    存储共享

    多个进程共用内存中的相同区域。

    经常去吃烧烤的小摊儿上就一个老板在忙活,不管谁的串都是老板烤的,但如果老板雇佣很多人,然后不同客人的串分给不同的人去烤,那老板多轻松啊(但这赚的估计还不够老板发工资)。
    据说高档餐厅会为每个桌配一名侍者,不过我没去过就是了……

    我们之所以要进行存储共享,其一便是为了节约内存空间,不然多个进程同时需要使用一个程序资源时,还要为每个进程创建一个程序资源的副本,那内存就算再大也不够用啊(就像那个烧烤摊儿老板,赚的还不够给工人发的工资)。
    另一方面,使用存储共享也是为了方便进程通信,我们知道PV操作就需要公共的内存空间才能够实现。

    一般情况下我们需要共享的是代码和数据,共享代码是为了节约内存空间,而数据则是对应的方便进程通信(也能节约内存空间)。

    存储保护

    存储共享中我们提到了PV操作,那PV操作是为了限制多个进程出现同时进入临界区的情况所提出来的,也算是一种对共享变量的一种保护,不过在存储保护中这种保护则更甚一筹,即对于多个进程共享的存储区域的保护。
    存储保护主要包括以下两个方面:
    1. 防止地址越界
    这个比较容易理解,因为在我们写程序的时候也要注意的,一旦地址越界编译就会出错,无法通过,不过此时还能在编译失败时纠正。
    而在操作系统中,每个进程具有相对独立的进程空间,一旦其中一个进程运行时产生的地址出现在其自身的进程空间之外,此时发生了地址越界,如果侵犯了其他进程空间,就会影响其他进程的正常执行,假如侵犯的进程空间属于操作系统,就可能导致系统崩溃。
    2. 防止操作越权
    对于多个进程共享的存储空间,每个进程有自己的访问权限,如读,写,执行。如果该进程访问共享区域时违反了权限规定,就说这个进程发生了操作越权。
    一般我们选用硬件来提供存储保护,软件作为辅助。

    我们用Windows的时候,如果在系统盘里删一些东西,会有提示说需要提供权限,这就是说当前登录用户权限不够,不能做这种操作。

    存储扩充

    我们知道,cache是高速缓冲,读写速度仅次于寄存器,但是耐不住人家尊贵,如果直接使用cache作为存储器的话,我只能说:“土豪,交个朋友吧!”。
    当然了,这只是玩笑话,cache很贵,其次是内存很贵,再然后咱么所说的机械硬盘就是大街货了,便宜,容量都是以TB做单位的。
    所以为了省钱,也为了性价比,我们就提出了三级缓存,将cache,内存,还有外存有机的结合,形成一个容量大速度快的虚拟存储系统。

    三级缓存都是比较新的技术了,很多年前,还没有cache这个东西,只有内存和外存之说。

    三级缓存

    地址映射

    逻辑地址转换成物理地址的过程。
    完成地址映射的硬件机构称为存储管理部件(MMU)

    地址映射

    逻辑地址是相对的,因此可以被映射到物理地址的不同的位置,物理地址则是绝对的,一旦产生,便固定了,这对于程序的结构化和分层设计带来不便。
    之所以会使用逻辑地址,也是为了程序移植方便。

    内存资源管理


    内存分区

    对内存分区,可以是静态,可以是动态的,分区的大小可以是等长,也可以是异常的。
    所谓静态分区,则是在系统运行之前就将内存划分为若干区域,后期可以直接分配。

    但是,由于分配时只能对已划分好的分区进行选择,故很难出现正好合适的区域。

    动态分区与之对应,是在系统运行的过程中划分内存空间

    通常,按照进程所需存储空间的大小为其分配一个或多个区域。

    等长和异长听名字就知道了,就不废话了。
    一般情况下,我们都是使用静态等长动态异长的组合方式。

    内存分配

    静态等长分区的分配

    通常用于页式和段页式的存储管理方式,被静态的划分为等长区域,每个区域大小为2^iB,称之为页面
    分配与去配的表示方法:

    1. 位示图
      用1位(1bit)来表示一个页面状态,1表示被占用,0表示空闲。假设某个存储空间内忧n个页面:
      位示图

    2. 空闲页面表
      若干个连续的空闲页面作为一组登记在空闲页面表中,该表包含首页面号页面个数。这种分配方法能使一个进程的若干页面连续。
      空闲页面表

      页面首号是指一块连续空闲区的第一块空闲页面号,页面个数则是这块连续空闲区的页面总数。

    3. 空闲页面链
      所有的空闲页面连接成一个链表,分配时取链表头页面,去配(撤销)时将释放的页面连接到链表头。
      空闲页面链

      这种方法适用于内存页面的分配,对于外存,由于需要数据的传输,故而速度慢,不采用。

    动态异长分区的去配

    此种分区常用语界地址和段式存储管理方式。
    存储空间被划分为若干不等长区域,对此的管理采用空闲区域表,该表中记录所有当前未被进程占用的空闲区域。
    空闲区域表

    与空闲区域表相关的算法:

    1. 最先适应算法(First Fit)
      核心思想:对于存储申请命令,选取空闲区域表中满足申请长度,且起始地址最小的空闲区域。
      实现:空闲区域表中的首址按从大到小的次序依次被记录了,当进程申请存储空间时,系统从该表的头部开始查找,取满足要求的第一个表目项,对比长度,若空闲区域大于进程申请空间,进行分割,然后将与申请空间大小相同的空闲区分配给进程,将剩余部分保留在空闲区域表中(需要改变首址)。

      该算法尽可能的使用低地址,造成高地址空间形成较大空闲区,算是一个优点,但是对空闲区的分割又是一个缺点(假设某个空闲区本来刚好可以满足P1的空间申请,但是P2先提出了空间申请,致使空闲区被分割,如此P1的申请将无法被满足)。

    2. 下次适应算法(Next Fit)
      核心思想:从上一次分配空闲区域的下一个位置开始,选取第一个可满足的空闲区域。
      实现:用一个指针记录每次分配结束后的下一个位置。

      此算法不需要像FF算法一样,每次分配都要进行一次查询,减小了时间开销,使空闲区域分布的较为均匀,但依旧没有解决FF算法的缺点。

    3. 最佳适应算法(Best Fit)
      核心思想:分配时寻找满足空间申请并且长度是最小的空闲区域,这样就克服了FF算法的缺点。
      实现:空闲区域按地址由小到大的记录,然后从表头开始查找,过程与FF算法类似,只是多出了一项长度的比较。

      可以预见,BF算法克服了FF算法的缺点,不去分割大的空闲区,但是又可能会形成很小的无法使用的空闲区——碎片。

    4. 最坏适应算法(Worst Fit)
      核心思想:分配时取满足空间申请,并且长度最大的空闲区域。
      实现:按照空闲区域长度由大到小依次记录于空闲区域表中,进程申请空间时,取第一个满足要求的表目项。

      克服了BF的缺点,却保留了FF算法的缺点。

    一说到算法,马上就感觉高大上起来,但实际上…….
    FF算法,NF算法以及WF算法就是图个简单,实现起来省时省力又省心。只有BF算法比较麻烦些。

    我们研究算法的时候,是为了解决一个个的实际问题,总是需要先提出一个最简单的算法,然后发现算法的缺点,针对这个缺点进行算法的进一步改进,不断的重复这一个过程。
    要知道,没有一个粗胚,怎么能够雕刻出一件完美的作品呢?

    紧凑

    这是为了解决碎片问题而提出来的。
    这个方法就是想移动所有的已占有区域,然后将所有的空闲区域连成一块完整的空闲区。

    虽然只有简简单单的一句话,但是我们可以发现,想要实现这个方法,系统的开销非常大,所以尽量避免使用紧凑技术。
    那么,什么时候使用呢?
    只有在一个新的进程申请空间时,所有分散的的空闲区域都不能满足,但是其总和可以满足这个申请时使用杂凑技术。

    小结


    一个适合的存储管理方式,会大大增强系统的易用性。

    所以……我该怎么收尾呢?

    展开全文
  • 操作系统五大功能存储管理

    千次阅读 2020-05-06 12:17:58
    存储管理一....段页式存储管理2.1 页式存储管理2.2 段式存储管理2.3 页/段式存储管理同异2.4 段页式存储管理 第一节是从物理内存的角度来说;第二节是从进程角度理解进程的存储空间管理。 一.内存分配与回...


    第一节是从物理内存的角度来说;第二节是从进程角度理解进程的存储空间管理。

    一.内存分配与回收

    早期计算机编程并不需要过多的存储管理,随着计算机和程序越来越复杂,存储管理成为必要。

    存储管理主要解决三个问题:

    • 确保计算机有足够的内存处理数据
    • 确保程序可以从可用内存中获取一部分内存使用
    • 确保程序可以归还使用后的内存以供其他程序使用

    1.1 内存分配的过程

    有以下三种分配方法

    1.1.1 单一连续分配(过时)

    单一连续分配是最简单的内存分配方式,只能在单用户、单进程的操作系统中使用。
    该方法将内存分为系统区和用户区,系统区内存只能给操作系统使用,用户区的内存只能给用户使用。

    1.1.2 固定分区分配

    固定分区分配是支持多道程序的最简单存储分配方式,内存空间被划分为若干固定大小的区域(分区),每个分区只提供给一个程序使用,互不干扰。

    1.1.3 动态分区分配

    根据进程实际需要,动态分配内存空间。
    下面介绍该方法相关的数据结构、分配算法:

    1.1.3.1 相关数据结构

    • 动态分区空闲表
      每个空闲区对应一个0/1标记。0表示空闲区没有被使用,1表示空闲区被使用。
    • 动态分区空闲链表
      是一个双向链表,每个节点是一个空闲区,同时记录空闲区容量。相邻空闲区可以合并为一个节点。

    1.1.3.2 相关算法

    • 首次适应算法(FF算法)
      分配内存时从开始顺序查找适合(大小满足)内存区,若没有合适的空闲区,则该次分配失败。
      缺点:每次从头部开始,使得头部地址空间不断被划分,并且会有很多碎片。
    • 最佳适应算法(BF算法)
      最佳适应算法要求空闲区链表按照容量大小排序,遍历空闲区链表找到最佳合适空闲区。
      优点:避免大材小用
    • 快速适应算法(QF算法)
      快速适应算法要求有多个空闲区链表,每个空闲区链表存储同一种容量的空闲区。

    1.2 内存回收过程

    内存回收区在内存中有四种情况(假设使用空闲链表保存空闲区):

    • 回收区与空闲区相连,且在空闲区后面
      回收过程:只需要把空闲区的容量增大为包含回收区即可。
    • 回收区与空闲区相连,且在空闲区前面
      回收过程:将回收区与空闲区合并为新的空闲区,新的空闲区使用回收区的地址。
    • 回收区与空闲区相连,且在两块空闲区之间
      回收过程:将前后两个空闲区和回收区合并,新的空闲区合并之前的回收区之前的空闲区地址。
    • 单一回收区且不与任何空闲区相连
      回收过程:为回收区创建新的空闲节点,插入到相应的空闲区链表中去。

    二.段页式存储管理

    2.1 页式存储管理

    字块是相对物理设备的定义,页面则是相对逻辑空间(进程空间)的定义。

    页式存储管理就是将进程逻辑空间等分成若干大小的页面,相应的把物理内存空间分成与页面大小相同的物理块,以页面为单位把进程空间装进物理内存中分散的物理块(字块)。

    页面大小 应该适中,过大难以分配,过小内存碎片过多,页面大小通常是512B~8K。

    如何知道进程的页面分配到哪一个物理块(字块)呢?
    页表:记录进程逻辑空间与物理空间的映射。有两项:页表、字块。
    页地址对应字的地址,页地址也是分为两部分,前m位(页号)是页面在页表的索引,得到该页的物理块(字块);后b位(页内偏移)指定页面在物理块(字块)中的地址。

    页表在现代计算机系统中的问题:
    现代计算机系统中,可以支持非常大的逻辑地址空间(232~264) ,这样,页表就变得非常大,要占用非常大的内存空间。比如,具有32位逻辑地址空间的分页系统,规定页面大小为4KB,则在每个进程页表中的页表项可达1M(220)个,如果每个页表项占用1Byte,故每个进程仅仅页表就要占用1MB的内存空间
    为解决这一问题,引出多级页表。只需要在运行时候加载根页表,之后按需查找二级页表……

    页式存储管理的缺点:有一段连续的逻辑分布在多个页面中,将大大降低执行效率。

    2.2 段式存储管理

    将进程逻辑空间划分(非等分)成若干段,段的长度由连续逻辑的长度决定。比如,逻辑里面有主函数MAIN、子程序段X、子函数Y等,按照每一个函数的逻辑长度分配逻辑空间(段)。

    段表:记录进程逻辑空间与物理空间的映射。有三项:段号、基址、段长。
    段地址:段号、段内偏移两部分组成。类比页地址。

    2.3 页/段式存储管理同异

    • 相同点:段式存储和页式存储都离散地管理了进程的逻辑空间
    • 不同点:页是物理单位,段是逻辑单位;分页是为了合理利用空间,分段是满足用户要求;页大小由硬件固定,段长度可动态变化;页表信息是一维的,段表信息是二维的

    2.4 段页式存储管理

    分页可以有效提高内存利用率(虽然说存在页内碎片),分段可以更好满足用户需求。二者取其优,结合为段页式存储管理。

    段页式存储管理先将逻辑空间按段式管理分成若干段,再把段内空间按页式管理等分成若干页。
    段页地址:由三部分组成。段号是进程逻辑空间具体哪一段;段内页号是段里具体某一页;页内地址是某一页里具体的字。

    三.虚拟内存

    一个游戏十几G,物理内存只有4G,那这个游戏是怎么运行起来的?

    3.1 虚拟内存概述

    为什么需要虚拟内存?

    • 有些进程实际需要的内存很大,超过物理内存的容量
    • 多道程序设计会使多个进程在内存当中,使得每个进程可用物理内存更加稀缺
    • 不可能无限增加物理内存,物理内存总有不够的时候

    虚拟内存是操作系统内存管理的关键技术,使得多道程序运行和大程序运行成为现实。
    工作方式:把程序使用内存划分,将部分暂时不使用的内存放置在辅存中,使用辅存保存之后可能用到的部分。

    3.2 程序的局部性原理

    局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访的存储单元都趋于聚集在一个较小的连续区域中

    程序运行时,无需全部装入内存,装载部分即可;如果访问页不在内存,则发出缺页中断,发起页面置换;从用户层面看,程序拥有很大的空间,即是虚拟内存
    虚拟内存实际是对物理内存的补充,速度接近于内存,成本接近于辅存

    3.3 虚拟内存的置换(页面替换)算法

    3.3.1 高速缓存/主存页面替换的比较

    高速缓存替换页面替换
    时机不同CPU读取缓存时没有找到对应数据, 缓存需要从主存中载入相关数据主存缺页时,主存需要从辅存载入页面数据
    层次不同Cache-主存层次主存-辅存层次
    目的不同解决速度问题解决容量问题

    这也是为什么计算机存储器分层的一个原因。

    展开全文
  • 操作系统的五大管理功能: (1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等; (2)文件管理:又称为信息管理; (3)存储管理:实质是对存储“空间”的管理,主要指对主存的管理; (4)...
  • 存储管理技术

    千次阅读 多人点赞 2017-07-02 22:09:15
    虚拟存储管理技术:现代操作系统大都支持虚拟存储功能,允许进程装入部分程序即可开始执行,其余部分保留在外存。当执行所需要的部分不在内存时,中断进程执行,使之阻塞等待,直到相应部分装入内存,进程进入就绪...
  • 数据库定义功能 数据组织、存储管理 数据操纵功能 数据库的事物管理和运行管理 数据库的建立和维护功能
  • 内含sql数据库和各种功能的触发器与存储过程的sql文件
  • 不具备页面对换功能,不支持虚拟存储器功能,在调度作业运行时 ,必须将它的所有页面一次调入内存 ,若内存没有足够的块 则作业等待 的这种分页管理方式被称为纯分页或基本分页存储管理方式 而请求分页管理方式 是...
  • 分页存储存储管理方式详解

    千次阅读 多人点赞 2020-04-22 21:38:18
    分页存储存储管理方式详解离散分配方式分页储存管理方式页面与页表页面物理块逻辑地址结构页表快表(TLB,Translation Look aside Buffer)一级页表的缺陷两级多级页表反置页表反置页表的提出基于反置页表的地址转换...
  • 操作系统之存储管理

    千人学习 2018-05-24 09:23:03
    “取指令,执行指令”,这是冯诺依曼式计算机的基本原则,进程... 本课程首先介绍存储管理的研究对象和目的,明确存储管理的基本功能和相关的基本概念;然后从实存和虚存两个角度,分别介绍常用的几种存储管理方案。
  • Windows存储管理

    千次阅读 2018-10-18 09:50:20
    1.Windows存储管理之磁盘类型简介   各种操作系统连接到存储系统之后,并且操作系统识别物理磁盘之后,需要对磁盘进行进一步配置。如果用户连接存储是的Windows Server,存储管理员势必需要了解Windows中的磁盘...
  • 数据库管理系统的定义 数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供了访问数据的方法,包括...2.数据组织存储管理功能 数据库管理系统要分类组织,存储和管理各种...
  • 存储管理

    千次阅读 2015-12-05 16:50:58
    为了实现段的共享,应使内存管理功能与用户程序分段的组织方式相适应。 ③分段保护。在多道程序环境下,为了防止其它程序对某程序在内存中的数据有意无意的破坏,必须采取保护措施。对内存中信息的保护,同样时对...
  • Windows Server 2016-存储新增功能

    千次阅读 2018-02-27 18:28:54
    本章给大家介绍有关Windows ... 该功能简化了软件定义的存储系统的部署和管理并且允许使用 SATA SSD 和 NVMe 磁盘设备等新型磁盘设备,而之前群集存储空间无法使用共享磁盘。价值:空间存储直通使服务提供商和企业可...
  • 段式存储管理、段页式存储管理

    千次阅读 多人点赞 2018-06-24 10:33:36
    分页与分段的区别 1.页是信息的物理单位,是系统管理的需要而不是用户的需要;而段是信息的逻辑单位,分段是为了更好地满足用户的需要 2.页的大小固定且由系统决定,一个...段式存储管理 段:用户编制的程序可以...
  • 操作系统的资源管理功能包括:处理机管理、存储管理、输入/输出管理和文件系统四大功能。 1、处理机管理 计算机系统中最重要的资源是中央处理机,任何计算都必须在CPU上运行。在处理机管理中最核心的问题是CPU时间...
  • 具体要求:模拟分页存储管理,主要功能包括:主存的分配和回收,地址交换。 输入:1.输入进城名称及使用的内存大小 2.结束某个指定的进程 3.逻辑地址 输出:显示内存使用状况,每个进程占据的内存(页表),物理...
  • 分页存储管理方式

    万次阅读 2017-04-20 21:11:57
    分页式存储管理:离散分配的基本单位是页分段式存储管理:离散分配的基本单位是段段页式存储管理:离散分配的基本单位是段、页 页面和物理块 空间划分 将一个用户进程的地址空间(逻辑空间)划分成若干个...
  • 段式存储管理

    千次阅读 2014-12-10 10:10:57
     前面介绍的各种存储管理中,供用户使用的逻辑地址都是连续的,用户在编制大型程序时就会感到不方便。一个实际的程序往往是由若干段组成的,例如一个主程序段、若干子程序段、若干数据段和工作区段组成,如图3.22所...
  • 操作系统存储管理之分段存储

    千次阅读 2017-04-23 14:57:56
    而分段存储管理的引入,则满足用户(程序员)编程和使用上的要求,这些要求其它各种存储管理技术难以满足。需求解析: 在分页存储管理中,经连结编辑处理得到了一维地址结构的可装配模块,这是从0开始编址的一个单一连续的...
  • 【操作系统】分页存储管理方式

    万次阅读 多人点赞 2016-12-12 21:16:25
    离散分配方式连续分配存储管理方式产生的问题: 要求连续的存储区 碎片问题 变连续分配为离散分配,允许将作业离散放到多个不相邻接的分区中。 分页式存储管理:离散分配的基本单位是页 分段式存储管理:离散分配的...
  • UCOSIII存储管理

    千次阅读 2016-08-10 16:41:49
    作为一个操作系统,内存管理是其必备的功能,在UCOSIII中也内存管理模块,使用内存管理模块可以动态的分配和释放内存,这样可以高效的使用“昂贵”的内存资源内存管理简介 内存管理是一个操作系统必备的系统模块,...
  • store vue 集中储存管理

    千次阅读 2018-06-29 14:26:23
    它采用集中存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。vuex也集成刀vue的官方调试工具devtools extension,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试...
  • 有存储“临时”书签,分类保存书签,快捷键操作,自定义设置,快捷查看书签,高效管理书签等功能。 1教程 主页 功能 “临时”书签 瀑布流书签 拖拽 快捷键 设定 图标(Icon)快捷菜单 快捷菜单(页面某些菜单) 支持...
  • 操作系统中存储管理的基本原理

    千次阅读 2014-09-03 09:31:13
    存储管理的基本原理 内存管理方法 内存管理主要包括内存分配和回收、地址变换、内存扩充、内存共享和保护等...连续分配单一连续存储管理和分区式储管理两种方式。 (1)单一连续存储管理 在这种管理方式
  • * 欢迎使用学生成绩管理系统 * * 1. 建立文件储存记录 2. 增加学生记录 3. 新建学生信息文件 4. 显示记录 * * 5. 文件存储 6. 读取文件 7. 删除记录 8. 修改记录 * * 9. 查询记录 10.对记录进行排序 11.测试程序 12....
  • mysql存储引擎

    万次阅读 多人点赞 2019-07-31 19:28:44
    不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。 因为在关系数据库中数据的存储是以表的形式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,166,722
精华内容 466,688
关键字:

储存管理功能的有