사용자 수준 스레드 스택의 메모리가 메모리에서 어떻게 유지되는지 알고 싶습니다. 나는 모든 스택이 페이지 경계에서 시작할 것이라고 생각한다. 내가 맞습니까? 사용자 수준의 스레드 라이브러리는 모든 스레드 페이지가 연속적이기 때문에 특정 스레드에 대한 스택이 커지지 않고 다른 스레드의 인접한 페이지 경계 스택과 겹치지 않도록합니다 ...다중 사용자 수준 스레드 스택을위한 메모리
1
A
답변
0
이들은 모두 구현 세부 사항입니다. 시스템마다 다릅니다. 무엇을 성취하려고합니까?
0
연속 스택을 사용하는 경우 별도의 스레드에 할당 된 스택간에 충돌이 발생할 수 있습니다. 이것은 가상 공간이 작은 시스템에서 큰 시스템보다 더 가능성이 높으며, 일부 스택이 임의로 커질 수있는 경우가 많습니다.
가장 일반적인 OS (Windows, Linux)는 스레드 스택이 매우 클 수 없다는 가정을합니다 (예 : 1-10Mb). 단일 스레드에 대해 많은 스레드를 가질 수는 없습니다 방법. 이 경우, 필요한 스레드의 수와 각 스택이 얼마나 큰지를 알면 계산이 시작되기 전에 문제가 발생하지 않습니다. 이 경우 모든 스레드 스택을 스택에 넣을 위치를 사전 계산할 수 있습니다. 스택마다 최악의 경우가 있습니다.
그리고이 작품은 .... 아주 잘. 그러나 스택에 대한 수요가 임의로 커질 수 있거나 사전에 몇 개의 스택이 있는지 모를 경우 사전 할당이 작동하지 않습니다. 그리고 이로 인해 이러한 OS를 사용하는 사람들은 문제를 일으 킵니다.
이 문제에 대한 설명은 Why are stack overflows still a problem?을 참조하십시오. 문제를 피하는 방법에 대해서도 제 대답을 읽을 수 있습니다. (힌트 : 제한된 크기의 스택 없음!).
관련 문제
- 1. 다중 스레드 및 메모리
- 2. 사용자 수준 스레드 라이브러리에서 뮤텍스 구현
- 3. 스택을위한 대안
- 4. 다중 스레드 환경에서 공유 메모리 동기화
- 5. C++ 스레드 수준 상수
- 6. applicationDidReceiveMemoryWarning의 메모리 경고 수준
- 7. 다중 포트를위한 다중 스레드?
- 8. 다중 스레드 #
- 9. 코어 데이터 다중 스레드
- 10. 다중 스레드 다중 클라이언트 프로그래밍
- 11. 프로세스의 스레드 레벨 메모리 사용량
- 12. asp.net 타이머가있는 다중 스레드
- 13. QThread는 사용자 수준, 커널 수준 또는 둘 다 있습니까?
- 14. 다중 스레드 컬 응용 프로그램에 메모리 할당 문제가 있습니다.
- 15. 메모리 손상 부스트를 사용하는 경우 :: shared_ptr의를 다중 스레드 환경에서
- 16. 사용자 수준 설정 방법
- 17. .NET 다중 스레드 싱크ronronization
- 18. 다중 스레드 JDBC
- 19. JDBC 연결의 다중 스레드
- 20. OpenCV 다중 스레드 호출
- 21. 다중 스레드 NSDocument 종료
- 22. WCF 다중 스레드 호출
- 23. Eclipse에서 다중 스레드 디버그
- 24. VB에서 다중 스레드 ObservableCollection
- 25. Java에서 다중 스레드 구현
- 26. 다중 스레드 및 GDB
- 27. 다중 스레드 오류
- 28. 다중 스레드 데이터베이스 쿼리
- 29. 다중 스레드 힙 관리
- 30. 다중 스레드 처리 문제
이것은 일반적인 의심이었습니다 ... 특정 목표를 달성하려고 시도하지 않았지만 ... 여전히 리눅스 사용자 수준의 스레드 라이브러리라고 할 수 있습니다 ... 광범위한 관점에서 다중 스레드 스택의 메모리를 메모리에 보관하는 방법은 무엇입니까? ... –
귀하의 질문에 제공된 정보를 가지고 답변 할 수 없습니다. 이것은 매우 구현 의존적 인 질문이며, 특별한 목표 (CPU 아키텍처, OS 버전, 호출 규칙, 스레딩 모델)가 없다면 대답이 없습니다. –