-
[OS] 스와핑과 연속 메모리 할당, 외부 단편화운영체제 2023. 4. 16. 11:08728x90반응형
스와핑과 연속 메모리 할당, 외부 단편화를 알아보자
운영체제의 가장 핵심적인 역할은 프로세스 관리와 메모리 관리입니다. 오늘은 그 중 하나인 메모리 관리에 대해서 공부해 볼겁니당.🧐
이번 포스팅에서는 기본적인 메모리 관리 기법, 스와핑과 메모리에 프로세스를 할당하는 방식, 그리고 연속 메모리 할당의 부작용인 외부 단편화를 공부해봅시당.
🍊 연속 메모리 할당 방식
프로세스들이 메모리 내에 배치될 때 연속적으로 배치되는 것을 연속 메모리 할당이라고 합니다. 모든 프로세스들이 그 크기만큼 메모리 주소를 할당받아 연속적으로 배치되는 것입니다.
🍊 스와핑이란?스와핑이란, 메모리에서 현재 사용되지 않는 프로세스가 있을 경우 해당 프로세스의 메모리를 임시로 보조 기억 장치로 옮겨두는 것을 말합니다. 운영체제는 이와 같은 스와핑을 통해 더욱 효율적으로 메모리를 활용할 수 있습니다. 이때 프로세스들이 옮겨진 보조기억장치의 일부 영역을 스왑 영역(swap space)라고 합니다.
스왑 아웃과 스왑 인
스왑 영역으로 옮겨지는 것을 스왑 아웃(swap-out), 반대로 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것을 스왑 인(swap-in)이라고 합니다.
스왑 영역 확인하기
유닉스와 리눅스, macOS에서는 free, top 명령어 등을 통해 스왑 영역의 크기를 확인할 수 있습니다. 스왑 영역의 크기와 사용 여부는 사용자가 임의로 설정할 수 있습니다.
🍊 메모리 할당
프로세스는 메모리 내의 빈 공간에 적재됩니다. 그런데 메모리 내에 빈 공간이 여러 개 있다면 프로세스를 어디에 배치해야 할까요? 메모리 할당에는 세 가지 방식이 있습니다.
메모리의 사용자 영역이 총 200MB이고, 적재할 프로세스는 20MB라고 가정해봅시다. 프로세스를 적재할 수 있는 빈 공간은 A와 B, C가 있습니다.
📍 최초 적합 first fit최초 적합은 메모리 내의 빈 공간을 순서대로 검색 하다가 적재 가능한 공간을 발견하는 순간 프로세스를 배치하는 방식입니다. 최초 적합 방식은 검색을 최소화할 수 있고 결과적으로 빠른 할당이 가능합니다.
📍 최적 적합 best fit
최적 적합은 운영체제가 빈 공간을 모두 검색해 본 후, 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식입니다. 위 예시에서는 빈 공간 C에 배치되는 것이 최적 적합 방식입니다.
📍 최악 적합 worst fit
최악 적합은 빈 공간을 모두 검색해 본 후, 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식입니다. 위 예시에서는 B 부분이 가장 크기 때문에 B 구간에 배치되는 것이 최악 적합 방식입니다.
🍊 외부 단편화 external fragmentation프로세스를 메모리에 연속적으로 배치하는 연속 메모리 할당은 사실 메모리를 효율적으로 사용하는 방법은 아닙니다. 이는 외부 단편화라는 문제를 내포하고 있기 때문입니다.
외부 단편화란?
외부 단편화는 메모리 공간 중에서 사용되지 않는 일부 조각들이 연속되어서 낭비되는 현상을 말합니다. 남은 메모리 조각들의 크기를 합치면 상당한 메모리 공간이 남는데 이는 그 크기만큼 사용되지 못하고 조각조각 나뉘어져 있어 사용되지 못하기 때문에 메모리 공간을 효율적으로 활용하는 데 있어서 문제가 됩니다.
외부 단편화 문제 해결하기
압축 compaction
압축은 여기저기 흩어져 있는 빈공간들을 하나로 모으는 방식입니다. 메모리 조각 모음이라고도 부릅니다.
사실 압축 방식은 여러 단점이 있는데, 시스템은 하던 일을 중지해야 하고 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기합니다. 이 때문에 가상 메모리 기법, 페이징이 등장했습니다.
다음 포스팅에서는 아주아쥬 중요한 페이징에 대해서 다뤄볼게요 😀LIST'운영체제' 카테고리의 다른 글
[OS] 페이징 주소 변환과 페이지 테이블 엔트리 (0) 2023.04.29 [OS] 페이징으로 가상 메모리 관리하기, 페이지 테이블, TLB (0) 2023.04.23 [OS] 교착 상태(Deadlock) 해결 방법 _데드락 (0) 2023.04.09 [OS] 데드락(교착 상태)과 자원 할당 그래프 (0) 2023.04.08 [OS] Linux IPC 프로세스간 통신에 대해서 알아보자 (0) 2023.04.04