컴퓨터에서 메모리의 주소는 이진수로 매겨진다.

 

32비트 혹은 64비트를 사용

- (예) 32 비트의 주소 체계 :  \(2^{32}\) 가지의 서로 다른 메모리 위치 구분

 

현실에서도 행정구역을 나누듯 컴퓨터도 영역을 나누어서 32비트를 사용

- 4KB = \(2^{12}\)byte 단위로 묶어서  page 라는 하나의 영역을 만들어서 사용 - 한 페이지에 12비트

 

1. 주소 바인딩

- 논리적 주소를 물리적 주소로 연결시켜주는 작업

  • 논리적 / 가상 주소 ( logical / virtual address)
    • 각각 의 프로세스 -> 독립적으로 가짐
    • 이 주소에 근거하여 CPU가 기계어 명령을 실행
      -> 해당 주소가  물리적 메모리의 어느위치에 매핑되는지 확인도 필요
    • 0 번지 부터 시작 
  • 물리적 주소 (physical address)
    • 물리적 메모리에 실제로 올라가는 주소
      • 메모리의 낮은 주소 : 운영체제
      • 메모리의 높은 주소 : 사용자 프로세스
  • 주소 바인딩 방식 -  물리적 메모리의 주소가 결정되는 시기에 따라 분류
    • 컴파일 타임 바인딩 (compile time binding)
      • 프로그램을 컴파일하는 시점에 물리적 메모리에서의 주소 결정
      • 위치를 변경하고 싶을때 마다 리 컴파일 필요
        -> 비현실적, 시분할 컴퓨팅 환경에서 사용 X
    • 로드 타임 바인딩 (load time binding)
      • 프로그램이 실행 될때 물리적 메모리에서의 주소 결정 
      • 프로그램이 종료 될때까지 메모리 주소 고정
      • (?) 컴파일러가 재배치 가능 코드를 생성한 경우에 가능한 방식
    • 실행시간 바인딩 (execution time binding / run time binding)
      • 프로그램이 실행된 후에도 프로그램의 물리적 메모리상의 주소가 변경될 수 있는 방식
      • CPU가 주소를 참조할 때 마다 해당 데이터가 물리적 메모리의 어느 위체 존재하는지
        주소 매핑 테이블 (address mapping table)을 이용해 바인딩을 점검
      • 지원 필요
        • 기준(base) 레지스터 혹은 재배치(relocatable) 레지스터
        • 한계 레지스터
        •  MMU(memorry management unit: 메모리 관리 유닛)
          • MMU : 논리적 주소를 물리적 주소로 매핑(mapping) 해주는 하드웨어 장치
           

 

  • MMU 기법 (scheme)
    • 논리적 주소  + 기준 레지스터 값 = 물리적 주소 -> 메모리 
    • CPU 가 논리적 주소 123 번지에 있는 내용 요청
      -> 기준 레지스터에 저장된 23000 값을 더함
      -> 물리적 메모리 23123 번지에 있는 내용 참조
    • 문제
      • 더 한 결과가 해당 프로세스의 주소공간을 벗어 남 -> 다른 영역에 침범 가능 -> 메모리 보안 문제 발생
      • 한계 레지스터를 사용하여 발생을 방지 -> 메모리 영역에 대한 보안을 유지
        • 한계 레지스터에 있는 프로세스의 크기보다 크면 트랩발생 -> 프로세스 강제 종료 

+ Recent posts