728x90
⬛ 단편화
- 메모리의 공간이 여러 조각으로 나뉘는 현상으로 합쳐보면 메모리 사용이 가능하지만 나누어져 있어 사용이 불가능한 상태
◼ 내부 단편화 (Internal Fragmentation)
- 메모리를 분할하여 사용할 때 분할된 단위가 프로세스가 필요한 공간보다 더 커서 사용되지 못하고 남는 메모리가 발생하는 현상
◼ 외부 단편화 (External Fragmentation)
- 메모리 할당 및 해제 작업의 반복으로 메모리와 사이에 사용하지 않는 메모리가 발생하고 이러한 메모리들을 합치면 프로세스 할당하기에 충분하지만 연속적인 공간이 아니기 때문에 사용하지 못하는 현상
⬛ 연속 메모리 할당 방식
- 고정 분할 기법 : 메모리를 여러 개의 고정된 크기로 분할하고 하나의 메모리에 하나의 프로세스를 실행 → 내부 단편화
- 동적 분할 기법 : 프로세스의 크기에 따라 메모리를 분할 → 외부 단편화
⬛ 불연속 메모리 할당 방식
◼ 페이징 기법
- 프로그램을 가상메모리(논리적 메모리)에서 동일한 크기의 블록인 페이지로 나눠 처리
- 물리적 메모리도 페이지와 같은 크기로 분할(프레임)하고 프레임에 페이지를 적재하여 사용한다.
- 일종의 주소 변환 테이블의 역할을 하는 페이지 테이블을 통해 페이지와 프레임을 Mapping하는 과정이 필요하다. Mapping하는 과정이 있기 때문에 프로세스의 물리 주소 공간이 연속적이지 않아도 된다.
- 고정된 크기의 블록으로 나누기 때문에 내부 단편화 발생
◼ 세그멘테이션 기법
- 프로그램을 논리적인 Block인 세그먼트으로 분할 (stack, heap,...)
- 같은 역할을 하는 논리적인 단위를 말한다.
- 세그멘테이션이란 프로세스를 세그먼트의 집합으로 표현하는 것으로 프로세스를 code 영역, data 영역, stack 영역 등으로 나누는 것 또한 세그멘테이션이라고 할 수 있다.
- 가상 메모리를 서로 크기가 다른 세그먼트로 분할하고 일종의 주소 변환 테이블의 역할을 하는 세그먼트 테이블을 통해 논리적 메모리를 물리적 메모리로 Mapping하는 과정이 필요
- 각 세그먼트끼리는 연속적인 물리적 메모리에 적재된다.
- 세그먼트의 크기는 일정하지 않기 때문에 테이블에 limit 정보를 저장한다. 세그먼트의 크기를 넘는 주소를 요청하면 인터럽트를 발생시켜 프로세스를 종료시킨다.
- 서로 크기가 다른 블락으로 나누기 때문에 외부 단편화 발생
728x90
'공부의 기록 > Operating System' 카테고리의 다른 글
[운영 체제] Deadlock (0) | 2022.03.19 |
---|---|
[운영 체제] 프로세스와 관련된 System Call (0) | 2022.03.19 |
[운영 체제] 운영체제 개요 (0) | 2022.03.18 |
[운영 체제] 문맥 교환(Context Switching) (0) | 2022.03.17 |
[운영 체제] 프로세스와 프로세스의 상태 (0) | 2022.03.17 |