-
[운영체제] 메모리 관리개발공부/운영체제 2021. 1. 21. 12:10
메모리 란?
프로그램 코드와 데이터가 적재되어 있는 공간 (기억장치)
메모리 관리
운영체제에서 메모리 관리는 3가지로 나뉜다.
1. 메모리 공유 : 다중 프로세스들이 메모리를 공유, 실행
2. 메모리 보호 : 사용자 코드와 커널 코드의 분리 운영 및 프로세스의 독립 공간을 보장
3. 물리 메모리의 크기 한계 극복 : 설치된 물리 메모리보다 더 큰 프로세스의 실행을 보장
주소란?
1. 물리 주소 : 메인 메모리의 실제 주소 - 0부터 연속되는 주소 체계
2. 선형 주소(가상 주소) : 프로세스의 가상 주소 공간에서의 주소 - MMU에 의해 물리주소로 변환이 필요
3. 논리 주소 : 응용프로그램의 관점에서 코드나 변수 등에 대한 주소 - 실제 메모리가 아님
4. 심볼 주소 : 사용자 프로그램의 소스 코드에서 사용하는 주소 - 변수, 상수, 함수 등의 이름이 저장.
논리 주소는 주로 연속 메모리 할당이나 segmentation 메모리 할당시 사용된다.
Segment?
1. 서로 구분되는 기억장치의 연속된 한 영역
2. 어떤 프로그램이 너무 커서 한번에 주기억장치에 올릴 수 없어 갈아 넣기 기법을 사용하였을 때, 나뉜 각 부분을 가르키는 용어
3. 한 세그먼트는 프로그램의 논리적인 한 구성 단위를 저장한다.쉽게 말하면 논리 주소는 프로그래머 관점에서 본 프로그램의 주소, 선형 주소는 CPU 관점의 주소이다.
이 논리 주소를 물리 주소로 바꾸기 위해서 MMU라는 하드웨어 장치가 필요하다.
MMU(Memory Management Unit)
- 가상 주소를 물리주소로 변환하는 하드웨어 장치
- 통상적으로 CPU내부에 있으며, CPU가 메모리 주소를 다루는 방법이 서로 다르기 때문에 MMU 구조나 변환 방식도 CPU 마다 다르다.
- 공통적인 구조로 TLB(Translation Lookaside Buffer)가 있다.
- TLB는 논리 페이지 번호를 물리 프레임 번호로 번역한다.메모리 할당
메모리 할당은 파티션 기준 연속 메모리 할당(단일) vs 불연속 메모리 할당(다중),
크기 기준으로 고정 크기 할당 vs 가변 크기 할당으로 나뉘어 진다.
메모리 할당 기법의 대표적인 방법으로 3가지가 있다.
1. 연속 메모리 할당 : 하나의 프로세스 공간을 연속되게 배치
2. 세그먼트 단위 배치 : 프로세스를 가변 크기의 세그먼트들로 나누어 배치
3. 페이지 단위 배치 : 메모리를 고정 크기의 페이지로 나누고 프로세스를 여러 페이지에 분산 배치
1번은 단일 파티션, 2,3번은 다중 파티션 메모리 할당 기법이다.
연속 메모리 할당
각 프로세스의 영역을 연속된 메모리 공간에 배치한다.
- 메모리를 파티션으로 분할하고 하나의 프로세스당 하나의 파티션을 할당하는 기법
- 초기 운영체제에서 사용한 방법
- 고정 크기 할당 : IBM OS/360 MFT, 가변 크기 할당 : IBM OS/360 MVT
- 가상 메모리를 지원하지 않음
단점
1. 가상 메모리를 사용하지 않는 시스템
2. 멀티프로그래밍 수준이 떨어진다. : 가용 메모리가 생길 때 까지 대기하는 프로세스의 수가 많음
가변 크기 할당 시 홀 혹은 내외부 단편화 발생
단편화?
메모리를 할당하고 반환하는 과정에서 비어 있지만 할당 될 수 없는 메모리가 발생하는 문제
내부 단편화 : 파티션보다 작은 프로세스를 할당하는 경우 -> MFT 의 사례
외부 단편화 : 프로세스의 크기보다 작아 할당할 수 없는 파티션들 발생 -> MVT 의 사례세그먼테이션(segmentation) 기법
메모리를 세그먼트라는 가변 크기의 논리 단위로 할당하고 관리하는 기법
개념
- 하나의 프로세스를 여러 개의 세그먼트들로 분산할당
- 세그먼트 : 가변 크기의 메모리 블록(논리적 단위)
- 프로세스 주소 공간 : 여러개의 논리 세그먼트들로 나누고 각각 물리 세그먼트에 매핑 로딩
- 논리 세그먼트, 물리 세그먼트 매핑 : 시스템 전체 세그먼트 매핑 테이블을 두고 논리 주소를 물리주소로 변환
- 외부 단편화 발생 가능
페이지(paging) 기법
프로세스의 가상 주소 공간과 물리 메모리를 페이지 단위로 분할하고, 프로세스 주소 공간의 각 페이지를 물리 메모리의 페이지에 분산 할당하고 관리하는 기법이다.
개념 및 특징
- 메모리 전체를 페이지라는 고정 크기로 나눔
- 하나의 프로세스를 여러 개 페이지로 분산 할당
- 물리 메모리를 프레임(고정 크기 메모리 블록)으로 나눈다.
- 프로세서의 주소 공간은 페이지들로 나눈다.
- 페이지 테이블 : 프로세스마다 논리 페이지를 프레임으로 매핑
- 논리 페이지와 물리 프레임의 매핑 : 페이지 테이블을 두고 MMU에 의해 변환
- 내부 단편화 발생 가능
'개발공부 > 운영체제' 카테고리의 다른 글
[운영체제] Deadlock(교착 상태) (0) 2021.01.20 [운영체제] CPU 스케줄링 (0) 2021.01.18 [운영체제] 스레드와 멀티태스킹 (0) 2021.01.10 [운영체제] 프로세스와 프로세스 관리 (20210104 스터디) (0) 2021.01.04 [운영체제] 운영체제 역사와 기초 (20201228 스터디) (0) 2020.12.28