Linux 시스템에는 커널 공간과 사용자 공간이 있다는 것을 알고 있습니다. 사용자 공간은 일부 특정 프로그램에서 사용되며 시스템 호출과 같은 방식으로 커널 공간과 통신할 수 있습니다.
나는 또한 프로그램의 메모리 사용 규칙이 메모리 레이아웃, 스택, 힙, 텍스트, BSS, 데이터 등이라는 것을 알고 있습니다.
이제 질문이 있습니다. 메모리 레이아웃과 커널/사용자 공간 사이의 관계는 무엇입니까? 메모리 레이아웃은 사용자 공간에 있어야 합니까? 아니면 이 두 개념이 서로 관련이 없는 걸까요?
답변1
이 두 개념은 직교합니다. 메모리를 말할 때 사용자 공간은 사용자 수준 권한으로 실행할 때 접근 가능한 메모리를 의미하고, 커널 공간은 커널 수준 권한으로 실행할 때 접근 가능한 메모리를 의미합니다. 메모리 레이아웃은 메모리가 사용되는 방식을 나타내며 이는 각 "사용자"에게 달려 있습니다.
커널에는 자체 메모리 레이아웃이 있습니다.64비트 x86에 대한 광범위한 문서.