64 비트 및 32 비트 모두에 대한 다중 스레드 Linux 프로세스의 주소 공간 레이아웃에 대한 자세한 내용을 알고 싶습니다. 그것을 묘사하는 어떤 기사에 대한 링크는 높이 평가 될 것입니다. 그리고 내가 그것을 직접적으로 다루기 때문에 전체적인 세부 사항을 알 필요가 있음을 주목하십시오. 그래서 예를 들어 알아야 할 것은 스레드 스택의 위치, 힙, 스레드 개인 데이터 등입니다 ...다중 스레드 Linux 프로세스의 주소 공간 레이아웃
6
A
답변
6
스레드 스택은 스레드 시작시 (또는 심지어 이전에 스택 공간을 설정할 수 있습니다) - mmap
으로 할당됩니다. pthread_attr
s). TLS 데이터는 스레드의 스택 시작 부분에 저장됩니다. 스레드의 스택 크기는 고정되어 있으며 일반적으로 2 ~ 8MB입니다. 스레드가 작동 중일 때 각 스레드의 스택 크기는 변경할 수 없습니다. (첫 번째 스레드 - 주 메인을 실행하는 여전히 주 주소 스택 끝에 스택을 사용하고이 스택을 늘리고 줄일 수 있습니다.) 힙 및 코드는 모든 스레드간에 공유됩니다. 뮤텍스는 data
섹션에있을 수 있습니다. 이것은 단지 구조체입니다.
스레드의 스택의 mmap에 어떤 주소에 고정되지 않습니다
Glibc sources PS 현대 GCC는 스레드가
관련 문제
- 1. 페이지에 전체 프로세스의 가상 주소 공간 분할
- 2. 죽어가는 다중 스레드 프로세스의 코어 덤프
- 3. Linux : 다중 코어 CPU의 프로세스 및 스레드
- 4. 시스템 DLL 주소 공간
- 5. XML 암호화 주소 공간
- 6. Linux 드라이버 : 다른 사용자 프로세스의 메모리 복사
- 7. 프로세스의 메모리 시작 주소 지정
- 8. 다른 프로세스의 키보드 레이아웃 변경
- 9. 스레드 동기화 - 프로세스의 최대 스레드 수
- 10. 다중 포트를위한 다중 스레드?
- 11. 64 비트 Linux 스왑 공간
- 12. Android 레이아웃 - 나머지 공간 채우기
- 13. 다중 프로세스 및 다중 스레드 디자인
- 14. 멀티 스레드 프로그램 : 계산 스레드 스택 공간
- 15. 다중 스레드 #
- 16. 프로세스의 스레드 레벨 메모리 사용량
- 17. 다중 스레드 스트레스 테스트가 실패했습니다.
- 18. 스레드 시작 주소
- 19. Linux 스레드 관련
- 20. 스프링이있는 다중 스레드 컨텍스트 초기화?
- 21. 다중 스레드 프로세스의 strace 출력에서 스레드의 스레드 ID를 얻을 수 있습니까?
- 22. 다중 스레드 다중 클라이언트 프로그래밍
- 23. 다중 스레드 random_r이 단일 스레드 버전보다 느림
- 24. 프로세스의 주소 공간에서 DLL에 의해 사용되는 페이지
- 25. 하나의 Tabactivity에서 다중 레이아웃
- 26. ASP.NET MVC 다중 레이아웃
- 27. 다중 해상도 레이아웃
- 28. 다중 프로세스 프로세스의 출력을 논 블로킹 리디렉션
- 29. WCF의 다중 기본 주소 및 다중 종단점
- 30. Apache 작업자 MPM 및 Linux 스레드
은 특히 나는에 대한 자세한 내용을 알고 싶은 SplitStacks 기능을 무제한으로 스택 수 있습니다
부분입니다. 예를 들어 코드를 포함하고있는 주소 공간의 부분을 처리 할 필요가 없습니다. 쓰기 가능하지 않기 때문입니다. – MetallicPriest
스레드가없는 리눅스 프로세스의 모든 세부 사항을 알고 있습니까? 비 스레드 및 다중 스레드의 차이점은 스택의 수와 위치입니다. – osgx