7-2.[os] 메모리 주소
- 메모리에 접근할 때는 주소를 이용
- 절대 주소, 상대 주소
32bit CPU 와 64bit CPU 의 차이
- CPU의 비트: 한 번에 다룰 수 있는 데이터의 최대 크기
- 32bit CPU: 한 번에 다룰 수 있는 데이터의 최대 크기가 32bit
64bit CPU: 64bit
CPU 내부 부품은 모두 이 비트를 기준으로 제작됨
- 레지스터 크기
- 산술 논리 연산장치
- 대역폭 (데이터를 전송하는 각종 버스의 크기)
- 대역폭의 버스를 통해 한 번에 옮겨지는 데이터의 크기
- 메모리 주소 공간(address space)
- 메모리 주소 레지스터
메모리 주소 레지스터(MAR) -> 32bit -> 0~32^32-1 -> 총개수가 2^32개 -> 16진수 00000000~FFFFFFFF -> 총크기: 2^32B -> 4GB
결론: 32bit CPU 컴퓨터는 메모리를 최대 4GB까지 사용할 수 있다
64bit는 2배
- 64bit - > 0~2^64-1 -> 총개수가 2^64개 -> 2^64B -> 16,777,216TB -> 무한대에 가까운 메모리
- 물리 주소 공간 (physical address space): 하드웨어 입장에서 바라본 주소 공간
- 논리 주소 공간 (logical address space): 사용자 입장에서 바라본 주소 공간
절대 주소와 상대 주소
- 단순 메모리 구조
- 운영체제 영역 + 사용자 영역
- 사용자 프로세스는 운영체제 영역을 피하여 메모리에 적재
- 사용자 프로세스가 운영체제의 크기에 따라 매번 적재되는 주소가 달라지는 것은 번거로운 일
메모리를 거꾸로 사용 -> 복잡해서 잘 안 씀
상위 메모리부터 사용자 영역 할당
경계 레지스터: 운영체제 영역과 사용자 영역 경계 지점의 주소를 가진 레지스터
- 메모리 관리자는 사용자가 작업을 요청할 때마다 경계 레지스터의 값을 벗어나는지 검사 -> 만약 경계 레지스터를 벗어나는 작업을 요청하는 프로세스가 있으면 그 프로세스를 종료
절대 주소(absolute address) = 물리주소(pysical address)
- 메모리 관리자 입장에서 바라본 주소
- 메모리 주소 레지스터가 사용하는 주소
- 컴퓨터에 꽂힌 램 메모리의 실제 주소
- 사용자 입장에서 절대 주소는 불편하고 위험함
- 매번 운영체제 영역을 확인해야함
- 운영체제가 업그레이드되면 주소가 매번 바뀜
- 노출되면 실수나 고의적인 조작으로 운영체제 영역을 침범
상대 주소(relative address) = 논리주소(logical address)
- 사용자 영역이 시작되는 번지 -> 0번지로 지정하여 사용
- 사용자 프로세스 입장에서 바라본 주소
- 주소가 항상 0번지부터 시작하기 때문에 편리
상대 주소를 절대 주소로 변환하는 과정
사용자 프로세스가 상대 주소 40번지에 있는 데이터를 요청
CPU는 메모리 관리자에게 40번지에 있는 내용을 가져오라고 명령한다
메모리 관리자는 재배치 레지스터를 사용하여 상대 주소 40번지를 절대 주소 400번지로 변환하고 메모리 400번지에 저장된 데이터를 가져온다.
절대 주소 값 = 상대 주소 값 + 재배치 레지스터 값
- 재배치 레지스터: 주소 변환의 기본이 되는 주소값을 가진 레지스터