zoukankan      html  css  js  c++  java
  • [操作系统]内存的基础知识

    什么是内存
      1.存储单元
      用于存放数据的硬件,程序执行前先放到内存中才能被CPU处理
    2.内存地址
      给内存存储单元编地址,从0开始每个地址对应一个存储单元,可以按字节编址,也可以按字长编址,一个存储单元一个字节或字长

    内存运行的基本原理
      1.指令的工作原理
        内存有数据段和程序段,指令存放在程序段,变量存放在数据段
        程序编译成指令,会告诉CPU应该去内存的哪个地址存取数据,数据应该进行怎样的处理

      2.逻辑地址 vs 物理地址
        逻辑地址是相对地址 , 物理地址是绝对地址 ,编译后装入过程是把逻辑地址到物理地址转换

      3.从写程序到程序运行:编辑-->编译-->链接-->装入
        编译:把高级语言编译成机器语言,生成多个目标模块
        链接:把目标模块形成完整逻辑地址
        装入:形成物理地址

    4.三种链接方式->形成逻辑地址
      静态链接:将各目标模块和所需库函数连接成完整的可执行文件
      装入时动态链接:边装入边链接
      运行时动态链接:边运行边链接

    5.三种装入方式->形成物理地址
      绝对装入:编译时就知道程序产生的绝对地址
      静态重定位:编译后装入的时候将逻辑地址转换成物理地址,位置不可更改
      动态重定位:运行时指令运行的过程中进行逻辑地址到物理地址转换,现在都采用这种方式,需要重定位寄存器

    内存空间的分配和回收
    内存空间的扩展(虚拟性,把物理较小的内存扩展成较大的内存)
    内存的地址转换

    绝对装入:编译时就知道程序产生的绝对地址
    静态重定位:编译后装入的时候将逻辑地址转换成物理地址,位置不可更改
    动态重定位:运行时指令运行的过程中进行逻辑地址到物理地址转换,现在都采用这种方式,需要重定位寄存器

    内存保护:进程只能访问自己的内存空间
    1)采用上下限寄存器
    2)采用重定位寄存器和界地址寄存器,重定位(基址寄存器)存储起始物理地址,界地址寄存器(限长寄存器)存储最大逻辑地址

  • 相关阅读:
    【2018.05.05 C与C++基础】C++中的自动废料收集:概念与问题引入
    【2018.04.27 C与C++基础】关于switch-case及if-else的效率问题
    【2018.04.19 ROS机器人操作系统】机器人控制:运动规划、路径规划及轨迹规划简介之一
    March 11th, 2018 Week 11th Sunday
    March 10th, 2018 Week 10th Saturday
    March 09th, 2018 Week 10th Friday
    March 08th, 2018 Week 10th Thursday
    March 07th, 2018 Week 10th Wednesday
    ubantu之Git使用
    AMS分析 -- 启动过程
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14212492.html
Copyright © 2011-2022 走看看