Dreaming Deve1oper

Memory Management 본문

운영체제

Memory Management

주현테크 2021. 11. 3. 14:03

메모리 관리

다중 프로그래밍 시스템에서 다수의 프로세스를 수용하기 위해 주 기억장치를 동적으로 분할하는 작업

 

 

■ 메모리 관리 요구조건

- 프로세스의 주소 지정 요구 조건 -

 

① 재배치 [Relocation]

- 다수의 프로세서들이 스왑인(Swap-in), 스왑아웃(Swap-out) 시 다른 주소 공간으로의 프로세스 재배치가 필요.

- 재배치(스왑 아웃 후 스왑인이 이루어진 경우)를 고려한 프로세스의 주소 지정 요구조건.

 

※ 재배치 지원 위해 사용되는 주소 유형

- 논리주소/물리주소/상대주소: 동적 수행시간 적재 기법 사용

 

※ 스왑 (Swap)

└스왑파티션: 디스크의 일부영역을 메모리처럼 접근하게하기 위함.

└스왑인: 빠져나간 메모리가 다시 디스크로 올라오는 것을 의미.

└스왑아웃: 메모리의 데이터가 디스크로 방출되는 것을 의미.

 


② 보호 [Protection]

- 다른 프로세스들의 간섭으로부터 보호가 필요.

└ 메모리 참조 검사: 실행 중 해당 프로세스에 할당된 메모리 공간만 참조되었는지 확인 필요.

└ 메모리 보호: 하드웨어적인 검사를 요구.

 

※ etc 

└ IPC: 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로

└ 프로세스 다수가 활성화되고 물리 메모리상에서 중첩이 일어나지 않도록 해주면 다른 프로세스 메모리를 침범하지 않는다.


③ 공유 [Sharing]

- 주기억장치의 같은 부분을 접근하려는 여러 개의 프로세스들을 융퉁성 있게 허용.

- 필수적인 보호 기능을 침해하지 않는 범위에서 제한된 접근을 통한 공유.


④ 논리적 구성 [Logical organiation]

- 일반적인 프로그램: 모듈 단위 구성

- 운영체제 및 하드웨어의 모듈 단위 처리 시 이점

 └ 모듈의 작성, 컴파일이 독립적으로 이루어짐.

 └ 비교적 적은 추가비용으로 모듈마다 서로 다른 보호 등급 적용이 가능.

 └ 프로세스 간 모듈 공유 기법을 제공.

 

※ 대표적인 메모리 관리 기술: 세그먼테이션 (Segmentation)

  └ 가변 크기의 메모리 분할.


⑤ 물리적 구성 [Physical organization]

- 주기억 장치와 보조 기억 장치 사이의 정보 흐름을 구성.

- 정보 흐름 구성의 책임자: 시스템

  └ 사용 가능한 주기억장치 용량 < 프로그램 및 데이터 인 경우 처리 (Overlay 기법 사용)

  └ 다중 프로그래밍 환경: 사용 가능한 공간의 양과 위치 정보 파악이 가능.

 

※ Overlay 기법

  └ 메모리를 물리적으로 늘리지 않고 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법. 

  └ 보조기억장치에 저장된 하나의 프로그램을 여러 조각으로 분할하고 필요한 조각을 차례로 주기적장치에 적재하여 프로그램을 실행.

 

Two-pass Assembler

 

 

■ 메모리 관리 기법

① 연속 메모리 관리 [Contiguous memory management]

- 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되어야만 함.

  └ 단일 연속 메모리 관리

  └ 고정 분할 기법 (fixed partitioning)

  └ 동적 분할 기법 (dynamic partitioning) 

 

 

② 불연속 메모리 관리 [non-contiguous memory management]

- 가상주소를 이용해 물리적으로 메모리가 떨어져있더라도 연속된 것 처럼 만들어준다.

- 프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법.

  └ 고정크기: 페이징 (paginng)

  └ 가변크기: 세그먼테이션 (segmentation)

 

 

기술 설명 강점 약점
고정분할
[fixed partitioning]
- 시스템 생성 시 주기억장치가 고정된 파티션들로 분할된다. 
- 프로세스는 균등사이즈의 파티션 또는 그보다 큰 파티션으로 적재된다.
- 구현이 간단하다.
- 운영체제에 오버헤드가 거의 없다.
- 내부 단편화로 인한 비효율적 사용.
- 최대 활성 프로세스의 수가 고정된다.
동적분할
[dynamic partitioning]
- 파티션들이 동적으로 생성된다.
- 각 프로세스는 자신의 크기와 일치하는 크기의 파티션에 적재된다.
- 내부단편화가 없다.
- 주기억장치를 보다 효울적으로 사용 가능하다.
- 외부단편화를 해결하기 위한 메모리 집약이 요구된다.
- 처리 효율이 나쁘다.

 

□ 고정 분할 [fixed partitioning]

균등 분할의 문제점

- 프로그램 > 파티션의 가능성: 오버레이 기법을 사용해한다.

- 주기억장치 이용률이 저조하다.

- 내부 단편화가 발생한다.

 

배치 알고리즘

- 균등 분할: 사용 가능한 파티션에 적재하거나 기존 프로세스의 스왑 아웃.

- 비균등 분할: 최적 파티션에 할당 (내부 단편화 최소화) 파티션 당 하나의 프로세스 큐 방식 vs 단일 큐 방식

 

- 고정 분할에서의 메모리 배정 -

 

고정 분할 기법의 문제점

- 파티션 수에 의해 활성화된 프로세스 수 제한.

- 크기가 작은 작업일수록 파티션 공간의 비효율적인 사용.

- 내부 단편화 발생.

 

 

□ 동적분할 [dynamic partitioning]

- 파티션 크기와 개수가 가변적이다.

- 프로세스가 요구한 크기만큼의 메모리만 할당한다.

- 외부 단편화가 필요하다.

- 메모리 집약이 필요하다.

 

- 동적분할의 결과 -

배치 알고리즘

- 최적적합 (best-fit)

- 최초적합 (first-fit)

- 순환적합 (next-fit)

- 최악적합 (worst-fit)

 

교체 알고리즘

- 교체될 프로세스의 선택.

- 16Mbyte 블록의 배정 전과 후의 메모리 구성의 예 -

 

 


기술 설명 강점 약점
단순 페이징
[simple paging]
- 주기억장치는 균등사이즈의 프레임으로 나뉜다.
- 각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지로 나뉜다.
- 프로세스의 모든 페이지가 적재되어야 한다.
- 이 페이지를 저장하는 프레임들은 연속적일 필요는 없다.
- 외부 단편화가 없다. - 적은양의 내부 단편화가 생긴다.
단순 세그먼테이션
[simple segmentation]
- 각 프로세스는 여러 세그먼트들로 나뉜다.
- 프로세스의 모든 세그먼트가 적재되어야 한다.
- 이 세그먼트를 저장하는 동적 파티션들은 연속적일 필요는없다.
- 내부 단편화가 없다.
- 메모리 사용효율이 개선된다.
- 동적분할에 비해 오버헤드가 적다.
- 외부 단편화.

 

□ 페이징 [Paging]

프로세스를 일정 크기인 페이지(page)로 잘라서 메모리에 적재하는 방식

- 페이지 [page]: 작은 고정 사이즈의 프로세스 조각

- 프레임 [Frame]: 페이지와 크기가 앝은 주 기억장치 메모리 조각

- 페이지 테이블: 프로세스의 각 페이지에 해당하는 프레임 위치 관리

 

※ 외부 단편화가 발생하지 않음

  └ 내부 단편화: 각 프로세스의 마지막 페이지에서만 발생

  └ 단순 페이징: 고정 분할 방법과 유사

 

- 페이징 기법의 주소 관리 -

- 페이지 사이즈는 가변적이다.

- 페이징 기법의 논리: 물리 주소의 변환 예제 -

 

 

 

ㅁ 주소 바인딩 방법

- 논리주소: page, offset

 

ex:

논리주소 <1, 222>

프레임의 크기 1KB

물리주소 = 12 x 1024 + 222

 

 

 

 

 

 

 

□ 세그먼테이션 [Segmentation]

- 비균등 크기의 세그먼트 이용

- 동적 분할과 유사

- 비연속적인 한개 이상의 파티션을 차지

- 외부 단편화 최소화

 

문제점

- 세그먼트 최대 크기

- 논리주소화 물리주소 관계

 

 


기술 설명 강점 약점
가상 메모리 페이징
[virtual memory paging]
- 단순 페이징과 비교해 프로세스의 페이지 전부를 로드시킬 필요가 없다.
- 필요한 페이지가 있으면 후에 자동적으로 불려진다.
- 외부 단편화가 없다.
- 다중 프로그래밍 정도가 높다.
- 가상 주소 공간이 크다.
- 복잡한 메모리 관리의 오버헤드.
가상 메모리 세그먼테이션
[virtual memory segmentation]
- 단순 세그먼테이션과 비교해서 필요하지 않은 세그먼트들을 로드하지 않는다.
- 필요한 세그먼트가 있으면 나중에 자동으로 불려진다.
- 내부 단편화가 없다.
- 다중 프로그래밍 정도가 높다.
- 가상 주소 공간이 크다.
- 보호과 공유를 지원한다.
- 복잡한 메모리 관리의 오버헤드.

 

 

 

■ 버디 시스템

- 외부 단편화를 해소하기 위한 방안

- 고정 분할, 동적 분할 결점 보안한 절충안

- 메모리 블록 크기

- 버디 시스템의 예제 -

 

버디 시스템의 활용

- 병렬 프로그램의 할당과 해제 : 병렬 시스템의 응용 프로그램

- 버디 시스템의 트리 -

 

 

'운영체제' 카테고리의 다른 글

Scheduling_2  (0) 2021.11.24
Scheduling  (0) 2021.11.17
Virtual Memory_2  (0) 2021.11.17
Virtual Memory  (0) 2021.11.10
Loading/Linking  (0) 2021.11.10
Comments