zoukankan      html  css  js  c++  java
  • python06--计算机内存结构与存储管理(P27)

    1.内存单元和地址

      计算中(程序中)直接使用的数据保存在计算机的内存储器(简称内存)。内存是CPU可以直接访问的数据存储设备。与之对应的是外存储器,简称外存,如磁盘、光盘、磁带等。保存在外存里的数据必须先装入内存,而后CPU才能使用它们。

      内存的基本结构是线性排列的一批存储单元。每个单元的大小相同,可以保存一个单位大小的数据。具体单元大小可能因计算机的不同而有所不同。在目前最常见的计算机中,一个单元可以保存一个字节(8位二进制代码)的数据。因此存放一个整数或者浮点数,需要连续的几个单元。例如标准的浮点数需要8个单元。

      

      内存单元具有唯一编号,称为单元地址,或简称地址。单元地址从0开始连续排列,全部可用地址为从0开始的一个连续的正整数区间,如上图所示。

      在程序执行中,对内存单元的访问(存取其中数据)都通过单元的地址进行,因此,要访问一个单元,必须先掌握其地址。在许多计算机中,一次内存访问可以存取若干单元的内容。例如目前常见的64位计算机,一次可以存取8个字节的数据,也就是说一次操作访问8个单元的内容。基于地址访问内存单元是一个O(1)操作,与单元的位置或整个内存的大小无关,这是分析与数据结构有关的算法时的一个基本假设。

    在高级语言层面讨论和分析数据结构问题时,人们通常不关心具体的单元大小或地址范围,只假定所考虑数据保存在内存的某处,而且假定这种访问是常量时间的。

    2.对象存储和管理

      在python程序运行中,建立对象时需要安排存储,还有许多与对象存储和使用有关的管理工作。解释器的一个专门子系统(称为存储管理系统)负责这些工作。这一工作是自动进行的,编写程序的人不必关心。另外,当一个对象不再使用时,存储管理系统也会设法回收其占用的存储,以便在将来用于存储其他对象。

    3.对象的访问(使用)

      在编程语言层面,知道了一个对象的标识(内存地址就是一种标识)就可以直接访问(使用)它。已知对象标识(无论它是否直接为对象地址),访问相应对象的操作可以直接映射到已知地址访问内存单元,这种操作可以在常量时间完成(是O(1)时间操作)。

      如果被访问的是一个组合对象,其中包含了一组元素,这些元素被安排在一块内存区域(一块连续的元素存储区)里,而且每个元素的存储量相同。在这种情况下,可以给每个元素一个顺序编号(通常为下标,index)。如果知道了一个组合对象的元素存储区位置,又知道要访问的元素的编号,访问元素也是O(1)时间操作

  • 相关阅读:
    普通函数跟箭头函数中this的指向问题
    vue之router学习笔记
    vue之登录和token处理
    vue之router钩子函数
    eslint----standard 代码规范
    vscode----配置vue开发环境
    vue----安装教程
    vue----全局组件,局部组件
    vue----常用实例方法--$mount(),$destroy(),$watch(),$forceUpdate()
    vue----生命周期
  • 原文地址:https://www.cnblogs.com/yanyufeng/p/9622017.html
Copyright © 2011-2022 走看看