[031][x86汇编语言]第十四章 TCB(Task Control Block)任务控制块 子程序 append_to_tcb_link

学习笔记

《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
[031][x86汇编语言]第十四章 TCB(Task Control Block)任务控制块 子程序 append_to_tcb_link_第1张图片
示意图:向TCB链上追加TCB(任务控制块).png
[031][x86汇编语言]第十四章 TCB(Task Control Block)任务控制块 子程序 append_to_tcb_link_第2张图片
流程图:向TCB链上追加TCB(任务控制块).png
[031][x86汇编语言]第十四章 TCB(Task Control Block)任务控制块 子程序 append_to_tcb_link_第3张图片
具体代码:向TCB链上追加TCB(任务控制块).png

TCB的作用

264页 TCB

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

你可能感兴趣的:([031][x86汇编语言]第十四章 TCB(Task Control Block)任务控制块 子程序 append_to_tcb_link)