zoukankan      html  css  js  c++  java
  • 内存管理

    内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。

    一个运行中的程序,譬如网页浏览器在个人电脑或是图灵机(Turing machine)里面,为一个进程将数据转换于真实世界及电脑内存之间,然后将数据存于电脑内存内部(在计算机科学,一个程序是一群指令的集合,一个进程是电脑在运行中的程序)。内存能被实际组织在许多方法里头,例如磁带或是磁盘,或是小数组容量的微芯片。 从1950年代开始,计算机变的更复杂,它被连接于许多种类的内存。内存管理的任务也变得复杂,甚至必须要在同一台机器上相同的时间运行多个进程。

    在内存内,一个程序(操作系统)在每一个数据区块持续地追踪实体位置,及移动实体上的数据去改善其性能及保证可靠性,对于每个用户层(user-level)的程序,操作系统分配一段虚拟内存空间,当进程起始时,不需要移动数据到实体设备间,数据存于磁盘内的虚拟内存空间,也不需要去配置主存空间给该进程,当用户有需要用到时,他们才会很自由地加载到主存内。

    可以想像一个很大的程序,当他运行时变成进程,而大部分的内存空间都被存到磁盘内虚拟内存地址,需要用到的部分才被加载到内存内部提供服务。

    主存使用

    一个程序结构由以下两部分而成:

    • “本文区块”,也就是指令存放,提供CPU使用及运行
    • “数据区块”,存储程序内部本身设置的数据,例如常数字符串,像是GUI接口内部一些文字消息,或是程序设计时所放入的消息数据,数据可借由程序运行时由输入(input)的方式加入,或者经由程序运行的流程中被移除。

    当一个程序运行,操作系统将程序的数据区块及本文区块映射到虚拟内存空间内部,然后在内存运行程序的指令,无论如何,当程序运行时就必须去存储暂时性的数据,或更重要的,它会调用一些函数(function)或是例程(subroutine),并且存储当前函数的状态,最好的数据结构方法,数据由堆栈(stack)的方式存储,当我们完成这个函数,数据会由堆栈的pop方式取出,堆栈将会在函数的生命周期内动态的成长,操作系统提供区分本文区块及数据区块,而堆栈区块则在一个进程的最顶端,这种方式称为段式结构(segments)或“分段”。

     

    我们的公共号

  • 相关阅读:
    记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书
    记-阅读以及书籍推荐(2014年9月7日更新)
    初探领域驱动设计(1)为复杂业务而生
    异步编程 In .NET
    Windows平台分布式架构实践
    Windows平台分布式架构实践
    一不小心写了个WEB服务器
    MVC5
    从Membership 到 .NET4.5 之 ASP.NET Identity
    bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序
  • 原文地址:https://www.cnblogs.com/wuguiyunwei/p/7053801.html
Copyright © 2011-2022 走看看