zoukankan      html  css  js  c++  java
  • Thread Control Block

    Thread Control Block

    The following is the declaration of the Thread Control Block.

    struct tcb {
      u32_t status;
      struct reg_context thread_context;
      void *stack;
      struct thread_info thread_params;
      u32_t executedTime;
      struct tcb *recoveryTask;
      u32_t sched_field;
      u32_t magic_key;
    };
    
    • unsigned int status

      This field holds the status information of the current thread. It can be one of THREAD_ON_CPU, THREAD_READY, THREAD_SUSPENDED THREAD_BLOCKED, THREAD_EXITED or THREAD_MISSED_DEADLINE. 

      This field is not directly updated by the kernel. The kernel thread library informs the scheduler about the status of a thread through the Scheduler API. It is upto the scheduler object to keep this field consistent. For example when a thread exits, the kernel calls the function set_mode(curr_thread,THREAD_EXITED) of the scheduler API. This approach of calling a scheduler function to update the status helps, when the sheduler needs to do additional work (apart from setting it's status) whenever the status of a thread changes. For example, for periodic threads, it might reset them when they exit. 

    • struct reg_context thread_context

      This structure stores the context of a thread. The structure reg_context is architecture specific. This field is accessed by the kernel thread library only. (The scheduler object should not mess with it).

    • struct thread_info thread_params

      This field holds the initial thread parameters, like the start function, stack size, deadline etc. This information is required for resetting threads.

    • void * stack

      This field is a pointer to the stack of the thread.

    • u32_t executedTime

      This field can be used for keeping profiling information for the thread. This is currently not being used.

    • u32_t sched_field

      This field is meant for use by the scheduler object. The kernel never accessed this field. 

      Typically this field will be used by the scheduler object for constructing datastructure of tcb's. For example if the scheduler object stores the ready threads in a list, this field would be used as next pointer.

    • u32_t magic_key

      This field is used for debugging and should go away in the final release.

    http://www.cse.iitd.ernet.in/~soumyadeb/projects/mtp/report/node56.html

  • 相关阅读:
    ng-深度学习-课程笔记-1: 介绍深度学习(Week1)
    java发送http请求和多线程
    Spring Cloud Eureka注册中心(快速搭建)
    Spring boot集成Swagger2,并配置多个扫描路径,添加swagger-ui-layer
    springboot在idea的RunDashboard如何显示出来
    Oracle 中select XX_id_seq.nextval from dual 什么意思呢?
    mysql类似to_char()to_date()函数mysql日期和字符相互转换方法date_f
    MySQL的Limit详解
    HikariCP 个人实例
    NBA-2018骑士季后赛
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8336748.html
Copyright © 2011-2022 走看看