일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- neople
- 반도체
- 게임기획
- 네오플
- 컴퓨터구조
- 면접
- MuchineRunning
- 던전앤파이터
- memory
- 아두이노우노
- 반도체 취업
- 던파
- 레지스터
- 아두이노
- 네트워크
- 인터럽트
- 머신러닝
- MLAgent
- 메모리
- 네트워크보안
- 반도체 엔지니어
- 에러
- 아두이노함수
- 유니티에러
- 메타마스크
- 유니티
- 이더리움
- Unity
- 보안
- 암호화
- Today
- Total
Dreaming Deve1oper
Memory Management 본문
메모리 관리
다중 프로그래밍 시스템에서 다수의 프로세스를 수용하기 위해 주 기억장치를 동적으로 분할하는 작업
■ 메모리 관리 요구조건
① 재배치 [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)
교체 알고리즘
- 교체될 프로세스의 선택.
기술 | 설명 | 강점 | 약점 |
단순 페이징 [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 |