아까의 실험을 통해 얻게된 사실은


fs 레지스터가 tls 의 주소를 직접적으로 가리키는게 아니라,


tls 주소를 담고있는 변수를 가리킨다는 점이다.



즉,


fs 레지스터에는 이중포인터가 들어있고


그 이중포인터를 참조하면 tls에 대한 주소가 담겨있는 그런형태임



4번째 tls 데이터를 뽑을때


fs 에다가 바로 인덱스 4를 집어넣는게 아니라,

fs:0x0를 참조하고, 인덱스 계산을 진행한 후에, 재참조를 함. 즉 이중포인터임.





그래서 무슨 실험을 할거냐고??


fs레지스터를 실제로 확인하고

한번 참조를 한 결과가


tls에 대한 주소와 동일한지 체크할거야.



그리고 이건 이미 확인된 결과인데,

tls에 대한 주소는 쓰레드마다 다르고, 다른 쓰레드의 tls공간에도 접근이 가능함.


fs레지스터안에 담긴 내용물도 쓰레드마다 다 다를것으로 보이는데, 그것까지 확인하면 완료.





근데 이 fs 레지스터의 값을 뭔 수를 써도 안보여주는거같더라???


유저모드에서는 확실히 안되는거같음.


글서 내가 할 것은, 시스템콜을 만들어서 fs 레지스터에 대한 값을 유저공간에 보내주는 걸 만들려고 함.


물론 안먹힐수도 있음.


그래도 함 해봐야지.



아자아자!!