Thread Local Storage - место, где храняться локальные переменные потока. Он предназначен для обмена данными внутри потока. Очевидно, что для этого не подходят глобальные переменные, именно в виду их глобальности. Для работы с Tls можно использовать функции, которые(как ни странно) начинаются с Tls(...).
Тем кто пользуются .NET, картинку смотреть нет смысла: для них был введен удобный атрибут ThreadStatic() который создает переменную в TLS прозрачным образом.
В некоторых С run time то же есть поддержка своей "внутренней" tls, для этого есть специальный модификатор __declspec( thread ).
Каждая ячейка в tls имеет размер 4 байта.