ADM manual V2 :: chapter 1: system programing

System Programing
第一章主要讲系统进程的基本概念, 为软件写汇编的程序员提供信息。编写操作系统、加载器、链接器、设备驱动程序或需要访问系统资源的实用程序的程序员。这些系统资源通常只对以最高权限级别(CPL=0)运行的软件可用,也称为特权软件。CPL 共四级, 0~3, CPL=0 权限最高。

  1. memory model
    内存地址:
    long mode 下,memory model 是一块flash memory,segment =0, virtual adress = effective adress
    为方便寻址,内存地址分为以下四类:
    (1)logic address = segment_base :effective adress, // 一种寻址方式, eg: mov reax, [0:0xfff00]
    (2) Effective Address = Base + (Scale x Index) + Displacement // 有效地址又称为偏移地址,相当于对一个segment的偏移, 大小按照左边方式任意组合
    (3) Linear Address = Segment Base Address + Effective Address // long model 下, Segment Base等于0, virtual adress = effective adress,但是 virtual address 和 logic address 是两种不同的概念。
    (4) physic address // 实际的物理地址, 即真实的硬件地址。
    内存组成:
    在CPU中, 内存分为虚拟内存和物理内存, 虚拟内存是虚拟地址访问的内存空间,供程序员使用,有多少位的地址线, 就可以有多大的虚拟地址。比如32bit的寻址方式,在程序员看来,有4G的访存空间可用。 故, long Mode, 虚拟内存有 16艾字节(2^64), protected Mode 4G 字节。 物理内存大小其实就安装到机器上的内存条可用大小。根据页表管理, 内存条 大小, 但是实际可以大小与 long mode / protected mode 有关。 由于实际经费考虑, 并不会真的在long mode 下使用64 bit访存空间, 实际默认空间是 1太字节(2^40 bit访存), 当PAE bit 打开时, long model 扩展内存为 4拍字节(2^52 bit访存)。protected 实地址模式,20bit访问地址,对应物理地址空间为1M。 对于不使用的高位地址,默认为全0 或者全1, 这种地址格式称为标准格式,违反标准格式,软件产生 General Exception #GP(0).
    另外,通常情况下,虚拟地址是大于物理地址的, 比如你的内存条256G,虚拟内存1太字节,为了解决这种空间不匹配关系, os会把划分硬件磁盘空间作为虚拟内存,作为拓展内存。

  2. memory management
    segmentation 分离进程与进程使用的数据,提高多个进程同时运行的可靠性。