컴퓨터 공학

[공유] 8. 메모리 관리

혼새미로 2015. 11. 26. 19:58
반응형

http://cafe.naver.com/itpe39/1472

 

 

 

8. 메모리 관리

 

1) 메모리 관리 개요

 

. 메모리 관리 목적

 

  - 컴퓨터 시스템의 메인 메모리(주기억장치) CPU가 작업을 수행하기 위하여 대기 시키는 공간으로 사용한다. 메모리는 디스크 보다 빠르고 CPU작업을 즉시 지원해 줄 수 있기때문에 디스크에 비하여 값이 비싸고 규모가 작다.

  - 메모리 관리의 목적은 이러한 제한된 메모리를 CPU의 활용 극대화를 위해서 디스크에 존재하는 프로세스를 적절하게 배치, 교체, 할당하는 것이 목적이다.

   . 메모리 관리 유형

 

유형

 

 

설명

 

 

주소지정

 

 

-논리 메모리에서 물리 메모리로 주소를 찾아가는 방식

 

 

-Paging Segmentation기법이 존재한다.

 

 

할당

 

 

-CPU가 필요로 하는 프로세스를 메모리에 할당하는 방식을 말한다.

 

 

-메모리의 할당에는 고정할당(Fixed Allocation)과 가변할당(Dynamic Allocation)이 있다.

 

 

-가변할당 방법에는 최초 적합(first fit), 최적 적합(best fit), 최악 적합(worst fit)등이 있다.

 

 

교체

 

 

-CPU에 의해서 필요로 하는 프로세스가 메모리에 없을 경우 디스크로부터 읽어 와서 메모리에 놓아야 한다.

 

 

-그런데, 기존에 메모리에 프로세스가 모두 할당이 되었으면, 일부를 교체해야 하는데 이때에 교체 알고리즘이 활용된다.

 

 

-Random교체, FIFO교체, Optimal교체, second 기회, LRU, LFU등이 있다.

 

 

 

 

2) 메모리 주소 지정 방식

 

. 메모리 관리에서 페이지(Page)와 프레임(Frame)의 개념

 

    - 메모리 관리에서 Page는 논리적인 단위이며, Frame은 물리적인 단위를 나타낸다.

     - Page는메모리를 논리적으로 나누는 단위인데, 물리적인 위치와 관계없이 논리적인 크기 단위를 말한다.

     - Frame은실제 메모리에 저장되는 물리적인 단위를 말하는데, 메모리에서 데이터를 읽고 쓰는 과정에서 페이지에서프레임으로 변환하는 단계가 필요하다.

. 페이징 할당

 

     - CPU에서나오는 모든 주소는 페이지 번호(p)와 페이지 변위(d) 두개의 부분으로 나누어진다. 페이지 번호는 페이지 테이블(pagetable)을 액세스할 때 사용되며, 페이지 테이블은 주 메모리에서 각 페이지가위치하는 주소를 갖고 있다. 이 페이지 주소에 페이지 변위를 더하면 원하는 물리 주소가 된다. 아래의 그림은 페이지 번호와 변위가 어떻게 물리 주소로 변환되는가를 보여준다.

그림 8-1. 페이지 테이블을 이용한 논리-물리 메모리 매핑

     - 페이징 할당기법을 사용하면, 외부 단편화 문제가 해결된다. , 모든 놀고 있는 분할에 프로세스를 할당할 수 있기 때문이다. 또한, 하나의 프로세스를 여러 페이지에 할당할 경우 물리 메모리는 연속적이지 않아도 된다. , 논리적인 페이지는 연속적으로 보일지라도 실제 물리 메모리는불연속적으로 할당된다.

. 페이지 테이블 구조(TLB, Translation Look a side Buffer)

 

     - 위에서 논리메모리 주소에서 물리 메모리 주소로 변환하기 위해서는 반드시 페이지 테이블을 액세스하여 프레임 번호를 찾아야 한다. 페이지 테이블은 메모리 액세스 시에 항상 참조되어야 한다. 따라서, 페이지 테이블을 CPU내부의 레지스터로 구현하면 빠르겠지만, 워낙 페이지 테이블 양이 많아서 레지스터로 구현하기에는 너무 비싸다. 주로페이지 테이블은 메인 메모리 영역의 일부를 할당하여 구현한다.

     - 페이지 테이블을메인 메모리 영역으로 구현 할 경우, 원하는 메모리에 액세스 하기 위해서는 항상 2번의 메모리 액세스를 필요로 한다.(하나는 페이지 테이블 액세스, 두 번째는 원하는 메모리 액세스)

     - 따라서, 메모리 액세스 성능은 50%정도 저하된다. 이 문제를 해결하기 위하여 연관레지스터 또는 변환 참조 버퍼(associative register 또는 TLB, Translation Look-aside Buffer)라고 불리는 특수한 소형 하드웨어캐시가 사용된다.

그림 8-2. TLB와 페이지 테이블을 이용한 논리-물리 메모리 매핑

     - 연관 레지스터는비싸기 때문에 페이지 테이블의 일부분 밖에는 가지고 있을 수가 없다. 만약, 페이지 번호가 연관 레지스터에서 찾아지지 않으면, 페이지 테이블에가서 찾아야 한다. 이렇게 해서 프레임 번호가 얻어지면 그것을 메모리 액세스에 사용한다.

3) 세그멘테이션(Segmentation)

 

. 기본 개념

 

     - 페이징의한기지 문제점은 사용자가 보는 메모리와 물리 메모리가 다르다는 점이다. 사용자가 보는 메모리는 단순히바이트의 연속적인 배열로 보지 않는다. 예를 들어, 파스칼프로그램을 작성한다고 가정하면, 파스칼 프로그램에는 데이터영역도 있고,프로그램 영역도 있고, 함수 영역도 존재한다. 사용자는메모리가 데이터 영역, 프로그램 영역, 함수 영역이 따로구분되어 있다고 생각한다. 그러나, 물리 메모리는 그렇게구분되지 않고 단순한 바이트의 배열로 되어 있다.

- 이렇게 사용자가보는 메모리와 물리 메모리가 다르게 생겼는데, 세그멘테이션은 이런 메모리는 사용자가 보는 관점과 비슷하게구분 지어 준다. , 사용자가 보는 논리적인 구조를 세그멘트라고한다.

. 세그멘테이션 하드웨어

 

     - 세그멘테이션하드웨어는 아래 그림에서 보는 바와 같이 프로그램의 서브루틴 부, 스택 부, 심볼 테이블 부 등을 세그먼트로 구분하여 물리 주소 공간에 별도로 저장하였다.각각의 세그먼트에는 기준 주소와 한계 주소가 있는데, 기준 주소는 해당하는 세그먼트의 시작주소를말하고, 한계 주소는 해당 세그먼트주소가 지정될 수 있는 한계 메모리 주소를 의미한다.

그림 8-3. 세그멘테이션 하드웨어를 활용한 물리주소할당 사례

- 세그멘테이션에서물리 메모리 주소 지정 방식은 기준 주소와 한계 주소를 비교하여 지정한다. 먼저 세그먼트 번호 S와 변위 d CPU로부터 받으면, 세그먼트 테이블에서 번호 s에 해당하는 한계크기를 가지고 와서 변위 d와 비교한다. 이 때 d가 한계 크기를 벗어난다면, 트랩을 발생하여 물리 메모리 주소 지정을중지한다. 만일, 한계 범위 내에 있다면 기준 주소를 가지고와서 변위 d와 합하여 물리 주소를 찾아간다.

그림 8-4. 세그멘테이션 하드웨어를 활용한 물리 주소한계 점검

    - 그러나, 세그멘테이션기법을 많이 사용하다 보면 외부 단편화 문제가 많이 발생한다. , 할당공간이 요구하는 프로세스보다 작아서 더 이상 메모리 공간을 할당할 수 없게 되는 현상이 생긴다. 물론, 여유 공간 압축 기법(Compaction)으로 어느 정도 해결할수는 있지만 한계가 있다.

4) 페이지화된 세그멘테이션(Segmentation with Paging)

 

. 기본 개념

 

     - 페이징 기법과세그멘테이션 기법을 혼합한 것이 페이지화된 세그멘테이션 기법이다. 페이지화된 세그멘테이션 기법은 주로 Intel 386컴퓨터부터 사용되고 있으며, 세그멘테이션 기법과 2단계 페이징을 사용하여 주소를 찾아간다. 페이지화된 세그멘테이션기법은 세그먼트를 나타내는 세그먼트 번호와 변위를 찾아와서 base주소와 한계(limit)를 검사한다. 만일, 한계를넘어가는 주소라면 트랩 발생 시키고 중지된다. 그렇지 않다면, 세그먼트번호와 변위를 합하여 선형 주소를 만든다.

     - Intel 386컴퓨터는 2단계 페이징 기법을 사용하는데, 세그멘테이션 기법에서 찾아온 선형주소는먼저 페이지 디렉토리에서 디렉토리를 찾는다. 찾아진 디렉토리 항을 가지고 페이지 테이블 항을 찾고 이를변위와 더하여 페이지 프레임을 찾아 간다.

그림 8-4. 페이지화된 세그멘테이션 하드웨어를 활용한물리주소 매핑

 

 

5) 메모리 할당

 

. 메모리 할당

 

  - 주 메모리는 운영 체제뿐만 아니라 여러 사용자 프로세스도 수용해야한다. 메모리는 일반적으로 두 부분으로 나누어지는데, 하나는메모리에 상주하는 운영체제를 위한 것이며, 다른 하나는 사용자 프로세스를 위한 것이다.

  - 사용자 프로세스는 운영체제를 위한 메모리에 접근이 제한되어 있으며, 만약 이에 대한 접근을 시도 시 운영체제는 Trap으로 간주하여에러를 발생시키고 사용자 프로세스의 동작을 중지 시킨다.

. 고정 메모리 할당 기법(FixedAllocation)

 

  - 고정 메모리 할당은 프로세스가 필요로 하는 메모리 크기를 일정하게할당하는 기법이다. 이 기법은 구현이 쉽다는 장점이 있지만, 프로세스의요구 크기와 관계 없이 메모리를 할당하기 때문에 단편화(Fragmentation)을 유발하고, 불필요한 페이지 교체를 유도할 수 있다.

그림 8-5. 고정 메모리 할당 사례

  - 위의 그림에서 보는 바와 같이 운영체제에 균등하게 분할을 나누어서프로세스에게 할당하고, 각 분할의 상한과 하한 경계 값을 비교하여 그 범위를 넘어가는 주소를 지정하는경우 Trap을 발생한다.

. 가변 메모리 할당 기법(DynamicAllocation)

 

  - 가변 메모리 할당 기법은 고정 할당과 다르게 메모리 자유 리스트(free list)를 가지고 있다가 프로세스가 들어오면 요구하는 페이지 만큼만 할당하는 기법이다.

  - 이 기법은 프로세스의 요구 페이지 크기에 따라서 가변적으로 할당할수 있기 때문에 메모리 활용도를 높일 수 있다. 아래 표는 가변 할당하는 몇 가지 기법을 나타낸다.

기법

 

 

설명

 

 

최초 적합

 

 

첫 번째 사용 가능한 가용 공간을 할당한다. 검색을 집합의 시작에서부터 하거나 지난 번 검색이 끝났던 곳에서 시작될 수 있다.

 

 

충분히 큰 가용 공간을 찾았을 때 검색을 끝낼 수 있다.

 

 

최적 적합

 

 

사용 가능한 공간들 중에서 가장 작은 것을 택한다. 리스트가 크기순으로 되어 있지 않다면 전 리스트를 검색해야 한다.

 

 

이 방법은 아주 작은 가용 공간을 만들어 낸다.

 

 

최악 적합

 

 

가장 큰 가용공간을 택한다. 이때 자유 공간들이 크기 순으로 정렬되어 있지 않으면 전 리스트를 다 검색해야 한다.

 

 

. 외부 및 내부 단편화(fragmentation) 현상

 

     - 가변 메모리할당 기법에 의해서 메모리 공간을 프로세스에 할당하다 보면, 할당할 수 없어서 남게 되는 공간이 있는데, 이를 단편화(fragmentation)이라고 한다.

     - 단편화는크게 외부 단편화(external fragmentation)내부 단편화(internal fragmentation)으로 나누어 진다. 외부단편화는 하나의 분할 전체 크기가 너무 작아서 프로세스에 할당이 안된 상태를 말한다. 내부 단편화는하나의 분할이 프로세스에 할당이 되기는 하였으나, 정확하게 할당이 되지 않고, 일부가 남아서 미 사용 되는 공간을 말한다.

그림 8-6. 가변 메모리 할당 사례

     - 위의 그림에서보는 바와 같이 분할 1 15k할당 공간을 가지고 있으나, job1 25k, job220k, job3 18k의 메모리 공간을 요구하기 때문에 프로세스에 할당해 줄 수 없다. 이렇게 할당을 못하고 남아있는 공간을 외부 단편화라고 한다.

     - 반면, 분할3은 할당에 job3에되기는 하였으나 전체 30k공간 중 18k만 할당되고 나머지 12k는 미 할당된 채로 남아 있는데, 이러한 공간을 내부 단편화라고한다.

 

반응형

'컴퓨터 공학' 카테고리의 다른 글

컴퓨터구조 문제  (0) 2015.11.26
시험문제  (0) 2015.11.26
힙 정렬 코드  (0) 2015.11.26
N-QUEEN 알고리즘 코드  (0) 2015.11.26
중위연산을 후위연산으로 식 표현후 계산하는 코드  (0) 2015.11.26