计算机基本硬件结构
内存分层
内存管理过程
在操作系统中需要做到以下几点:
1.抽象:即不关心底层的细节也不关心外设的位置,我们只需要访问一个连续的地址空间即可(这个地址空间称为逻辑地址空间)
2.保护:因为内存中可以存储不同进程的地址空间,为了防止不同进程相互破坏彼此的地址空间,所以需要将不同的进程的地址空间独立出来
3.共享:进程之间可能需要交互,需要进程之间进行安全可靠的数据传递
4.虚拟化:当内存空间不够的时候,将需要存储的数据到内存中,不需要存储的数据就存储在磁盘中,当需要该数据时就从磁盘中调到内存.
在操作系统中管理内存的方法
1.程序重定位
2.分段
3.分页
4.虚拟内存
5.按需分页虚拟内存
在实现这些方法之前还高度依赖硬件
1.必须知道内存架构
2.MMU(内存管理单元):硬件组件负责处理CPU的内存访问请求
地址空间和地址空间的生成
地址空间
物理地址空间:硬件支持的地址空间 (包括内存和磁盘)
起始地址:0,到地址:Maxsys
逻辑地址空间:一个运行的程序所拥有的内存范围
起始地址:0,到地址Maxprog
所有的逻辑地址空间都映射到物理地址空间,它可能存储在内存中或者磁盘中,可以理解成相当于一个仓库的物料存储点的一张表(逻辑地址),存储点就是物理地址,这个存储点可能是内存或者磁盘
逻辑地址生成
当高级语言编译成机器语言,这个机器语言的文件为.o文件,这个文件总是从0开始,由于一般程序都是有多个文件组成的,所以需要通过linke将一些调用的库或者多个文件链接成一个.exe文件
在CPU的MMU元件中存储了逻辑地址和物理地址的映射关系.当CPU执行某条指令的时候,CPU的ALU元件会发起请求,发起请求的参数就是一个逻辑地址,MMU就会根据这个逻辑地址找到物理地址,如果MMU中没有这个逻辑地址就会在内存中查找,如果查找到了CPU的控制器就会在主存发起请求,请求这个物理地址的内容,这个内容就是指令的内容,ALU得到指令的内容就可以执行了.
操作系统在执行这些操作前完成逻辑地址和物理地址的映射
操作系统会设置程序调到内存中的界限当超过了这个界限就会触发内存异常