相关资料 引用&推荐
计算机组成
操作系统原理-1 启动运行流程
操作系统原理-2 进程管理
操作系统原理-3 内存管理
操作系统原理-4 文件系统
操作系统原理-5 并发
操作系统原理-6 网络

内存 memory

MMU

MMU= 段转换单元 + 页转换单元
段:IP(32位: EIP, 64位: RIP) —-段转换—> 逻辑地址 —-页转换—> 物理地址

虚拟内存

分段
段描述符: GDT,LDT
GDT, 全局只有一个.
GDTR寄存器保存 GDT列表的基地址.

LDT, 每个进程单独持有
LDTR寄存器保存 LDT列表的基地址.

选择子(selector), 16bit, (段寄存器: CS,DS)
Index(13bit), TI(1bit), 权限(2bit)
TI(table indicator): 0=GDT, 1=LDT RPL(request privilege level)请求者权限: ring= 0(最高),1,2,3(最低) 注: 各个位的含义 由 由cpu架构/硬件定义

Linux中 ?貌似? 只有GDT,没有LDT.
统一的地址空间. TI=0
32位 0~4GB
64位 0~??TB
RPL=0内核空间;
RPL=3用户空间.

逻辑地址

selector:IP
//selector 段转换单元
if (selector.TI==0)
    GDTR[selector.index]-->GDT 
    if(offset <= GDT.limits && selector.RPL<= GDT.)
         = +IP
        //linux段基地址=0, 用段来区分 用户/内核 权限.
    else
        
else if (selector.TI==1)
    LDTR[GDTR[selector.index]]-->LDT 
    GDT同理
     = +IP

物理地址

注: 逻辑地址 各个位的含义 由cpu架构/硬件定义 寄存器: CR0开启保护模式, 开启分页功能 页表的基地址存于 CR3

物理页=4KB, $2^{12}$,
存32位(4Byte)地址,可以存1K(1024)个,需要10bit来存这个1K 存64位(8Byte)地址,可以存1K/2(512)个,需要9bit来存这个0.5K

二级页, 三级页, 四级页

x64: 
	[A 9bit][B 9bit][C 9bit][D 9bit][offset 12bit页内偏移=4KB页大小]
	[A 9bit][B 9bit][C 9bit][offset 21bit页内偏移=2MB页大小]
	[A 9bit][B 9bit][offset 30bit页内偏移=1GB页大小]

x32: 
	[10][10][12bit页内偏移=4KB页大小]
	.

``=CR3[A][B][C][D]+offset

页表中的其他选项. //TODO 注: 页表的定义由 硬件 确定!

物理内存

分配 空闲表 [base|limits]…. 物理页 4KB, (大页64KB);即对其方式. (有内部碎片) …. base|limits 都是4KB/64KB的倍数. 所以可以右移12位/16位 分配算法: 1,2,3

当空间不足时:(具体由os实现) 淘汰(需要保存 : 例如 swap out ; 不用保存: … ) 设置高低阈值(x1<x2): 当 空闲内存 > x2 时 触发. 直到 空闲内存<x1

回收 回收队列 比较前后空闲地址. 是否可以合并. .

程序在内存中的layout

|低地址 –> 高地址| |.text | .rodata |.data|.其他 |堆 ….. 栈 | <— 内核空间 —> |

  • 数据表示, 值(bit,byte,int,float), 数组

  • (多)进程(pid=fork(), 0==child,0<parent, 0>error), 流程控制,

  • 同步, signal,…., IPC 线程,锁/互斥

  • 堆 , 栈

  • IO,disk,network

  • 中断 ->io, 进程切换….

  • 中断, 时间分片(分时)

    • 进程: PCB(process control block) , PID(process ID)
  • block/cluster

  • 设备 = IO (open ,write, read, close). >汇编 out xxx al

    • (fs) file system
    • 设备
      • disk (扇区512KB–>block(常见4KB)–>file–>fs) FCB(file control block)==inode
      • 网络,…
      • 屏幕,键盘,
      • 驱动,driver