본문 바로가기
책/혼공 컴퓨터구조+운영체제

운영체제 - 연속 메모리 할당(스와핑, 최초 적합, 최적 접합, 최악 접합, 외부단편화)

by 코딩하는 돼징 2024. 2. 26.
반응형

연속 메모리 할당

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

 

스와핑(Swapping)

메모리에 적재된 프로세스들 중에 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고 그렇게 생긴 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식을 스와핑이라고한다.

01 스왑 영역(Swap Space)

프로세스드이 쫓겨나는 보조기억 장치의 일부 영역

02 스왑 이웃(Swap-Out)

현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것

03 스왑 인(Swap-In)

스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 


스와핑을 이용하게 된다면 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시 실행 할 수 있다. 

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


메모리 할당

프로세스는 메모리 내의 빈 공간에 적재되어야 한다. 메모리 내에 만약 빈 공간이 여러 개 이씨다면 프로세스를 어디에 배치해야할까? 비어있는 공간에 프로세스를 연속적으로 할당하는 방식에는 크게 3가지 방식이 있다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

01 최초 적합(First-Fit)

운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식이다. 이는 프로세스가 적재될 수 있는 공간을 발견하면 즉시 메모리를 할당하는 방식이므로 검색을 최소활 할 수 있고 빠른 할당이 가능하다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

02 최적 적합(Best-Fit)

운영체제가 빈 공간을 모두 검색해본 후에 적재 가능한 공간 중 가장 작은 공간에 프로세스를 배치하는 방식이다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

03 최악 적합(Worst-Fit)

운영체제가 빈 공간을 모두 검색해본 뒤 적재 가능한 가장 큰 공간에 할당한다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard


프로세스를 메모리에 연속적으로 배치하는 연속 메모리 할당은 사실 메모리를 효율적으로 사용하는 방법이 아니다. 왜냐하면 연속메모리 할당은 외부 단편화라는 문제를 갖고 있다.

외부 단편화(External Fragmentation)

프로세스들이 실행되고 종료되길 반복하며 메모리 사이 사이에 빈 공간이 생기게 된다. 그러므로 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상이 발생된다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

해결 방법

메모리 압축(Compaction)

여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식이다. 프로세스를 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법이다. 하지만 메모리에 있는 내용을 옮기는 작업은 많은 오베허드를 야기하며 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압출할 수 있는지에 대한 명확한 방법을 결정하기 어렵다.

출처 : https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

 

 

 

 

 

참고 :  본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

반응형

댓글