精华内容
下载资源
问答
  • Windows 内存管理方式

    2013-02-18 15:05:00
    WINDOWS内存管理方式综述 WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。 页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页 (page),页式管理把内存空间按页的大小划分...

    WINDOWS内存管理方式综述

    WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。

    页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页 (page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚 拟地址与内存地址建立一一对应页表, 并用相应的硬件地址变换机构, 来解决离散地址变换 问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。 其优点是没 有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。便于改变程序占用空间的大 小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用 完成而不是操作系统自动完成)。 缺点:程序全部装入内存,要求有相应的硬件支持。例 如地址变换机构, 缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。 这增加了机 器成本。增加了系统开销,例如缺页中断处理机,请求调页的算法如选择不当,有可能产生 抖动现象。 虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用 果页面较大,则这一部分的损失仍然较大。

    段式管理的基本思想就是把程序按内容或过程 (函数) 关系分成段, 每段有自己的名字。 一个用户作业或进程所包含的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。 段式管理程序以段为单位分配内存, 然后通过地址影射机构把段式虚拟地址转换为实际内存 物理地址。 程序通过分段(segmentation)划分为多个模块,如代码段、数据段、共享段。 其优点是:可以分别编写和编译。 可以针对不同类型的段采取不同的保护。 可以按段为单 位来进行共享,包括通过动态链接进行代码共享。

    段页式管理: 为了实现段页式管理, 系统必须为每个作业或进程建立一张段表以管理内 存分配与释放、 缺段处理、 存储保护相地址变换等。 另外, 由于一个段又被划分成了若干页, 每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。 显然, 与页式管理时 相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外,由于在段页 式管理中,页表不再是属于进程而是属于某个段,因此,段表中应有专项指出该段所对应页 表的页表始址和页表长度。 因为段页式管理是段式管理的页式管理方案结合而成的,所以 具有它们二者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。 另外,需要的硬件以及占用的内存也有所增加。更重要的是,如果不采用联想寄存器的方式 提高CPU的访内速度,将会使得执行速度大大下降。

    转载于:https://www.cnblogs.com/miralce/archive/2013/02/18/2915683.html

    展开全文
  • WINDOWS内存管理方式

    2014-03-25 21:51:30
    ">WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。 "COLOR: #ff0000;"> 页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分...
    WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。
    
      页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。 其优点是没有外碎片,每个内碎片不超过页大小(空间浪费小)。一个程序不必连续存放。便于改变程序 用空间的大小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用完成而不是操作系统自动完成)。 缺点程序全部装入内存,要求有相应的硬件支持。例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增 了机器成本。增 了系统开销,例如缺页中断处理机,请求调页的算法如选择不当,有可能产生抖动现象。 虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用,如果页面较大,则这一部分的损失仍然较大。 
    
      段式管理:基本思想就是把程序按内容或过程(函数)关系分成段,每段有自己的名字。一个用户作业或进程所包含的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。 程序通过分段(segmentation)划分为多个模块,如代 段、数据段、共享段。其优点是:可以分别编写和编译。 可以针对不同类型的段采取不同的保护(存储保护容易)。 可以按段为单位来进行共享(存储共享容易),包括通过动态链接进行代 共享(能动态连接)。 
    
      段页式管理:为了实现段页式管理,系统必须为每个作业或进程建立一 段表以管理内存分配与释放、缺段处理、存储保护及地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一 页表以把段中的虚页变换成内存中的实际页面。显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外,由于在段页式管理中,页表不再是属于进程而是属于某个段, 此,段表中应有专项指出该段所对应页表的页表始址和页表长度。  为段页式管理是段式管理的页式管理方案结合而成的,所以具有它们二者的优点。但反过来说,由于管理软件的增 ,复杂性和开销也就随之增 了。另外,需要的硬件以及 用的内存也有所增 。更重要的是,如果不采用联想寄存器的方式提高CPU的访内速度,将会使得执行速度大大下降。
    展开全文
  • Windows内存管理方式:页式管理,段式管理,段页式管理 页式管理 将各进程的虚拟空间(逻辑地址)划分为若干个长度相等的页,业内管理把内存空间(物理内存)按照页的大小划分为片或者页面,从而实现了离散分配...

    Windows内存管理方式:页式管理,段式管理,段页式管理

     

    页式管理

          将各进程的虚拟空间(逻辑地址)划分为若干个长度相等的页,业内管理把内存空间(物理内存)按照页的大小划分为片或者页面,从而实现了离散分配,然后把页式虚拟地址和内存地址建立一一对应的页表,并用相应的硬件地址变换机构来解决离散地址变化问题,(程序加载时,可将任意一页放入内存中任意一个页框而且这些页框不必连续,从而实现了离散分配)页式管理采用请求调页或预调页技术来实现内外存存储器的统一管理,地址结构由两部分构成,页号+页内地址

    其优点是没有外碎片,每个内碎片不超过页的大小。每个程序不必连续存放,这样就便于改变程序占用空间的大小(主要是随着程序运行,动态生成数据增多,所要求的地址空间相应增长),缺点是程序仍旧要全部装入内存,要有相应的硬件支持,例如地址转换机构缺页中断的产生和选择淘汰页面都要求有相应的硬件支持,这增加了机器成本,增加了系统开销,并且没有足够的内存,程序就不能执行

     

    段式管理

    程序按照内容和过程函数关系分段,每段都有自己的名字,一个用户作业或进程包括的段对应一个二维线性虚拟空间,也就是一个二维虚拟存储器,段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存地址。优点:可以分别编写和编译,可以针对不同类型的段采用不同的保护,可以按段为单位来进行共享然后通过动态链接来进行代码共享。缺点是产生碎片

     

    段页式管理

    为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配和释放,缺段处理。另外由于一个段又被划分为若干个页,每个段必须建立一张页表一把段中的虚页变换成内存中的实际页面。显然与页式管理时相同,页表中也要有相应的缺页中断处理页面保护功能的表项,段页式管理的段式管理与页式管理方案结合而成的所以具有它们两者的优点,但反过来说由于管理软件增加,复杂性和开销也就随之增加了,另外需要的硬件以及占用的内存也有所增加,使得速度降下来。

     

    页式和段式的区别?

      相似:离散分配,地址映射机构来实现地址转换

    (1)页是信息的物理单位,分页是为了实现离散分配方式,减少内存的外零头,提高内存利用率,或者说是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地满足用户的需要。

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

    (3)页内系统地址是一维的,即单一的线性地址空间,程序员只需利用一个标识符,即可表示一个地址。分段的作业地址空间是二维的,程序员在标识一个地址时即需要给出段名,又需要给出段内地址

    转载于:https://www.cnblogs.com/jijiji/p/4857245.html

    展开全文
  • WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。  页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame...

     

    WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。
      页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。 其优点是没有外碎片,每个内碎片不超过页大小(空间浪费小)。一个程序不必连续存放。便于改变程序占用空间的大小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用完成而不是操作系统自动完成)。 缺点程序全部装入内存,要求有相应的硬件支持。例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本。增加了系统开销,例如缺页中断处理机,请求调页的算法如选择不当,有可能产生抖动现象。 虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用,如果页面较大,则这一部分的损失仍然较大。 
      段式管理:基本思想就是把程序按内容或过程(函数)关系分成段,每段有自己的名字。一个用户作业或进程所包含的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。 程序通过分段(segmentation)划分为多个模块,如代码段、数据段、共享段。其优点是:可以分别编写和编译。 可以针对不同类型的段采取不同的保护(存储保护容易)。 可以按段为单位来进行共享(存储共享容易),包括通过动态链接进行代码共享(能动态连接)。 
      段页式管理:为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护及地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外,由于在段页式管理中,页表不再是属于进程而是属于某个段,因此,段表中应有专项指出该段所对应页表的页表始址和页表长度。 因为段页式管理是段式管理的页式管理方案结合而成的,所以具有它们二者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外,需要的硬件以及占用的内存也有所增加。更重要的是,如果不采用联想寄存器的方式提高CPU的访内速度,将会使得执行速度大大下降。
    API函数

    1.使用全局和局部函数分配和释放内存的API函数

    /* 头文件 */

    #include <windows.h>

    #include <stdio.h>

    *************************************

    * int main(void)

    * 功能  演示Global*函数的使用

    * 参数  无

    **************************************/

    int main(void)

    {  

         LPVOID lpMem;     //内存地址

         HGLOBAL hMem;  //内存句柄

         SIZE_T sizeMem;   //内存大小

         UINT uFlags; //属性

         //分配内存

         lpMem = (LPVOID)GlobalAlloc(GPTR,1000);

         //将数据复制到内存中

         lstrcpy(lpMem,"this is a string");  

         //获得内存属性,打印

         uFlags = GlobalFlags(lpMem);

         printf("内存中的内容:\"%s\",内存地址:0x%.8x,内存属性:%u\n",

              lpMem,lpMem,uFlags);

         //释放

         GlobalFree(lpMem);

         //分配内存,获取信息

         hMem = GlobalAlloc(GMEM_MOVEABLE,1000);

         sizeMem = GlobalSize(hMem);

         uFlags = GlobalFlags(hMem);

         //打印信息

         printf("内存大小:%d,内存句柄:0x%.8x,内存属性:%u\n",

              sizeMem,hMem,uFlags);

         //锁定

         lpMem = GlobalLock(hMem);

         //释放

         GlobalFree(hMem);

         return 0;

    }

     

    2.分配和释放可读可写的虚拟内存页面

    /* 头文件 */

    #include <windows.h>

    #include <stdio.h>

    /*************************************

    * int main(void)

    * 功能  演示虚拟内存的使用

    * 参数  未使用

    **************************************/

    int main(void)

    {  

         SIZE_T sizeVirtual = 4000;       //大小

         LPVOID lpRound = (LPVOID)0x100000FF;   //地址

         MEMORY_BASIC_INFORMATION  mbi;   //内存信息

         //分配内存,直接分配已提交的内存

         LPVOID lpAddress = VirtualAlloc(

              lpRound,sizeVirtual,

              MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE

              );

         if(lpAddress == NULL)

         {

              printf("VirtualAlloc error: %d\n",GetLastError());

              return 1;

         }

         printf("Alloc:MEM_COMMIT|MEM_RESERVE\n");

         //复制数据到内存中

         CopyMemory(lpAddress,"hello",lstrlen("hello"));

         printf("分配、复制成功,地址:0x%.8x,内容:%s\n",

              lpAddress,lpAddress);

         //获取内存信息并打印

         VirtualQuery(lpAddress,&mbi,sizeof(mbi));

         printf("使用VirtualQuery获得的信息:\n"

              "BaseAddress:0x%.8x\tAllocationBase:0x%.8x\t"

              "AllocationProtect:0x%.8x\tRegionSize:%u\t"

              "State:0x%.8x\tProtect:0x%.8x\tType:0x%.8x\n",

              mbi.BaseAddress,mbi.AllocationBase,

              mbi.AllocationProtect,mbi.RegionSize,

              mbi.State,mbi.Protect,mbi.Type

              );

         设置为READ-ONLY属性

         //if(!VirtualProtect(lpAddress,0,PAGE_READONLY,NULL))

         //{

         //  printf("VirtualProtect error: %d",GetLastError());

         //  return 1;

         //}

         测试READ-ONLY属性,异常

         //CopyMemory(lpAddress,"read only",lstrlen("read only"));

         //printf(lpAddress);

         获取内存信息并打印

         //VirtualQuery(lpAddress,&mbi,sizeof(mbi));

         //printf("使用VirtualQuery获得的信息:\n"

         //  "BaseAddress:0x%.8x\tAllocationBase:0x%.8x\t"

         //  "AllocationProtect:0x%.8x\tRegionSize:%d\t"

         //  "State:0x%.8x\tProtect:0x%.8x\tType:0x%.8x\n",

         //  mbi.BaseAddress,mbi.AllocationBase,

         //  mbi.AllocationProtect,mbi.RegionSize,

         //  mbi.State,mbi.Protect,mbi.Type

         //  );

     

         //DECOMMIT释放,页面将变为保留状态

         printf("Free: DECOMMIT\n");

         if(!VirtualFree(lpRound,sizeVirtual,MEM_DECOMMIT))

         {

              printf("VirtualFree error: %d",GetLastError());

              return 1;

         }

         //获取内存信息并打印

         VirtualQuery(lpAddress,&mbi,sizeof(mbi));

         printf("使用VirtualQuery获得的信息:\n"

              "BaseAddress:0x%.8x\tAllocationBase:0x%.8x\t"

              "AllocationProtect:0x%.8x\tRegionSize:%u\t"

              "State:0x%.8x\tProtect:0x%.8x\tType:0x%.8x\n",

              mbi.BaseAddress,mbi.AllocationBase,

              mbi.AllocationProtect,mbi.RegionSize,

              mbi.State,mbi.Protect,mbi.Type

              );

         //释放内存

         printf("Free:RELEASE\n");

         if(!VirtualFree(lpAddress,0,MEM_RELEASE))

         {

              printf("VirtualFree error: %d",GetLastError());

              return 1;

         }

         return 0;

    }

     

    转载于:https://www.cnblogs.com/mangci/archive/2013/04/12/3016357.html

    展开全文
  • windows 内存管理方式及其优缺点

    千次阅读 2016-03-17 19:37:57
    windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。页式管理基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存地址...
  • windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存...
  • windows内存管理 windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把...
  • Windows内存管理

    2018-07-01 16:20:59
    WIndows内存管理方式主要分为:页式管理、段式管理、段页式管理页式管理的基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page);页式管理把内存空间按页的大小划分成片或者页面,然后把页式虚拟地址与...
  • windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存...
  • Windows内存管理方式主要分为:页式管理、段式管理和段页式管理。 页式管理,它的基本原理:是将各进程的虚拟空间划分为若干个长度相等的页。把内存空间按页的大小划分为片或者页面,然后把页式虚拟地址与...
  • windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与...
  • Windows内存管理的几种方式和优缺点

    千次阅读 2016-07-27 11:34:03
    Windows内存管理方式主要分为:页式管理、段式管理和段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页。把内存空间按页的大小划分为片或者页面,然后把页式虚拟地址与内存地址建立...
  • Windows内存管理方式

    2017-07-14 23:03:00
    一、内存的概念 1. 物理内存:即插在主板上的内存条。他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外)。 但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存占用,甚至导致...
  • windows内存管理

    2019-10-13 21:47:28
    文章目录windows内存管理堆虚拟内存虚拟内存三种状态虚拟内存映射的三种方式虚拟内存的页面属性API及代码示例文件映射简单映射文件共享遍历内存 windows内存管理 windows提供3种方式管理内存: 堆:适合管理大量...
  • WINDOWS内存三种管理方式及优缺点

    千次阅读 2013-09-04 09:11:29
    WINDOWS内存管理方式综述 WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。 页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分...
  • Windows中的内存分为两类: 物理内存即实际内存,实存储器。虚拟内存: 用硬盘空间做内存来弥补计算机RAM空间的缺乏。 虚拟内存可行性的理论基础: 1、进程中的所有内存访问地址都是逻辑地址,这些逻辑...
  • windows内存管理的几种方式的优缺点
  • 一 页式管理 1 页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页 (page) 页式管理把内 存空间按页的大小划分成片或者页面 page frame 然后把页式虚拟地址与内存地址建立一 一对应页表 并用相应的硬件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,771
精华内容 708
关键字:

windows内存管理方式