2 minute read

메인 메모리

메인메모리(주기억장치)로 프로세스에 필요한 정보를 담는 휘발성 공간

캐시 메모리

  • 메인메모리에서 자주 사용하는 프로그램과 데이터를 저장하여 속도를 빠르게 하는 메모리
  • 지역성
    • 최근에 접근한 데이터는 또 접근할 확률이 높다. (시간적)
    • 배열 (공간적)

워드

  • 컴퓨터에서의 연산의 기본단위
  • 아키텍처에 따라 달라지지만, 1word = 4byte

주소

  • 데이터를 가지고 있는 메모리상의 위치
  • 바이트당 주소를 하나 가진다.

가상 주소 공간

  • 프로세스 관점의 가상의 주소 공간
  • 주소 버스에 의해 결정되고, 64bit의 경우 최대 2^64 개의 주소를 가질수 있다.
  • 프로세스들은 각각의 독립적인 가상주소공간을 가진다.

가상메모리

  • 물리메모리 + swap영역
  • 가상주소가 항상 물리메모리로 mapping 되지 않는다.
  • 물리메모리의 공간이 부족하면 swap영역과 mapping 된다.
  • 프로세스는 더 큰 메모리가 있다고 믿고 잡을 실행할수 있다.

논리주소/물리주소 분리 운영

논리주소는 프로세스가 참조하는 가상 주소 공간의 가짜주소, 물리주소는 진짜 저장되는 메모리주소, 이렇게 두개로 분리하여 운영한다.

프로세스가 단 한개인 시절에는 물리주소만 사용했었다. 그런데 다중 프로그래밍 환경에서 새로 컴파일을 계속해줘야 하는 문제가 있어서 도입되었다.

프로세스가 execution 상태일때 동적으로 물리주소와 mapping 된다. 가상메모리 기법을 통해 더많은 메모리 용량을 사용할수 있다고 간주할수 있다.

CPU에서는 TLB라는 캐시를 통해 가상주소와 물리주소의 빠른 변환 제공해준다.

메모리 영역

  • text
    • 프로그램의 오브젝트 코드가 저장되는 위치
  • data/bss
    • 전역 초기화된 녀석들(data)
    • 전역 안 초기화된 녀석들 (uninitialized data)
  • heap
    • 동적할당
  • stack
    • 프로세스의 스택, 파리미터, 지역변수
    • highest address부터 쌓인다.

메모리 배치 전략

연속메모리할당

  • 연속적인 물리주소로 메모리를 할당하는 기법
  • 단점
    • 물리주소 overflow 발생 위험이 있음 (시작되는 물리주소 + size)
    • 외부단편화의 단점이 있다.
  • 최초적합
    • 첫번째로 찾아낸곳을 할당한다.
  • 최적적합
    • 요구되는 용량과 크기차이가 가장 작은곳을 찾아 할당한다.
  • 최악적합
    • 요구되는 용량과 크기차이가 가장 큰곳을 찾아 할당한다
  • 일반적으로 최초와 최적이 최악보다 좋다

단편화

  • 메모리공간을 100% 활용하지 못하는 상태를 의미한다.
  • 외부단편화
    • 남은 메모리공간을 활용하지 못하는 현상
  • 내부단편화
    • 할당되는 크기를 다 활용하지 못하는 현상

Paging

  • 가상메모리는 페이지로 나누어지고, 물리 메모리는 프레임으로 나눈다.
  • 페이지 테이블에는 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장
  • CPU는 논리 주소로 프로그램이 설정한대로 연속적인 주소값으로 명령을 내리고 이는 메모리로 가기전에 각 페이지의 실제 메모리 주소가 저장되어 있는 테이블에서 물리 주소로 변경
  • 이를 통해 가상주소공간에서는 연속적으로, 물리주소공간에 비연속적인 형태로 할당이 된다.
  • 만약 프로세스가 프레임의 정수배보다 살짝 작다면 할당된 마지막 프레임은 전부 사용되지 않고 남아버리는 내부 단편화가 발생 (페이지가 클수록 내부 단편화 커짐)

세그멘테이션

  • 컴파일러가 세그먼트를 구분하는 역할을 하여 프로그램 소스를 분석하면서 세그먼트(코드, heap, stack, 사용되는 라이브러리(를 식별하고 생성해낸다.
  • 보호와 공유 기능을 수행할수 있다.
  • 세그먼테이션 테이블에는 세그먼테이션 크기를 나타내는 limit와 물리 메모리 상의 시작 주소를 나타내는 address가 있다.
  • 외부단편화의 문제가 있다.
  • 세그멘테이션 오류: limit를 벗어나는 접근

세그먼테이션-페이징 혼용 기법

  • 프로세스 입장에서는 기본적으로 세그먼테이션 기법을 사용하고 OS에서는 페이징 기법을 사용한다.
  • 세그먼테이션-페이징 혼용 기법에서 가상 주소를 물리 주소로 변환하는 과정은 다음과 같다.
    1. 사용자가 어떤 주소에 있는 데이터를 요청하면 해당 주소가 몇 번째 세그먼트의 몇 번째 페이지로 부터 얼마나 떨어져 있는지 계산하여 가상 주소 VA=<S,P,D>를 구한다.
    2. 세그먼테이션 테이션 테이블의 해당 세그먼트 번호로 가서 자신의 영역을 벗어나는 불법 접근이 아닌지, 권한이 없는 페이지에 접근하는 것은 아닌지 등을 확인한다. 만약 권한이 없는 페이지에 접근하거나, 자신에게 주어진 메모리 영역을 벗어나면 세그먼테이션 오류(트랩)을 발생시켜 프로세스를 강제 종료하고, 그렇지 않으면 연결된 페이지 테이블로 간다.
    3. 페이지 테이블에 해당 페이지가 어느 프레임에 저장되어있는지 찾는다. 만약 물리 메모리에 프레임이 있다면 메모리에 바로 접근하고, 없다면 스왑 영역에 가서 해당 페이지를 물리 메모리로 가져온다.
    4. 물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 쓴다.

Leave a comment