orange's一个操作系统的实现--学习过程 第三章:c 什么是LDT

现在,你对于LDT是不是已经有了大致的了解了呢?简单来说,它是一种描述符表,与GDT差不多,只不过它的选择子的TI位必须置为1。

在运用它时,需要先用lldt指令加载ldtr,lldt的操作数是GDT中用来描述LDT的描述符。

上例的LDT很简单,只有一个代码段。不难想像,我们还可以在其中增加更多的段,比如数据段、堆栈段等,这样一来,我们可以把一个单独的任务所用到的所有东西封装在一个LDT中,这种思想是我们在后面章节中的多任务处理的一个雏形。

 

LDT与GDT一样也是一个单独的数据段,每一条内容都是一个段描述符。

orange's一个操作系统的实现--学习过程 第三章:c 什么是LDT_第1张图片

SelectorLDT        equ    LABEL_DESC_LDT        - LABEL_GDT

orange's一个操作系统的实现--学习过程 第三章:c 什么是LDT_第2张图片

orange's一个操作系统的实现--学习过程 第三章:c 什么是LDT_第3张图片

    ; Load LDT
    mov    ax, SelectorLDT
    lldt    ax

    jmp    SelectorLDTCodeA:0    ; 跳入局部任务

 

你可能感兴趣的:(orang's,于渊著)