第三章 内存管理 一、内存的基础知识

目录

一、什么是内存

二、有何作用 

三、常用数量单位

四、指令的工作原理

五、装入方式

1、绝对装入

2、可重定位装入(静态重定位)

3、动态运行时装入(动态重定位)

六、从写程序到程序运行

七、链接的三种方式

1、静态链接

2、装入时动态链接

3、运行时动态链接

八、总结


一、什么是内存

  1. 内存可存放数据,程序执行前需要先放到内存中才能被CPU处理。
  2. 内存中也有一个一个的“小房间”,每个小房间就是一个“存储单元”。
  3. 如果计算机“按字节编址”则每个存储单元大小为1字节,即1B,即8个二进制位。
  4. 如果字长为16位的计算机“按字编址”,则每个存储单元大小为1个字;每个字的大小为16个二进制位。

二、有何作用 

缓和CPU与硬盘之间的速度矛盾。

三、常用数量单位

第三章 内存管理 一、内存的基础知识_第1张图片

四、指令的工作原理

指令是计算机执行某个特定任务的基本操作,也是计算机进行数据处理和控制的基本单位。指令的工作原理可以简单地概括为以下四步:

  1. 读取指令:计算机从内存中读取指令,并将指令存储到处理器中。

  2. 解析指令:计算机解析指令,确定需要执行的操作,并确定需要的数据和操作符。

  3. 执行指令:计算机执行指令所需的操作,并将结果存储到指定的位置。

  4. 更新程序计数器:计算机更新程序计数器中的指令地址,以便读取下一条指令。

简单来说,指令的工作原理就是根据特定的操作码和操作数,让计算机进行相应的运算和控制操作。在执行指令的过程中,计算机需要根据指令中给定的地址,从内存中读取数据,将其存储到寄存器中,并根据指令中给定的操作码进行相应的计算和输出。指令的工作原理包括多个步骤,但每个步骤都是计算机系统中必不可少的一部分。

五、装入方式

1、绝对装入

在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码

装入程序按照装入模块中的地址,将程序和数据装入内存。

2、可重定位装入(静态重定位)

静态重定位是指在程序编译或链接的过程中,将程序中的逻辑地址转换为物理地址,使程序能够在内存中正确地运行的过程。在静态重定位过程中,编译器或链接器将程序的逻辑地址转换成物理地址,并将转换后的地址写入程序中需要访问的内存地址中。

静态重定位通常在程序装载时进行,重定位的过程主要包括以下几个步骤:

  1. 编译器或链接器为程序中的每个变量、函数和常量分配逻辑地址。

  2. 在程序被装载到内存之前,重定位程序会将程序中的逻辑地址转换成物理地址。

  3. 重定位程序会在程序中插入符号表,用于记录程序中的符号地址和信息。

  4. 如果程序在运行过程中需要地址的修改,静态重定位就会被触发,重定位程序会将需要修改的地址重新计算并写入正确的物理地址。

静态重定位是计算机系统中重要的概念,它使得程序能够在内存中正确地运行,提高了计算机的可移植性和灵活性。

注意:静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。

3、动态运行时装入(动态重定位)

动态重定位是指在程序运行时,将程序中的逻辑地址转换为物理地址的过程。

和静态重定位不同,动态重定位是在程序运行时根据实际情况进行地址转换的。

在动态重定位过程中,操作系统或库函数会在程序被装载进内存之后,根据程序运行时的情况动态地对程序中的地址进行转换。动态重定位通常发生在以下情况下:

  1. 程序中使用了动态链接库或共享库,需要在运行时进行地址转换。

  2. 程序在运行过程中需要动态分配内存,需要动态地调整程序中的地址。

动态重定位通常通过虚拟内存机制来实现,操作系统会将程序中的逻辑地址映射到物理地址上,当程序需要访问某个地址时,操作系统会根据映射关系将逻辑地址转换为物理地址。动态重定位使得程序能够更加灵活地运行,能够适应不同的运行环境和硬件平台。

注意:采用动态重定位时允许程序在内存中发生移动。

六、从写程序到程序运行

  1. 编译:由编译程序将用户源代码编译成若干个目标模块。(编译就是把高级语言翻译为机器语言)
  2. 链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块。
  3. 装入(装载):由装入程序将装入模块装入内存运行。
     

七、链接的三种方式

1、静态链接

静态链接:在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。

2、装入时动态链接

将各目标模块装入内存时,边装入边链接的链接方式。

3、运行时动态链接

在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。

八、总结

第三章 内存管理 一、内存的基础知识_第2张图片

你可能感兴趣的:(操作系统学习,java,开发语言)