코드네임 :
⚙️ 운영체제 - 메모리 할당 (기법,,, 세그멘테이션&페이징) ⚙️ 본문
메모리 할당 : 운영체제가 새 프로세스를 실행시키거나, 실행중인 프로세스가 메모리를 필요로 할 때, 물리 메모리 할당
[ 메모리 할당 기법 ]
1. 연속 메모리 할당 : 프로세스 별로 연속된 한 덩어리의 메모리 할당
- 고정 크기 할당
- 가변 크기 할당
2. 분할 메모리 할당 : 프로세스에게 여러 덩어리의 메모리 할당
- 고정 크기 할당 : 페이징
- 가변 크기 할당 : 세그멘테이션
[ 연속 메모리 할당 구현 시 ]
1. 하드웨어 지원
- CPU의 레지스터 필요
ㄴ base 레지스터 : 현재 CPU가 실행중인 프로세스에게 할당된 물리 메모리의 시작 주소 저장
ㄴ limit 레지스터 : 현재 CPU가 실행중인 프로세스에게 할당된 메모리 크기 저장
- MMU 필요 (가상주소를 물리주소로 변환 역할)
2. 운영체제 지원
(1) 프로세스 별 메모리 관리
- 운영체제는 **PCB(Process Control Block)**라는 데이터 구조에 각 프로세스의 정보를 저장합니다.
이때, 물리 메모리의 시작 주소와 크기 정보도 포함됩니다.
→ 이는 프로세스의 메모리를 추적하고 관리하기 위한 필수 정보
(2) 빈 메모리 영역 관리
- 연속 메모리 할당 방식에서는 연속된 메모리 블록이 필요하므로,
운영체제가 메모리의 **사용 가능한 빈 영역(free space)**을 추적하고 효율적으로 할당
(3) Base/Limit 레지스터 적재
- 운영체제는 프로세스를 스케줄링할 때마다 해당 프로세스의 **물리 메모리 정보(시작 주소와 크기)**를
Base/Limit 레지스터에 로드하여 CPU가 올바른 메모리 영역을 참조하도록 합니다.
- 프로세스 별로 할당된 '물리메모리의 시작 주소와 크기 정보 저장' 관리 -> PCB : 메모리 관리 정보 제어 역할도 함
- 비어있는 메모리 영역 관리
- 프로세스를 스케줄링하여 실행시킬때마다 '물리메모리의 시작주소와 크기정보'를 base/limit 레지스터에 적재
[ 단편화 ]
: 프로세스에게 할당할 수 없는 조각메모리 (홀hole)들이 생기는 현상
- 내부 단편화 : 할당된 메모리 내부에 사용할 수 없는 홀이 생기는 현상 (파티션보다 작은 프로세스를 할당하는 경우)
ㄴ 고정크기 연속 메모리 할당에서 발생하겠네
- 외부 단편화 : 할당된 메모리들 사이에 사용할 수 없는 홀이 생기는 현상 (가변 크기의 파티션이 생기고 반환되는 여러번의 과정에서 여러 홀 생성, 홀이 프로세스의 크기보다 작으면 할당 불가 )
ㄴ 가변크기 연속 메모리 할당에서 발생하겟네
⬇️
공간 비니까 "밀자!!"
⬇️
[ 메모리 압축 ]
'컴퓨터와 함께해요 > 운영체제' 카테고리의 다른 글
⚙️ 운영체제 - 메모리 할당 : 페이징 ⚙️ (0) | 2024.11.12 |
---|---|
⚙️ 운영체제 - 메모리 할당 : 세그멘테이션 ⚙️ (1) | 2024.11.12 |
⚙️ 운영체제 - 메모리 ⚙️ (0) | 2024.11.06 |
⚙️ 운영체제 - 스케줄링 정책 (알고리즘)⚙️ (0) | 2024.10.17 |
⚙️ 운영체제 - CPU 스케줄링 기본 ⚙️ (1) | 2024.10.17 |