I was trying to understand the internal data structure of FreeRTOS, specially how TCBs are maintained internally and how Kernel handle them based on multiple conditions.
I went through the code, but its difficult.
Please share the information or if you have any document, please share that.
Your question is a bit imprecise, so hard to answer. As Richard Barry said, TCBs are just C structures with information about tasks. FreeRTOS keeps tasks (via their TCBs) organized via a number of lists, there are lists of ready tasks at each task priority that are used for scheduling, there is a list of tasks that are currently blocked for a period of time, a list of task that are blocked for an indefinite period of time, and every queue/semaphore and the like have lists of tasks waiting to access the queue (either waiting for it to have an item or for room to be available).