이번에는 저번에 마지막으로 배웠던 mapping 에 관한 문제를 먼저 얘기해보자.
논리적주소를 설명하면서 mapping의 개념을 배웠다. 이를 '할당'한다는 개념이라 설명하였다.
여기서 연속 할당이란 논리적 주소에 동일한 base register를 더해주는 것이다.
우리는 연속 할당의 문제점에 대해 얘기를 할 것이다.
외부 단편화 (External Fragmentation)
일단 두가지 용어를 알아야 한다.
- Partition
- Hole
아래의 예시를 통해 개념을 알아보자
운영체제는 Hole 을 제외한 파티션의 개수만큼 동시 실행이 가능하다. 만약 새로운 프로그램을 실행하려 하는데,
요구하는 프로세스의 용량이 Hole의 크기보다 크면 메모리에 올라갈 수 없어 실행되지 못한다.
F는 실행 가능할까??
불가능하다. 프로세스 F가 들어갈 연속된 자리가 없으므로
따지고 보면 F가 들어갈 빈 공간은 충분하다. 위의 흰색칸이 Hole에 해당하는데, Hole 의 합이 40보다 크다.
이렇게 메모리에 공간이 있음에도 연속된 Hole의 크기가 프로세스의 크기보다 작다는 이유로 할당되지 못하는 문제를
외부 단편화라고 한다.
Partition과 Hole의 개념이 이해가 가시나요?
해결방법을 알아보자
기 전에 잠시
우리가 Partition의 개념을 알게 되었으니까, 간단한 문제를 짚고 넘어가자.
FIxed Partition
만약 Partition이 고정적이라면 어떤 문제가 발생할까?
일단 Logical address가 partition의 크기를 넘어가면 안된다. 이는 MMU가 검사를 해줄것이다.
말고도
장점
- 구현 용이
- 액세스 검증 용이
• 논리 주소를 파티션 크기와 비교 - 빠른 컨텍스트 전환
• 저장만 하면 됨
문제점
- 파티션 크기
하나의 크기가 모든 것에 적합하지 않음 - 내부 단편화
내부 단편화는..
옆의 그림처럼
고정 partition일때 메모리가 남는 부분이 생기는 문제가 발생한다.
이는 곧 낭비이고 문제이다.
이런 문제점들을 해결하기 위해
위에 있었던 Variable partition(Partion의 크기가 다양한)이 나오게 되었다.
'프로그래밍 > 운영체제' 카테고리의 다른 글
[운영체제] 주소공간( Address Space, Memory Management ) (0) | 2023.11.26 |
---|---|
[운영체제] Dead lock (1) | 2023.11.20 |
운영체제 (2) - 시스템은 어떻게 보호 되는가? (system call) (0) | 2023.09.29 |
운영체제(1) - 시스템은 어떻게 작동하는가(Multicore system, Interrupt) (0) | 2023.09.26 |