学习笔记
《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的作用
264页 TCB
- 创建一个任务,需要用到,比如程序的大小,加载的位置等等,当任务执行结束,还要依据这些信息来回收任务所占用的内存空间(本书没有体现)
- TCB不是处理器的要求,而是我们自己为了方便而发明的
网友评论