chapter 14-1. 연속 메모리 할당


<aside>

1️⃣연속 메모리 할당

 프로세스에 연속적인 메모리 공간 할당

2️⃣ 스와핑

  메모리상의 빈 공간에 다른 프로세스를 적재하여 실행하는 방식

  -**스왑 영역**: 프로세스들이 쫓겨나는 보조 기억 장치의 일부 영역

 -**스왑 아웃**: 현재 실행❌ 프로세스가 메모리에서 스왑 영역으로 옮김

 -**스왑 인**: 스왑 영역에 있던 프로세스를 다시 메모리로 옮김

</aside>

메모리 할당

<aside>

1️⃣ 최초 적합

  운영체제가 메모리 내의 빈 공간에 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식

2️⃣ 최적 적합

  운영체제가 빈 공간을 모두 검색해 본 후 가장 작은 공간에 배치하는 방식

3️⃣ 최악 적합

  운영체제가 빈 공간을 모두 검색한 후, 가장 큰 공간에 배치하는 방식

</aside>

외부 단편화

<aside>

프로세스들이 실행되고 종료되기를 반복해 메모리 사이에 빈 공간이 생김.

이런 빈공간은 프로세스를 큰 적재하기 어렵고 메모리 낭비 발생

<aside> 💡

[외부 단편화 해결법]

1️⃣ 압축

  메모리 내에 저장된 프로세스를 재배치해 흩어진 작은 빈 공간을 모아 하나의 큰 공간으로 만듬

 단점) 오버헤드       

</aside>

</aside>

chapter 14-2. 페이징을 통한 가상 메모리 관리


<aside>

1️⃣가상 메모리

 실행하려는 프로그램의 일부만 메모리에 적재해 실제 물리 메모리보다 큰 프로세스를 실행할 수 있게하는 기술

1️⃣ **페이징**

      프로세스의 논리 주소 공간을 페이지 단위로 자름

      프로세스의 물리 주소 공간을 프레임 단위로

      - 페이지 인, 페이지 아웃

<aside> 💡

[페이지 테이블]

명령어 실행 위치를 쉽게 찾기 위해 페이지 테이블 사용

</aside>

<aside> 💡

[페이지 주소 변환]

페이지 시스템 모든 논리 주소) 페이지 번호+변위

1️⃣ 유효 비트

   해당 페이지에 접근 가능한지 여부를 알려줌.

   페이지 메모리 적재시 유효 비트 1, 아니면 0

2️⃣ 보호 비트

  페이지를 보호하기 위해 존재하는 비트

   읽기만 가능하면 0, 읽기쓰기 모두 가능 1

3️⃣ 참조 비트

  CPU가 페이지에 접근한 적 있는지 나타냄

4️⃣ 수정 비트 (=더티비트)

 변경된 적 있으면 1, 변경 ❌ 0

</aside>

**2️⃣ 세그멘 테이션**

</aside>