User/Kernel space in linux machine
🏷️User/Kernel space in linux machine
📌1. x86 linux machine
- virtual address space는 4GB로 구성된다.
- 하위 3GB는 사용자 모드에서 사용되고 상위 1GB (3GB ~ 4GB)는 커널 모드에서 사용된다.
1. User Space
- 범위:
0x00000000 - 0xBFFFFFFF
(0GB ~ 3GB)
2. Kernel Space
- 범위:
0xC0000000 - 0xFFFFFFFF
(3GB ~ 4GB)
- 모든 프로세스는 동일한 커널 주소 공간을 공유한다.
- 진짜로 동일한 커널 코드이다.
- 즉, process A나 process B가 동일한 system call(exception)을 호출한다면, 그 순간 program counter(x86의 경우 IP) 동일한 logical address를 가리키게 된다.
- 커널 코드, 커널 데이터, 페이지 테이블, 시스템 레벨 버퍼 등이 이 영역에 위치한다.
- 커널 이미지는 충분히 작기 때문에 커널 영역 1GB로 충분하다.
- 실제로는 1GB도 너무 충분히 크기 때문에 모두 매핑되지 않는다.
📌2. x86_64(AMD64) linux machine
- virtual address space는 2^48Byte로 구성된다.
- 64bit중 48 bit만 주소 지정에 사용한다.
- It is divided in half.
- 128TB for user
- 128TB for kernel