2010-06-01 2 views
0

검색을 수행했지만 찾을 수 없습니다. 스택 위치를 공유하는 스레드에 대해 언급하는 논문을 읽었습니다. 어떻게 그리고 왜 필요하게 될지 궁금합니다. 모든 사례는 높이 평가 될 것입니다.스레드 공유 스택 위치?

감사합니다.

+0

그리고 당신이 언급 한 논문은 ...? –

+0

만약이 논문이이 질문에 답하지 않았다면 나는 그다지 좋은 논문이 아니라고 말할 것이다. – danben

+0

읽습니다 : "우리는 스택 포인터 이외의 레지스터를 통해 액세스되는 스택 위치에 대한 세트를 유지하지만 스레드 간의 스택 위치를 공유하는 프로그램을 지원하기위한 의도적 인 계획이 아니라 구현의 아티팩트입니다." 제목은 다음과 같습니다. "지우개 : 멀티 스레드 프로그램 용 동적 데이터 분석기" 나는 진술 내용을 이해하지만 스택 위치를 공유하는 것이 가능한지 궁금한가요? – Achilles

답변

1

스택에 변수를 선언하고 그 주소를 다른 스레드에 전달하면 기본적으로 스택 위치를 공유하게됩니다. 그게 종이가 묘사 한 것입니까?

또는 EIP/SP 등을 유지하기 위해 동일한 스택을 사용하는 스레드와 같은 OS 지원을 언급 한 문서가 있습니까? 나를 위해 기다리고있는 문제처럼 보입니다. 나는 당신이 코드의 제약 조건을 알았을 때 스택 공간이 각 쓰레드에 낭비되는 것은 아닌지 확인하기 위해 그렇게 할 수 있다고 생각하지만 과잉과 같은 것처럼 보인다.

+0

이 상세하게 아무 말도하지 않고 개인적으로 나는 스택이 각 스레드에 개인이 될 줄 알았는데,하지만 누군가가 실제로 그것을합니까? 스택 위치 공유를 의미합니까? 그 과정에서 – Achilles

+0

모든 스레드가 전체 프로세스의 가상 주소 공간에 액세스 할 수 - 그래서 위치는 "스택 당"정말 개인 없습니다. 시스템은 (스택 공간이 생성 실에서 초기화되는) 상이한 위치에서 각 스택 프레임에 대한 EIP/SP 및 로컬 변수들을 저장함으로써 스레드 당 전용 공간을 모방하려고하고 TLS (로컬 스토리지 나사)와 같은 기능을 제공하지만 그 모든 단지 환상 어쨌든 종료한다. 교묘하게 만들어진 프로그램은 확실히 동일한 스택 위치를 사용하여 공유 데이터를 저장할 수 있습니다. 윈도우에서는 스레드 스택 크기를 만들 지정할 수 있습니다. – Alienfluid