📚 文档目录 合集-数的二进制表示-定点运算-BCD 码-浮点数四则运算-内置存储器-Cache-外存-纠错-RAID-内存管理-总线-指令集: 特征- 指令集:寻址方式和指令格式
过去, 只有操作系统和一个程序在内存中.
现在, 操作系统和多个程序都在内存中. 程序等待 I/O 时, 为了避免处理器等待, 需要进行优化, 使得更多的程序可以加载入内存.
内存管理: 在多程序设计系统中, 内存的 “用户部分” 应该被进一步划分以适应多个程序, 这是由系统动态决定的.
系统: 固定的大小
用户程序: 固定的大小, 但各不相同. 当加载一个程序的时候, 将其载入刚好能够容纳下这个程序的最小的区中.
缺点: 产生大量内部碎片.

系统: 固定的大小
用户程序: 按需分配
缺点: 产生大量外部碎片

基本思想:
逻辑地址: 指令中的地址
物理地址:主存中的地址

内存的大小是有限的,但是对内存的需求在不断增加
基本思想:请求分页,一个进程的页只有在需要的时候才被调入
本质:

将主存和虚拟内存分成相同大小的页
页表:

页表的使用增加了主存的访问
为了减少访问主存, 将最常用的页表项加载进 cache
TLB: 页表项被载入 cache

No. | TLB | page table | cache | possibility | ||
|---|---|---|---|---|---|---|
1 | hit \ | valid | ————- | hit | possible, in cache | |
2 | hit \ | invalid | ————- | hit | impossible | |
3 | hit \ | invalid | ————- | miss | impossible | |
4 | hit \ | valid | ————- | miss | possible, in memory bu not in cache | |
5 | miss | valid | hit | possible, in cache | ||
6 | miss | invalid | hit | impossible | ||
7 | miss | valid | miss | possible, in memory bu not in cache | ||
8 | miss | invalid | miss | possible, not in memory |
ps: 快表中只有 valid 情况下才能算 hit
分析:
将程序和数据分成不同长度的段, 并将需要的段载入主存
虚拟地址: 段号 + 段内偏移量
与基于页的虚拟内存相比:
将程序和数据划分为段, 并进一步将段划分为页, 每一个段都有它自己页表
虚拟地址: 段号 + 页号 + 偏移量
优势: 程序在段中可以共享和保护
劣势: 需要多次查表
x86 的机器开机后首先进入实模式
进入保护模式后
80386 保护模式下的地址转换
