目录:
- 系统编程阶段内存地址
- 虚拟地址
- 页表
- 内存置换算法
1.系统编程阶段:
进程概念->进程控制->基础IO->进程间通信->进程信号->多线程
进程概念:冯诺依曼体系结构------>现代计算机硬件体系结构
2.程序地址空间:
进程之间数据独有
内存地址->就是内存区域的一个编号
虚拟地址:相同的地址(☞虚拟地址)并不是相同的内存区域 mm_struct
每个程序都需要连续的地址空间
虚拟地址如何存储数据:
虚拟地址空间又是什么?
我们所看到的程序地址空间其实时一个虚拟地址空间,操作系统通过mm_struct这个结构体我IE进程描述一个空间,称为内存描述符。
为什么要使用虚拟地址空间?
页表中不但记录了
创建子进程都发生了什么?-->【写时拷贝技术】:操作系统通过复制父进程创建子进程,子进程初始时与父进程指向同一块物理内存区域,当内存
数据改变时,会为子进程重新开辟内存更新页表
进程的独立性:进程之间应该相互独立,因为独立才更加稳定
虚拟地址空间和页表的作用?-->提高内存利用率,增加内存访问控制,保持进程独立性
多进程之间可以传送地址,但不可以访问
页表是如何将虚拟地址转换为物理地址?
分段式内存管理:
内存地址的构成:段号+段内偏移
段表--有很多的段表项
分页式内存管理:地址中的页号去找到页表项,通过页表项中的物理地址加上页内偏移地址获取到物理地址
构成:页号+页内偏移
页表--页表项()
***段页式内存管理:
内存地址的构成:段号+段内页号+页内偏移
段表项中包含页内起始地址
段内页表项中又包含物理页号
内存置换算法:内存只有4G,但是想要处理5G的内存数据,怎么办?FIFO:先进先出 LFU:最近最少未使用 LRU:最近最久未使用
swap分区也叫交换内存,将内存中的数据置换到交换分区中,腾出内存处理数据