一个进程到两个进程是质的飞跃,两个进程到三个进程是量的积累。
应用程序的能力是有限的,很多事情做不了,只能交给操作系统来做。
一件事情中需要操作系统做的那一部分就涉及到特权级变换。
不要被Linux2.X后续动辄几百万几千万的代码量所吓倒,除去各种名目的驱动、各种名目的文件系统之外,内核中的内核代码量只有几十万行。
保护模式内存管理
在后续的一段时间内,需要将保护模式的特征进行系统再认识后才能继续进行更精细的后续实现。否则会出现囫囵吞枣导致的各种问题。
“保护模式”和“实模式”这两个词是从不同的角度进行的描述,但从字面上看不出其内涵。
“保护模式”=分段+分页+特权级
任务间的保护是靠内存映射机制(段映射和页映射)实现的
任务内的保护是靠特权级检检查实现的。
保护模式的内存管理是在4G逻辑线性地址空间进行第一次树状划分内存的过程。
这种技术将内存空间分成一个或者多个段的线性区域,从而对内存中一个数据对象的寻址就需要使用一个段的起始地址(即段地址)和一个段内偏移地址二部分组成。
保护模式中80x86提供了4G的物理空间。这是CPU在地址总线上可以寻址的地址空间。这个地址空间是平坦的,地址范围是0到0XFF FF FF FF。这个物理地址空间可以映射到读写内存。
虚拟地址空间被分割成大小相等的二半。一半由GDT来映射变换到线性地址,另一半由LDT来映射。
当发生进程切换时,LDT会更换成新进程的LDT,但是GDT并不会改变。因此GDT映射的一半虚拟地址空间是系统中所有进程所共享的,但是LDT所映射的一半是在进程切换时被修改。
系统中所有进程共享的段由GDT来映射,这样的段通常包含操作系统的段。LDT段可以想像成属于操作系统的数据。使用LDT来隔离每个进程,实施进程保护措施。
在不涉及特权级转换的操作系统认识中,“保护模式”其实没有其特定内涵。