본문 바로가기
  • 실행력이 모든걸 결정한다
OS 개념 정리

[OS] 메모리 관리

by 김코더 김주역 2021. 6. 7.
반응형

1. 메모리의 계층 구조

1) 레지스터

2) 캐시

3) 주기억장치

4) 보조기억장치

 

※ Block : 주기억장치와 보조기억장치 사이의 데이터 전송 단위이며, 크기는 1~4KB 정도임

※ Word : 레지스터와 주기억장치 사이의 데이터 전송 단위이며, 크기는 16~64bits 정도임. "32비트 컴퓨터", "64비트 컴퓨터" 에서의 이 비트가 이 Word를 뜻함.

 

 

2. Address Binding

논리 주소를 물리 주소로 매핑하는 작업

 

1) 프로그램의 흐름

소스 코드 -> 컴파일러 -> 목적 프로그램 -> 링커 -> 실행 파일 -> 로더 -> 실행

 

2) Binding의 종류

(1) Compile time binding

- 컴파일 때 진행됨

- 메모리에 프로세스가 적재될 위치(불변)를 컴파일러가 알 수 있는 경우

- 프로그램 전체가 메모리에 올라가야 함

(2) Load time binding

- 링커~로더 과정에서 진행됨

- 메모리에 프로세스가 적재될 위치를 컴파일러가 모르는 경우에는 대체 가능한 상대 주소 생성

- 프로그램 전체가 메모리에 올라가야 함

- 적재 시점에서는 할당 시작 주소를 반영하여, 사용자 코드 상의 주소를 재설정함 

(3) Run time binding : 실행 중에 진행됨

- 프로세스가 다른 메모리 위치로 이동 가능함

- HW의 도움이 필요함(MMU, Memory Management Unit)

 

3) 동적 Loading

- 모든 루틴을 교체 가능한 형태로 디스크에 저장해두고, 호출 전까지는 메인 프로그램만 메모리에 적재하다가 호출 됐을 때 루틴을 적재하는 방식

- 루틴 호출 시점에 Address binding을 수행함

- 메모리 공간을 효율적으로 사용 가능함

 

※ 루틴 : 특정한 작업을 실행하기 위한 일련의 명령

 

4) Swapping

주기억장치와 보조기억장치 사이에서 프로세스가 적재되거나 나가는 과정

 

 

3. Continuous Memory Allocation

1) 의미

프로세스를 하나의 연속된 메모리 공간에 할당

예) 프로그램, 데이터, 스택 등

 

2) 메모리 구성 정책

(1) 메모리에 동시에 올라갈 수 있는 프로세스 수

(2) 각 프로세스에게 할당되는 메모리 공간 크기

(3) 메모리 분할 방법

 

3) 단일 프로세스 할당 시 발생할 수 있는 문제점

(1) 프로그램의 크기가 메모리의 크기보다 클 경우

사용자가 프로그램을 직접 쪼개서 메모리에 필요한 영역만 번갈아가면서 넣는 Overlay Structure방식을 사용하여 해결

(2) 주소가 커널 영역을 침범했을 경우

경계 지점의 주소를 지정하여, 그 외의 주소에 할당되는 것을 방지하는 Boundary register를 사용하여 해결

(3) 공간의 낭비로 인한 자원의 활용도 저하

여러 프로세스를 할당하여 해결

 

4) 다중 프로세스 할당

(1) Fixed Partition Multiprogramming(FPM)

<1> 특징

- 메모리 공간을 한 번 분할하면 크기가 변하지 않음

- 각 프로세스는 하나의 partition에 적재

- partition 사이에도 Boundary register을 사용할 수 있음

 

<2> 문제점 - Fragmentation(단편화)★

① 내부 단편화

프로세스의 크기가 partition의 크기보다 작아서 남는 메모리 공간 -> 자원 낭비

② 외부 단편화

남은 총 메모리 공간은 프로세스의 크기보다 크지만, 연속된 공간이 아니기 때문에(partition) 프로세스를 할당하지 못해서 남는 메모리 공간 -> 자원 낭비

 

(2) Variable Partition Multiprogramming(VPM)

<1> 특징

- 초기에는 전체가 하나의 영역이고, 프로세스를 처리할 때 메모리 공간을 동적 분할

- 내부 단편화가 발생하지 않음

- 프로세스가 쓰고 나왔을 때 생기는 남은 공간들에 의해 외부 단편화가 발생할 수 있음

- 남은 공간들 중에서 어느 공간에 할당해 줄 지에 대한 배치 전략이 필요함

 

<2> 배치 전략들

① First-fit(최초 적합)

- 여유 공간이 있는 partition들 중 첫 번째를 선택

- 간단하고 Overhead가 적으나, 공간 활용률이 떨어질 수 있음

② Best-fit(최적 적합)

- 여유 공간이 있는 partition들 중 가장 작은 곳을 선택

- 모든 partition을 살펴봐야 하기 때문에 탐색 시간이 김

- 크기가 큰 partition을 유지할 수 있음과 동시에, 작은 크기의 partition이 많이 발생함

③ Worst-fit(최악 적합)

- 여유 공간이 있는 partition들 중 가장 큰 곳을 선택

- 모든 partition을 살펴봐야 하기 때문에 탐색 시간이 김

- 작은 크기의 partition 발생을 줄일 수 있음과 동시에, 크기가 큰 partition의 확보가 어려움

④ Next-fit(순차 최초 적합)

- State table에서 마지막으로 탐색한 위치부터 탐색하는 최초 적합 전략

- 메모리 영역의 사용 빈도 균등화

- Overhead가 적음

 

<3> 외부 단편화 해결 방법

① Coalescing holes(공간 통합)

- 인접한 빈 영역을 하나의 partition으로 통합함

- Overhead가 적음

 

② Storage Compaction(메모리 압축)

- 모든 빈 공간을 하나로 통합함

- 프로세스들의 재배치에 의한 Overhead가 큼(프로세스들의 일시 중단 작업 필요)

- 많은 시스템 자원을 소비함

 

 

4. Memory Pool

- 변하지 않는 특정 크기의 메모리 블록들을 미리 할당해 놓는 메모리 관리 기법

- 동적 할당의 문제점인 시스템 호출, 단편화 문제를 개선할 수 있음

 

 

이미지 출처 : 한빛 미디어 운영체제

참고 자료 : 김덕수 교수님 - www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN

반응형

댓글