之前由于“中职组磐云杯网络空间安全“的赛项和一系列乱七八糟的项目和单子,没有更新博客,也很少去学习。

暑假给自己放了两个月的假,现在打算好好学习,也准备即将到来的九月份和十月份的考试。

今天复习一下操作系统的内存管理。

关于内存

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

不过这次是站在操作系统的角度上来考虑这个问题。

	内存由存储单元组成。

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

进程是靠指令来运行的。指令是二进制代码组成的。

从写程序到程序运行一共分为3步,首先是编译,然后是链接,最后是装入。

关于链接
进程的链接分为三类:
	1、静态链接
	2、装入时动态链接
	3、运行时动态链接

静态链接是指在程序链接时就将程序的各个目标模块和他们需要的库函数连接成一个完整的可执行文件
装入时动态链接是指将各个模块装入内存时,一边装入一边链接。
运行时动态链接时指在程序执行时,在需要目标模块时才对他进行链接。
关于装入
1、绝对装入
	直接把绝对地址写入程序(只适用于单道程序设计)
2、静态重定位
	装入时对地址进行重定位,装入时把逻辑地址转换成绝对地址。根据内存的当前状态进行重定位。将装入模块导入内存的适当位置。
3、动态重定位
	动态运行时装入。把地址转换推迟到程序真正需要执行时才进行。使用重定位寄存器来存放装入模块时的存放的初始未知。需要一个重定位寄存器的支持。
内存管理和相关的概念

1、操作系统负责内存空间的分配和回收
2、程序员只用关注逻辑地址。而逻辑地址到物理地址由操作系统负责进行转换。
3、操作系统需要提供某种技术从逻辑上对内存空间进行扩充
4、操作系统需要提供内存保护功能。让进程在运行过程中各自运行,互不干扰。

可以设置上下限寄存器,利用重定位寄存器和界地址寄存器进行判断越界问题。

内存覆盖和交换问题

内存空间扩充技术:
		1、覆盖技术
		2、交换技术

下一篇我们将着重来阐述这两种内存空间扩充技术的实现方法。