메모리 관리

2023. 5. 15. 01:08CS/운영체제

728x90
반응형

프로세스와 메모리

  • 프로세스가 실행상태에서 하는 동작은 프로그램 카운터(PC)를 참조하여 수행될 명령을 읽어 와서 CPU의 해당 명령을 수행하는 것인데, 이때 프로그램 카운터가 가리키는 주소라는 것이 결국 메모리상의 특정 위치가 되는 것이다.
  • 당장 사용하지 않는 데이터나 프로그램, 또는 대량의 데이터나 많은 프로세스가 필요한데, 메모리에 다 가져올 수 없는 경우 보조기억장치에 저장해놓고 일부부만 가지고와서 동작시킨다.
  • 자주 사용하는 명령어는 캐시 메모리에 두어 실행속도를 향상시킨다.

기억장치 계층구조

  • 적절한 비용으로 높은 성능을 내기위한 구조
  • 메모리 호출 - 언제 새로운 프로세스를 메모리에 둘 것인가?
  • 메모리 배치 - 다음에 실행될 프로세스를 메모리 내의 어느 곳에 둘 것인지 고려
  • 메모리 교체 - 메모리가 꽉 찬 상태에서 새로운 프로세스를 메모리에 적재해야 한다면 어떤 프로세스를 제거할 것인가
  • 메모리 분할 - 고정/동적으로 할건지 고려

단일 프로그래밍 환경

  • 초기의 시스템은 오직 하나의 프로세스만 메모리를 전용으로 사용했기 때문에 나머지 사용자는 기다려야 했다.
  • 프로세스는 하나의 연속된 블록으로 메모리에 할당되는 연속 메모리 할당 방식을 이용했다.

문제점

  • 메모리의 용량을 초과하는 프로세스는 실행 못함
  • 메모리 낭비 심함
  • 주변장치 등 자원의 낭비 심함

다중 프로그래밍 환경

  • 여러 개의 프로세스가 메모리에 동시에 적재되는 것으로, 현재 실행 중인 프로세스가 입출력 대기를 해야 하면 실행을 기다리고 있는 다른 프로세스에 CPU를 할당할 수 있다.

  • 처음 프로세스 1이 CPU를 이용 중일 떄는 프로세스 2가 준비상태로 기다리지만, 프로세스 1이 입출력 대기를 하는 동안 프로세스 2가 CPU를 이용하게 되고 입출력이 끝난 프로세스 1이 준비상태로 기다린다.
  • 이후 프로세스 2가 입출력 대기를 하는 동안 다시 프로세스 1이 CPU를 이용하게 된다. 결국 CPU 연산과 입출력을 동시에 함으로써 CPU 이용도와 시스템 처리량을 증가시키게 된다.

메모리 분할

◈ 여러 프로세스를 메모리에 적재하기 위해 고안된 방법

◈ 하나의 분할에 하나의 프로세스가 적재되는 방식

1. 고정 분할

  • 메모리 분할 크기가 고정되어 있음
  • 분할 크기를 다르게해서 융통성을 줌

분할 방법 1

- 분할영역마다 큐를 두고 큐에 들어온 프로세스는 해당 분할영역에만 적재

- 절대 번역 및 적재 : 절대 주소를 사용하기 때문에 주소값이 정해지는걸 의미

- 분할 2, 분할 3이 비워있어도 다른 메모리 영역을 사용못하게 된다

 

분할 방법 2

- 작업 큐를 1나만 둔다.

- 재배치 가능 번역 및 적재 : 상대 주소를 사용해야 한다.

- 복잠함

- 내부 단편화, 외부 단편화 발생

2. 동적 분할

  • 각 프로세스에 필요한 만큼의 메모리만 할당하는 방식
  • 필요한 시점에 필요한 만큼만 할당되어 내부 단편화 문제가 발생하지 않음.
  • 외부 단편화 문제 발생 :
    • 메모리의 할당과 반환이 계속 반복됨에 따라 작은 크기의 공백이 메모리 공간에 흩어져 생기는 것

통합 : 인접된 공백을 더 큰 하나의 공백으로 만들어 외부 단편화 해결

집약 - 메모리 내의 모든 공백을 하나로 모아 외부 단편화 해결

  • 메모리를 이동시켜줘야 하는 문제가 남는다.

메모리 보호

  • 프로세스가 다른 할당영역을 치멈하지 않게 하는 것
  • 연속 메모리 할당 방식에서는 프로세스가 사용할 수 있는 주소 범위를 하한-상한 레지스터 쌍 또는 하한-크기 레지스터 쌍의 값으로 제한함으로써 다른 할당영역을 침범하지 않게 한다.
  • 운영체제를 호출하려면 시스템 호출을 통해서만 가능하다


메모리 배치기법

동적 분할 다중 프로그래밍에서 새로 반입된 프로그램이나 데이터를 메모리의 어느 위치에 배치할 것인가를 결정하는 것이다. 운영체제는 빈 공간 리스트를 유지하고 있어서 그중 적합한 공간을 찾으면 된다.

1. 최초 적합

최초 적합(first-fit) 방법은 빈 공간 리스트를 메모리의 주소순으로 유지하며 할당속도를 빠르게 할 수 있는 방법으로, 프로세스가 적재될 수 있는 빈 공간 중에서 가장 먼저 발견되는 곳을 할당한다.

2. 후속 접합

후속 적합(next-fit) 방법은 최초 적합의 변형으로, 이전에 탐색이 끝난 그다음 부분부터 시작하여 사용 가능한 빈 공간 중에서  가장 먼저 발견되는 곳을 할당한다. 

이전 공백 1, 공백 2는 검색했으므로 안하고 바로 다음 공백 3부터 탐색 시작을 한다.

3. 최적 적합

필요한 공간을 제공할 수 있는 빈 공간 중 가장 작은 곳을 선택하여 할당

큰 빈 공간을 최대한 많이 남겨 놓기 위한 방법

거의 모든 공간을 탐색하여 최소한 공간만 찾을 때까지 탐색한다.

4. 최악 적합

필요한 공간을 제공할 수 있는 빈 공간 중 가장 큰 곳을 선택하여 할당

작은 자투리가 남아 사용되지 못하는 공간이 발생하는 것을 최소화하기 위한 방법

남은 공간이 가장 큰 곳을 선택한다.

 

반응형