• 内存的基础知识


    什么是内存?有什么作用?

    内存是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理

    外存的存取速度慢,CPU读取速度快,设置能够高速存取的内存可以缓和CPU和外存之间的矛盾。

    多道程序系统

    是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插的运行。两个或两个以上程序在计算机系统中同处于开始和结束之间的状态。这就称为多道程序技术运行的特征:多道、宏观上并发、微观上串行。

    在多道程序系统中,几个程序的数据同时放进内存,但是我们怎么区分各个程序的数据放在了什么地方呢?答案就是给内存的存储单元进行编址。每个地址对应一个存储单元。

    如果计算机“按字节编址”,则每个存储单元大小为 1 字节,即 1B,即 8 个二进制位;

    如果字长为 16 位的计算机“按字编址”,则每个存储单元大小为 1 个字,每个字的大小为 16 个二进制位。

    如果告诉我们内存的大小,怎么求地址长度?即需要多少个二进制位才能表示相应数目的存储单元?

    例如:一个电脑有4GB内存,地址长度是多少?

    4GB = 4 * 2^30B = 2^32B

    这么多的“格子”需要2^32个地址才能一一标识,所以地址需要用32个二进制位来表示(0~2^32-1)

    进程运行的基本原理

    指令的工作原理

    指令的工作基于“地址”,每个地址对应一个数据的存储单元。

    我们写的代码要翻译成CPU能识别的指令,这些指令会告诉CPU应该去内存的哪个地址读/写数据,这个数据应该做什么样的处理。

    逻辑地址 vs 物理地址

    逻辑地址 = 相对地址

    物理地址 = 绝对地址

    从写程序到程序运行:编辑-编译-链接-装入

    image-20200729210459389

    三种链接方式

    1. 静态链接
    2. 装入时动态链接
    3. 运行时动态链接

    三种装入方式

    也就是用三种不同的方法完成逻辑地址到物理地址的转换

    1. 绝对装入
    2. 静态重定向
    3. 动态重定向

    image-20200729213459680

  • 相关阅读:
    cf415D Mashmokh and ACM(DP)
    [USACO]EulerianTour (欧拉通路)
    hdu2544 (SPFA)
    hdu2544 (bellman-ford)
    [TC]SRM615 div1 250 AmebaDiv1
    Step By Step (zz from UESTC)
    [USACO]Sweet Butter 多种解法
    Node.js权威指南 (3)
    Web开发常见问题荟萃
    比较vue.js react.js angular.js
  • 原文地址:https://www.cnblogs.com/realzhaijiayu/p/13399778.html
Copyright © 2020-2023  润新知