아까의 실험을 통해 얻게된 사실은
fs 레지스터가 tls 의 주소를 직접적으로 가리키는게 아니라,
tls 주소를 담고있는 변수를 가리킨다는 점이다.
즉,
fs 레지스터에는 이중포인터가 들어있고
그 이중포인터를 참조하면 tls에 대한 주소가 담겨있는 그런형태임
4번째 tls 데이터를 뽑을때
fs 에다가 바로 인덱스 4를 집어넣는게 아니라,
fs:0x0를 참조하고, 인덱스 계산을 진행한 후에, 재참조를 함. 즉 이중포인터임.
그래서 무슨 실험을 할거냐고??
fs레지스터를 실제로 확인하고
한번 참조를 한 결과가
tls에 대한 주소와 동일한지 체크할거야.
그리고 이건 이미 확인된 결과인데,
tls에 대한 주소는 쓰레드마다 다르고, 다른 쓰레드의 tls공간에도 접근이 가능함.
fs레지스터안에 담긴 내용물도 쓰레드마다 다 다를것으로 보이는데, 그것까지 확인하면 완료.
근데 이 fs 레지스터의 값을 뭔 수를 써도 안보여주는거같더라???
유저모드에서는 확실히 안되는거같음.
글서 내가 할 것은, 시스템콜을 만들어서 fs 레지스터에 대한 값을 유저공간에 보내주는 걸 만들려고 함.
물론 안먹힐수도 있음.
그래도 함 해봐야지.
아자아자!!
댓글 0