메모리 할당: 연속할당 VS 불연속 할당
메모리 단편화 (Memory Fragmentation)
- 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태
내부 단편화
- 정의: 프로그램에 할당된 메모리 "내"에서 사용되지 않는 여분의 공간이 발생
- 발생상황: 주로 고정 크기의 메모리 블록을 할당할 때 발생
외부 단편화
- 정의: 메모리에 충분한 총 공간이 있음에도 불구하고, 연속적인 공간이 부족해 특정 프로세스를 수용할 수 없는 상황 -> 메모리 전체에서 발생하는 비연속적인 작은 공간들로 인해 큰 메모리 요청을 수용할 수 없는 상황
연속할당
- 개념: 메모리 공간을 연속적으로 할당하는 방식
- 종류:
고정분할 방식 | 메모리를 같은 크기로 미리 분할하여 할당. 내부 단편화 발생 |
---|
가변분할 방식 | 프로그램 필요량에 맞춰 동적으로 메모리 할당. 외부 단편화 발생 가능 |
가변분할 방식 종류
- 최초적합, 최적적합(필요한 메모리 크기 이상인 공간 중 가장 작은 홀부터 할당), 최악적합
- 홀 : 할당할 수 있는 비어있는 메모리 공간
불연속 할당
- 개념: 메모리를 쪼개어 서로 다른 위치에 할당하는 방식
- 종류:
페이징 | 고정된 사이즈의 페이지 단위로 프레임에 나누어 할당. 외부 단편화 해결, 내부 단편화 발생 |
---|
세그멘테이션 | 의미 단위인 세그먼트(코드, 데이터 스택 힙,...)로 나누어 할당, 외부 단편화 발생 |
페이지드 세그멘테이션 | 세그멘트를 페이지로 나누어 할당 |
-
페이징
-
세그멘테이션
운영체제 관련 추가 개념
Convoy Effect와 Starvation
Convoy Effect
몇 개의 긴 프로세스로 인해 다른 프로세스의 실행이 지연되는 현상. 주로 FCFS 알고리즘에서 발생
Starvation
특정 프로세스가 무기한 대기 상태에 빠져 CPU를 할당받지 못하는 상황. SJF 알고리즘에서 발생 가능
Busy Wait
- 정의: 프로세스 또는 스레드가 조건이 충족될 때까지 계속 상태를 확인하는 동기화 기술
- 특징: 자원 낭비가 발생할 수 있으며, CPU 우선순위 변경이 어려움
운영체제와 펌웨어의 차이
- 메모리 사용: 펌웨어는 주로 비휘발성 메모리 사용, 운영체제는 휘발성 및 비휘발성 메모리를 계층화하여 사용
- 업데이트 및 설치: 펌웨어는 제한적 업데이트와 프로그램 설치, 운영체제는 정기적 업데이트 및 자유로운 프로그램 설치 가능
- 예시: 펌웨어는 키보드나 세탁기에 사용, 운영체제 예로는 macOS, windowsOS 등이 존재
REF