운영체제 상주 영역과 사용자 프로세스 영역

 

운영체제 - 낮은 주소 영역 사용

사용자 프로세스 - 높은 주고 영역 사용

 

프로세스를 메모리에 올리는 방식

 

1. 연속할당(contiguos allocation)
    물리적 메모리를 다수의 분할로 나누어 하나의 분할에 하나의 프로세스를 적재하도록 하는 방식
     

  • 고정분할(fixed partition allocation) 방식 : 메모리를 고정된 크기로 미리 나누어 놓은 방식
    • 융통성 떨어짐 : 프로그램의 크기보다 작을 수도 클수도 있으므로
      • 외부조각(external fragmentation) : 프로그램의 크기가 미리 나누어둔 분할 보다 커서 적재를 못하여 발생하는 메모리 고간
      • 내부조각(internal fragmentation) : 반대 상황, 프로그램 크기가 작아서 발생하는 남는 메모리 공간
  • 가변분할 (variable partition allocation) 방식 : 프로그램의 크기에 따라 동적으로 변하는 방식
    • 한번 할당한 메모리공간에 다른 프로그램이 적재 될시 해당 프로그램이 그 공간보다 크면 외부조각 발생
    • 해결방안 (새로운 프로그램의 크기가 n)
      1. 최초적합(first-fit) 방법 :크기가 n 이상인 가용공간들 중 가장 먼저 찾는 곳에 적재
      2. 최적합(best-fit) 방법 : 크기가 n 이상인 가용공간들 중 가장 작은 공간에 적재
      3. 최악적합(worst-fit) 방법: 크기가 가장 큰 곳에 적재
    • 그래도 외부조각이 발생시 해결방법
      • 컴팩션(compaction) : 실행시간 바인딩 방식이 지원되는 환경에서만 가능
        • 사용 중인 공간을 다 앞으로 모으로 안쓰는 공간을 다 모아서 하나의 공간으로 만드는 방법

 

 

2. 불연속할당 (noncontiguos allocation)
    하나의 프로세스가 물리적 메모리의 여러 위치에 분산하여 적재하는 방식
    - 페이징 기법 : 동일한 크기로 나누어 메모리에 올리는 기법
    - 세그멘테이션 기법 : 크기는 일정하지 않지만 의미있는 단위(코드 ,데이터, 스택등)로 나누어서 메모리에 올리는 기법

    - 페이지드 세그멘테이션 : 세그먼트 하나를 다수의 페이지로 구성하는 기법

+ Recent posts