<aside>
1️⃣연속 메모리 할당
프로세스에 연속적인 메모리 공간 할당
2️⃣ 스와핑
메모리상의 빈 공간에 다른 프로세스를 적재하여 실행하는 방식
-**스왑 영역**: 프로세스들이 쫓겨나는 보조 기억 장치의 일부 영역
-**스왑 아웃**: 현재 실행❌ 프로세스가 메모리에서 스왑 영역으로 옮김
-**스왑 인**: 스왑 영역에 있던 프로세스를 다시 메모리로 옮김
</aside>
<aside>
1️⃣ 최초 적합
운영체제가 메모리 내의 빈 공간에 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식
2️⃣ 최적 적합
운영체제가 빈 공간을 모두 검색해 본 후 가장 작은 공간에 배치하는 방식
3️⃣ 최악 적합
운영체제가 빈 공간을 모두 검색한 후, 가장 큰 공간에 배치하는 방식
</aside>
<aside>
프로세스들이 실행되고 종료되기를 반복해 메모리 사이에 빈 공간이 생김.
이런 빈공간은 프로세스를 큰 적재하기 어렵고 메모리 낭비 발생
<aside> 💡
[외부 단편화 해결법]
1️⃣ 압축
메모리 내에 저장된 프로세스를 재배치해 흩어진 작은 빈 공간을 모아 하나의 큰 공간으로 만듬
단점) 오버헤드
</aside>
</aside>
<aside>
1️⃣가상 메모리
실행하려는 프로그램의 일부만 메모리에 적재해 실제 물리 메모리보다 큰 프로세스를 실행할 수 있게하는 기술
1️⃣ **페이징**
프로세스의 논리 주소 공간을 페이지 단위로 자름
프로세스의 물리 주소 공간을 프레임 단위로
- 페이지 인, 페이지 아웃
<aside> 💡
[페이지 테이블]
명령어 실행 위치를 쉽게 찾기 위해 페이지 테이블 사용
페이지 테이블 베이스 레지스터: 베이스 테이블에 적재될 주소 가리킴
TLB: 메모리 접근 수를 줄이기 위해 만들어진 페이지 테이블의 캐시 메모리
→ TLB 히트: 논리 주소에 대한 페이지 번호가 TLB에 있음
TLB 미스: 페이지 번호가 TLB에 없음
</aside>
<aside> 💡
[페이지 주소 변환]
페이지 시스템 모든 논리 주소) 페이지 번호+변위
1️⃣ 유효 비트
해당 페이지에 접근 가능한지 여부를 알려줌.
페이지 메모리 적재시 유효 비트 1, 아니면 0
2️⃣ 보호 비트
페이지를 보호하기 위해 존재하는 비트
읽기만 가능하면 0, 읽기쓰기 모두 가능 1
3️⃣ 참조 비트
CPU가 페이지에 접근한 적 있는지 나타냄
4️⃣ 수정 비트 (=더티비트)
변경된 적 있으면 1, 변경 ❌ 0
</aside>
**2️⃣ 세그멘 테이션**
</aside>