系统内存常见的分配方式(学习)

  1.     ;***************************************************************
  2.     ; 内存看上去是这样的:
  3.     ;              ┃                                    ┃
  4.     ;              ┃                 .                  ┃
  5.     ;              ┃                 .                  ┃
  6.     ;              ┃                 .                  ┃
  7.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  8.     ;              ┃■■■■■■■■■■■■■■■■■■┃
  9.     ;              ┃■■■■■■Page  Tables■■■■■■┃
  10.     ;              ┃■■■■■(大小由LOADER决定)■■■■┃
  11.     ;    00101000h ┃■■■■■■■■■■■■■■■■■■┃ PageTblBase
  12.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  13.     ;              ┃■■■■■■■■■■■■■■■■■■┃
  14.     ;    00100000h ┃■■■■Page Directory Table■■■■┃ PageDirBase  <- 1M
  15.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  16.     ;              ┃□□□□□□□□□□□□□□□□□□┃
  17.     ;       F0000h ┃□□□□□□□System ROM□□□□□□┃
  18.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  19.     ;              ┃□□□□□□□□□□□□□□□□□□┃
  20.     ;       E0000h ┃□□□□Expansion of system ROM □□┃
  21.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  22.     ;              ┃□□□□□□□□□□□□□□□□□□┃
  23.     ;       C0000h ┃□□□Reserved for ROM expansion□□┃
  24.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  25.     ;              ┃□□□□□□□□□□□□□□□□□□┃ B8000h ← gs
  26.     ;       A0000h ┃□□□Display adapter reserved□□□┃
  27.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  28.     ;              ┃□□□□□□□□□□□□□□□□□□┃
  29.     ;       9FC00h ┃□□extended BIOS data area (EBDA)□┃
  30.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  31.     ;              ┃■■■■■■■■■■■■■■■■■■┃
  32.     ;       90000h ┃■■■■■■■LOADER.BIN■■■■■■┃ somewhere in LOADER ← esp
  33.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  34.     ;              ┃■■■■■■■■■■■■■■■■■■┃
  35.     ;       80000h ┃■■■■■■■KERNEL.BIN■■■■■■┃
  36.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  37.     ;              ┃■■■■■■■■■■■■■■■■■■┃
  38.     ;       30000h ┃■■■■■■■■KERNEL■■■■■■■┃ 30400h ← KERNEL 入口 (KernelEntryPointPhyAddr)
  39.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  40.     ;              ┃                                    ┃
  41.     ;        7E00h ┃              F  R  E  E            ┃
  42.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  43.     ;              ┃■■■■■■■■■■■■■■■■■■┃
  44.     ;        7C00h ┃■■■■■■BOOT  SECTOR■■■■■■┃
  45.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  46.     ;              ┃                                    ┃
  47.     ;         500h ┃              F  R  E  E            ┃
  48.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  49.     ;              ┃□□□□□□□□□□□□□□□□□□┃
  50.     ;         400h ┃□□□□ROM BIOS parameter area □□┃
  51.     ;              ┣━━━━━━━━━━━━━━━━━━┫
  52.     ;              ┃◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇┃
  53.     ;           0h ┃◇◇◇◇◇◇Int  Vectors◇◇◇◇◇◇┃
  54.     ;              ┗━━━━━━━━━━━━━━━━━━┛ ← cs, ds, es, fs, ss
  55.     ;
  56.     ;
  57.     ;       ┏━━━┓       ┏━━━┓
  58.     ;       ┃■■■┃ Tinix使用   ┃□□□┃ 不能使用的内存
  59.     ;       ┗━━━┛       ┗━━━┛
  60.     ;       ┏━━━┓       ┏━━━┓
  61.     ;       ┃      ┃ 未使用空间  ┃◇◇◇┃ 可以覆盖的内存
  62.     ;       ┗━━━┛       ┗━━━┛
  63.     ;
  64.     ; 注:KERNEL 的位置实际上是很灵活的,可以通过同时改变 LOAD.INC 中的 KernelEntryPointPhyAddr 和 MAKEFILE 中参数 -Ttext 的值来改变。
  65.     ;     比如,如果把 KernelEntryPointPhyAddr 和 -Ttext 的值都改为 0x400400,则 KERNEL 就会被加载到内存 0x400000(4M) 处,入口在 0x400400。
  66.     ;

 

加入汉字显示时,0x10000-0x3FFFF为kernel;0x0c000-0ffff为ASC16点阵库;0x40000-0x7FFFF为256KB的汉字点阵;0x80000-0x8FFFF为临时操作数据FAT表根目录表等。0x90000-0x9FBFF为LOADER程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值