공부한 기록/운영체제

운영체제(6)

YongE 2022. 11. 3. 19:23

메모리 관리

메모리를 사용할 프로세스들을 위해 메모리를 할당, 제거, 보호하는 활동이다.

%여기서 보호란, 프로세스는 적재된 메모리의 영역에서만 다뤄질 수 있으므로 다른 메모리영역으로의 접근을 막는 것이다.

 

메모리를 관리하는 정책은 다음과 같다.

  • 적재 정책 fetch: 디스크->메모리로 프로세스의 반입시기를 결정하는 것.
    • 요구 적재 : 주체에 따른 참조요청에 따라 다음에 실행할 프로세스를 적재하는 것.
    • 예상 적재 : 시스템의 요청을 미리 예측해서 적재하는 것. 
  • 배치 정책 : 적재된 프로세스를 어느 위치의 메모리에 저장할 것인지를 결정하는 것. 저장위치에 따라 효율이 달라진다.
  • 대치 정책 : 메모리가 충분하지 않을 때 적재된 프로세스 중에 제거할 것을 정하는 것이다.

 

매핑 mapping : 논리적 주소와 물리적 주소를 연결짓는 것을 말한다.

바인딩 binding : 매핑시키는 것을 의미한다.

바인딩은 어느 시간대에서도 가능하다.

 

 

메모리 관련 용어

  • 동적 적재
    • 프로세스 실행 직전에 주소를 확정하는 메모리 운영 방법이다.
    • 모든 명령을 메모리에 적재하지 않고 메인 프로그램만 적재한다.
  • 중첩
    • 프로그램의 크기가 메모리보다 클 때 바로 실행하지 않는 프로그램의 일부분을 중첩시켜 놓는 것이다.
    • 운영체제 영역과 메모리의 일부에는 꼭 필요한 명령어와 데이터를 저장, 나머지 영역은 중첩으로 필요할 때만 호출해 사용하는 것이다.
  • 스와핑 (프로세스 교체)
    • 스왑 인 : 할당된 프로세스가 실행이 종료되면 디스크로 내보내는 것이다.
    • 스왑 아웃 : 새로운 프로세스를 메모리에 적재하는 것이다.

 

 

 

 

 

 

 

 

메모리 적재 방법

메모리 적재에는 크게 두 가지 방법이 있다. 연속 메모리 적재방법과 비연속(분할) 메모리 적재방법이다.

 

  • 다중프로그래밍
    • 고정 분할 : 메모리를 고정된 크기로 여러 개 분할하는 것이다. 이 때 시스템의 부하를 분석하여 분할하는 갯수와 크기를 정한다. 분할 영역의 크기는 시스템의 전체 효율을 나타낸다.
      • 내부단편화 : 고정된 크기보다 작은 프로그램이 할당됐을 때 남는 빈 공간. 비효율을 자아낸다.

내부단편화 3kb+1kb=4kb

  • 가변 분할 : 고정 없이 필요한 크기의 메모리를 할당하는 것이다.
    • 외부단편화 : 메모리에 남아있는 공간이 50+50MB(총 100MB)가 있고, 필요한 공간은 70MB이다. 그러나 이 두 공간이 연속적이지 않아 메모리 공간을 사용할 수 없는 것이 '외부단편화'이다.

 

위의 조건식은 고정분할의 메모리 보호에서도 쓰인다.

 

 

메모리 배치 방법 또한 중요하다. 기존 작업 몇개가 실행을 종료하고 사용가능한 공간이 생기면  어느 공간에 프로세스를 할당한 것을 정해야 하기 때문이다.

  • 최초 적합 방법은 사용가능한 공간 중에 수용 가능할 만큼 큰 첫 번째 공간에 할당하는 것이다. 큰 공간은 빠르게 찾을 수 있지만 공간활용이 떨어진다는 단점이 있다.
  • 최적 적합 방법은 사용 가능한 공간에서 가장 작은  공간에 할당하는 것이다. 사용가능공간을 크기 순으로 정렬해야 사용할 수 있기에 이용률을 올라가나 많은 시간이 소요된다.
  • 최악 적합 방법은 가장 큰 사용가능 공간에 할당하는 것이다. 메모리 활용면에서 최적보다 낫다.

 

메모리 통합 방법

하나의 작업이 끝날 때 생기는 빈 공간 근처에 다른 빈 공간이 있는지 점검하고 하나로 합치는 것이다. 흩어진 빈 공간을 모두 통합하는 건 곤란할 뿐만 아니라 비효율적이다.

 

메모리 압축 방법

할당된 메모리 공간을 적절히 움직여 사용가능한 공간을 하나의 큰 블록으로 만드는 것이다. 압축하는 동안 시스템을 일을 중지해야 하고, 압축작업은 자주 해야 하므로 오버헤드가 발생한다.

 

버디 시스템 Buddy system

큰 버퍼를 반복적으로 이등분하여 작은 버퍼들을 만들어내는 작업이다. 이는 가능할 때마다 인접한 빈 버퍼들을 통합하는 과정을 반복한다. 버퍼를 나눌 때 각각을 서로의 버디라고 한다.

728x90
반응형