메모리에 적재된 프로세스들 중 현재 실행되지 않는 프로세스들을 보조기억장치 일부 영역으로 쫓아냄
쫓아낸 프로세스가 있던 자리에 다른 프로세스를 적재해 실행
스왑 영역
: 프로세스들이 쫓겨나는 보조기억장치의 일부 영역
스왑 아웃
: 쫓겨난 것
스왑 인
: 스왑 영역에서 다시 메모리로 ~이 때, 스왑 인 된 프로세스는 기존(스왑 아웃 전)의 물리 주소와 다른 주소에 적재될 수 있음
⭐ 스와핑을 이용하면 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 커도 프로세스 동시 실행 가능
최초 적합
운영체제가 메모리 내 빈 공간을 순서대로 검색하다가 공간 발견하면 냅다 프로세스 배치 ➡️ 검색 최소화, 빠른 할당 가능
최적 적합
빈 공간 모두 검색 후에 가능한 가장 작은 공간에 프로세스 배치
최악 적합
빈 공간 모두 검색 후에 가능한 가장 큰 공간에 프로세스 배치
✔️ 연속 메모리 할당 방식을 사용하면 외부 단편화라는 문제가 생김
프로세스의 실행이 끝나면 그 프로세스가 적재되어 있던 메모리 공간이 비고 그 공간보다 큰 프로세스를 적재하기 어려워짐
---> 빈 공간이 많아질 수록 낭비가 됨
가상 메모리 관리 기법인 페이징 & 세그멘테이션 중 현대 운영체제 대부분이 페이징 기법 사용
➡️ 잘린 메모리 조각들에 프로세스 조각들을 불연속적으로 적재함으로써 외부 단편화 문제 해결
🤔 잘려진 조각을 맞춰 끼우면 실행 순서가 뒤죽박죽 되는 거 아닌가?
아님! 페이징 기법에선 페이지 번호와 프레임 번호를 짝지어 주는 페이지 테이블을 이용해서 어떤 페이지가 어떤 프레임에 할당되었는지 알 수 있다 !
*페이지 폴트: 해당 페이지가 메모리에 적재되어있지 않은 경우
최초 적합
,최적 적합
,최악 적합
프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘
으로 이 페이지를 참조한다면 몇 번의 페이지 폴트
가 발생하는지 풀어보기
프레임 3개 0 0 0
2 3 1 3 5 ✔️ 2 ✔️ 3 4 ✔️ 2 3
2
23
231
231
531 ✔️
532 ✔️
532
432 ✔️
432
432
세 번의 페이지 폴트가 발생한다 !