임베디드/임베디드 레시피

TCB 구조

twoweeks-within 2024. 12. 18. 01:27

 

 각각의 Task : 자기 고유의 TCB 가짐

 

TCB: Kernel이 Task들을 관리하기 위한 Meta Data*

 

typedef struct {
   struct task_tcb_struct *next_ptr;
   struct task_tcb_struct *prev_ptr;
} task_tcb_link_type ;

 

typedef struct task_tcb_struct {
   char                        task_name[200];
   void                         *sp;                                  /* 스택 포인터 */
   uint32               receive_siganl ;                          /* 받은 Signal */
   uint32               wait_signal ;                             /* 기다리는 Signal   */
   uint32               pri;                                          /* Task의 Priority */
   task_tcb_link_type    link;                                   /* for TCB list */
} task_tcb_type ;

 

예제

task_tcb_struct task1, task2, task3;

// task1의 next_ptr이 task2를 가리키고, task2의 next_ptr이 task3을 가리키게 설정
task1.link.next_ptr = &task2;
task2.link.next_ptr = &task3;

// task2의 prev_ptr은 task1을, task3의 prev_ptr은 task2를 가리킴
task2.link.prev_ptr = &task1;
task3.link.prev_ptr = &task2;

 

// task3의 next_ptr은 NULL로 설정하여 리스트의 끝을 표시

task3.link.next_ptr = NULL;

 

>> 사람이 next, prev 를 인식하는거지 , 컴퓨터는 그저 주소를 따라가는 것일뿐

 


ⓐ Task_name : Task의 이름.

     Kernel이 사용 X > 사람 Debugging 목적


ⓑ sp : Stack Pointer, 각각의 Task : 자기 고유의 Stack 보유

각각의 task stack의 사용처 : 각 task이 실행 될 때  local variable등을 저장하는 stack 고유의 용도,

                                          : Context Switching >해당 task의 context를 저장


ⓒ sigs와 wait :  Task끼리 주고 받는 signal들이 ,  Task state를 나타냄

 

ⓓ Link Pointer : TCB를 Double Linked List로 관리 할 수 있도록 해줌

            > 새로운 TCB를 중간에 끼워 넣기도 편함,

            > Priority 순으로 정렬하기도 편함

 Meta Data :  Data를 위한 Data

                    : Data의 속성들을 따로 Data화 해 놓은 Data

> 실제 System에게 아주 중요한 Data

 

ex)  File 속성

. File 등록정보 같은 거 보면 Read Only인지, 언제 만들어 졌는지, 크기는 얼마인지 등의 정보

   > 사용자에게는 중요 X , File system에게는 아주 중요한 정보

>>

TCB : Task 자체를 대표하는 Data

      실 사용자는 이 Data를 이용 X > system 에게는 아주 중요

'임베디드 > 임베디드 레시피' 카테고리의 다른 글

TCB - Task , CS  (1) 2024.12.17
선점형 Multitasking  (0) 2024.12.14
Task Service  (1) 2024.12.14
Task 구조, signal  (0) 2024.12.12
Embedded Software는 무한 Loop  (0) 2024.12.11