Oh dear ... it's been more than a year since my OS class in grad school and we were doing that all on SPARC, which is completely different from x86. But I know that Linux uses the 1-1 model to implemented threading in the kernel. So each thread is actually a different process, as far as the kernel is concerned (i.e. the PIDs are the same, but the TIDs are different), therefore I think that each thread has its own TSS and its own kernel stack, which makes sense as each thread needs its own instruction pointer, among other things. This page
seems to have some good info, but I don't have the time to read it all right now :-(.
BTW you might want to ask a mod to move this to the programming forum, as it might get better coverage there. Not sure.