1. 메모리 관리
ㅇ 컴퓨터 시스템에서 메모리를 효율적으로 배치, 할당, 회수하는 과정
- 운영체제는 메모리 관리를 통해,
- 프로세스 간 충돌을 방지하고, 효율적인 메모리 활용으로 성능 최적화
2. 메모리 관리의 특징
ㅇ 메모리 관리는, 하드웨어 설계에 크게 영향을 받음
ㅇ 메모리 전체를 운영체제가 관리함
- 대부분의 메모리 관리 알고리즘은, 하드웨어,운영체제 간의 협력을 필요로 함
ㅇ 메모리 관리에서, 메모리 공간의 보호가 필요함
- 사용자공간과 커널공간 간의 분리
ㅇ 한편, 메모리 계층화를 통해, 적절한 비용으로 높은 성능을 낼 수 있음
- 소량,고속,고가 기억장치와, 대량,저속,저가인 기억장치를 계층적으로 구성함
. (CPU) ↔ (캐쉬메모리) ↔ (주메모리) ↔ (보조메모리, 자기디스크 등)
3. 메모리 관리에서, 운영체제 역할
ㅇ 사용중인 부분이 어디이고, 이를 누가 사용하고 있는지 추적 관리
ㅇ 필요에 따라, 메모리 공간을 할당,회수 해야 함
ㅇ 어떤 프로세스를 메모리에 적재,제거할 것인가를 결정 해야 함
4. 메모리 관리의 주요 기능
ㅇ 프로세스 메모리 할당
- 각 프로세스가 실행될 때 필요한 메모리 공간을 할당
- 실행이 종료되면 해당 메모리 공간을 반환
ㅇ 주소 공간 관리
- 가상 메모리를 통해 각 프로세스에 독립적인 주소 공간 제공
- 논리 주소를 물리 주소로 매핑하여 프로세스 간의 충돌 방지
ㅇ 메모리 보호
- 한 프로세스가 다른 프로세스의 메모리 공간에 접근하지 못하도록 보호
- 접근 제어 및 권한 검사를 통해 안정성 보장.
ㅇ 메모리 단편화 해결
- 내부 단편화 : 할당된 메모리 공간 내 미사용 영역 초래
- 외부 단편화 : 메모리 공간이 작은 조각들로 나뉘어 할당이 어려운 상황 초래
- 해결책 : 압축(Compaction), 페이징(Paging), 세그멘테이션(Segmentation) 등
ㅇ 가상 메모리
- 실제 물리 메모리 보다 더 큰 메모리 공간을 제공
- `페이지 교체 알고리즘`을 통해 필요한 데이터 만 메모리에 로드
ㅇ 캐시 관리
- 자주 사용되는 데이터를 캐시에 저장하여 접근 속도 향상
ㅇ 입출력 버퍼 관리
- 메모리와 입출력 장치 간 데이터 전송의 효율적 관리
5. 메모리 관리 기법
ㅇ 크게,
- 단순 하드웨어 방식
- 연속 메모리 할당 방식
- 페이징 기법
- 세그먼트 방법 등으로 구분
ㅇ 페이징 (Paging)
- 메모리를 고정 크기인 페이지 단위로 나눠 관리.
- 단편화 문제 해결 및 효율적 관리.
ㅇ 세그멘테이션 (Segmentation)
- 메모리를 가변 크기의 세그먼트로 나눠 관리
- 프로그램의 논리적 구조와 일치
ㅇ 동적 메모리 할당
- 필요할 때 메모리를 할당하고, 사용이 끝나면 반환
- `malloc`, `free`와 같은 함수 사용
ㅇ 교체 알고리즘
- 가상 메모리에서 페이지를 교체할 때 적절한 페이지를 선택.
- 대표적인 알고리즘 : FIFO, LRU, LFU 등
6. [참고사항]
ㅇ 논리주소 대 물리주소
- 논리 주소 : CPU가 생성하는 주소 (가상 주소)
- 물리 주소 : 메모리가 취급되는 주소
- 프로그램 내 변수들의 주소 바인딩시에, 기억장치로의 접근 방식
. 컴파일 또는 적재하면서 주소 바인딩시에는, 논리주소 = 물리주소 임
. 실행 시간 동안 주소 바인딩시에는, 논리주소 (가상주소) ≠ 물리주소 임
.. 이때, 가상 주소를 물리 주소로의 매핑 작업을, MMU라는 장치에서 실행함