美文网首页
[031][x86汇编语言]第十四章 TCB(Task Cont

[031][x86汇编语言]第十四章 TCB(Task Cont

作者: AkuRinbu | 来源:发表于2018-06-05 17:08 被阅读0次

    学习笔记

    《x86汇编语言:从实模式到保护模式》
    https://www.jianshu.com/p/d481cb547e9f

    TCB(Task Control Block)任务控制块的结构

    任务控制块TCB的结构.png

    子程序 append_to_tcb_link :在TCB链上追加任务控制块

    ;-------------------------------------------------------------------------------
    append_to_tcb_link:                         ;在TCB链上追加任务控制块
                                                ;输入:ECX=TCB线性基地址
             push eax
             push edx
             push ds
             push es
             
             mov eax,core_data_seg_sel          ;令DS指向内核数据段 
             mov ds,eax
             mov eax,mem_0_4_gb_seg_sel         ;令ES指向0..4GB段
             mov es,eax
             
             mov dword [es: ecx+0x00],0         ;当前TCB指针域清零,以指示这是最
                                                ;后一个TCB
                                                 
             mov eax,[tcb_chain]                ;TCB表头指针
             or eax,eax                         ;链表为空?
             jz .notcb 
             
      .searc:
             mov edx,eax
             mov eax,[es: edx+0x00]
             or eax,eax               
             jnz .searc
             
             mov [es: edx+0x00],ecx
             jmp .retpc
             
      .notcb:       
             mov [tcb_chain],ecx                ;若为空表,直接令表头指针指向TCB
             
      .retpc:
             pop es
             pop ds
             pop edx
             pop eax
             
             ret
    
    • TCB(Task Control Block) 任务控制块
    • 新增加的TCB会不断被添加到最后;
    • 单个TCB的字节数是 0x46;
    • TCB的首个双字内容是 下一个TCB的基地址
    • 最后一个TCB的首个双字内容是0
    示意图:向TCB链上追加TCB(任务控制块).png 流程图:向TCB链上追加TCB(任务控制块).png 具体代码:向TCB链上追加TCB(任务控制块).png

    TCB的作用

    264页 TCB

    • 创建一个任务,需要用到,比如程序的大小,加载的位置等等,当任务执行结束,还要依据这些信息来回收任务所占用的内存空间(本书没有体现)
    • TCB不是处理器的要求,而是我们自己为了方便而发明的

    相关文章

      网友评论

          本文标题:[031][x86汇编语言]第十四章 TCB(Task Cont

          本文链接:https://www.haomeiwen.com/subject/qvxisftx.html