철학과 학생의 개발자 도전기

메모리 본문

운영체제

메모리

Younghun 2024. 2. 25. 20:51

1. 메인 메모리

  • 메인 메모리는 CPU가 직접 접근할 수 있는 기억 장치이다.
  • 프로세스가 실행되려면 프로그램이 메모리에 올라와야 한다.
  • 주소가 할당된 일련의 바이트들로 구성되어 있다.

CPU는 PC 레지스터가 가르키는 메모리 주소에 접근하여 다음에 수행할 명령어를 가져온다.
명령어 수행 시 메모리에 필요한 데이터가 없으면 해당 데이터를 우선해서 가져와야 한다.


2. MMU (Memory Management Unit)

  • 논리 주소를 물리 주소로 빠르게 변환하는 하드웨어다.
  • 메모리 보호나 캐시 관리 등 CPU의 메모리 접근을 관리한다.

한정적인 메모리 공간을 효율적으로 사용하기 위해 '가상 주소' 개념이 등장한다. 가상 주소로 실제 데이터를 가져오기 위해서는 빠른 주소 변환이 필요한데 MMU가 바로 그 역할을 수행한다.

 

프로세스는 독립적인 메모리 공간을 가져야 되고, 자신에게 할당된 공간만 접근해야 한다.
MMU는 프로세스가 잘못된 접근을 하면 trap을 발생시켜 메모리를 보호한다.

  • base와 limit 레지스터로 접근 가능한 영역을 지정한다.
  • base 레지스터는 프로세스 시작 주소를 물리 주소로 저장한다.
  • limit 레지스터는 프로세스의 크기를 저장한다.
  • 위 영역을 벗어나면 trap을 발생시킨다.
  • base와 limit 값은 커널 모드에서만 수정 가능하다.

3. 메모리 과할당

  • 실제 메모리 크기를 초과하여 프로세스에 할당한 상황이다.
  • 페이징 등의 메모리 관리 기법은 사용자가 눈치채지 못하도록 눈속임을 통해 메모리를 할당해준다.
    • 프로그램의 일부만 메모리에 올린다.
    • 페이지 폴트 발생 시 해당 페이지를 디스크에서 메모리로 올린다.
  • 그러나 빈 프레임이 없을 경우, 운영체제는 다음 두 가지 해결책을 사용할 수 있다.
    1. 프로세스를 종료시켜 빈 프레임을 얻는다.
    2. 프로세스를 스왑하여 빈 프레임을 얻는다.
  • 사용성을 위해 2번째 방식을 채택하며 어떤 페이지를 교체할 것인지는 알고리즘에 따라 다르다.
  • 페이지의 값과 디스크 값의 싱크를 맞추기 위해 매번 쓰기 연산을 한다면 시간이 오래 걸린다.
    • 변경 비트를 활용하여 쓰기 연산의 횟수를 줄인다.
    • set bit → 페이지 값이 수정되었기 때문에 디스크에 수정된 내용을 쓴다.
    • clear bit → 페이지 값이 수정되지 않았기 때문에 디스크에 다시 쓸 필요가 없다.

4. 캐시 메모리

  • 메인 메모리에 저장된 내용의 일부를 임시로 저장해둔다.
  • CPU와 메인 메모리의 속도 차이로 인한 성능 저하를 줄일 수 있다.
  • CPU와 메모리 상호작용 과정
    • CPU가 찾는 데이터가 캐시에 존재하는지 확인한다.
    • hit -> 캐시에 데이터가 존재하기 때문에 그대로 사용한다.
    • miss -> 캐시에 데이터가 없기 때문에 메인 메모리에서 데이터를 가져온다.
  • 캐시 적중률을 높여야 성능이 좋아진다. 적중률을 높이기 위해 두 가지 지역성을 사용한다.
    1. 시간 지역성 : 최근에 참조된 데이터는 다시 참조될 확률이 높다.
    2. 공간 지역성 : 참조된 주소와 인접한 주소의 데이터가 참조될 확률이 높다.

'운영체제' 카테고리의 다른 글

파일시스템  (0) 2024.02.26
페이지 교체 알고리즘  (0) 2024.02.12
페이징과 세그먼테이션  (0) 2024.02.12
뮤텍스와 세마포어  (0) 2024.02.05
Race Condition과 Dead Lock  (0) 2024.02.05