프로세스의 스레드가 스택을 제외한 주소 공간 (모든 세그먼트)을 공유한다는 것을 알고 있습니다. 각 스레드는 자체 스택을 가지고 있습니다. 나는 또한 같은 주소 공간에 있다는 것을 읽었고 스레드는 다른 스레드 (here 및 here)의 스택에 속하는 메모리 위치에 액세스 할 수 있습니다.스레드가 동일한 프로세스의 다른 스레드 스택에 액세스 할 수 있습니까?
위의 내용이 정확하다면 OS에 스레드의 주소가 표시 될 때 어떤 결과가 발생합니까? 스레드가 다른 스택에 무언가를 쓰고 손상 시키면 어떻게 될까요? OS가 일종의 허가 거부 오류를 생성하지 않는 이유는 무엇입니까?
이 질문에 대한 대답이 운영 체제에 따라 다르면 Linux를 고려하십시오.
"OS가 일종의 권한 거부 오류를 생성하지 않는 이유는 무엇입니까?" 왜 그랬 겠지? 그리고 누가 반드시 * invalid *라고 말합니다 - 액세스되는 주소가 스택 공간의 쓰레기 부분에 있지 않는 한, 스택 주소를 공유하는 것은 적당하지만 기술적으로 합법적 인 사용법을 볼 수 있습니다 (주소를 공유 상태로 전달). 다른 스레드에서 액세스). 스레딩 모델과 메모리 모델을 매우 잘 알고 있지 않는 한 다시 * 추천하지는 않습니다.하지만 유효하지 않은 것과 같지는 않습니다. –
OS에는 이미 그 추상화가 있습니다. 한 프로세스는 다른 프로세스의 메모리를 엉망으로 만들 수 없습니다. 그러나 스레드와 같은 프로그래머는 훨씬 더 효율적입니다. 당신은 두 가지 방법 모두 가질 수 없습니다. –