※ 2021년 10월 29일에 작성된 글입니다.
🎞 메모리 단편화(memory fragmentation)
Process |
free | Process |
free | Process |
free | Process |
---|
외부 단편화(external fragmentation)
프로그램 크기 > 분할의 크기일 때, 해당 분할이 비어 있음에도 불구하고 프로그램을 적재하지 못하기 때문에 발생하는 메모리 공간
- 어떤 프로그램에도 배당되지 않은 빈 공간
- 현재 상태에서 사용될 수 없는 작은 분할
내부 단편화(internal fragmentation)
프로그램 크기 < 분할의 크기일 때, 해당 분할에 프로그램을 적재하고 남는 메모리 공간
- 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각
압축(compaction)
Process |
Process |
Process |
Process |
free |
---|
외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유 공간을 확보하는 방법론
- 작업 효율이 좋지 않음
✨ 어떻게 해소하는가?
📄 페이징(paging)
프로세스의 주소 공간을 동일한(고정된) 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 저장하는 방식
- 외부 단편화 해소
- 메모리는
frame
, 프로세스는page
라는 고정 크기로 분할 - 하나의 프로세스가 사용하는 공간은 여러 개의 페이지로 나뉘어서 관리
- 개별 페이지는 순서에 상관 없이 물리 메모리에 있는 프레임에 매핑(mapping)되어 저장
- 내부 단편화 문제 비중 늘어남
🔪 세그멘테이션(segmentation)
프로세스를 서로 크기가 다른 논리적인 블록 단위 인 세그먼트(segment)로 분할하고 메모리에 배치
- 세그먼트 테이블은 세그먼트 번호와 시작 주소, 세그먼트 크기를 엔트리로 갖음
- 외부 단편화 문제 발생 가능
💣 segmentation fault?
C언어 쓸 때 자주 보던 거
프로그램이 허용되지 않은 메모리 영역에 접근을 시도하거나, 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 경우 발생
다음과 같은 코드는 segmentation fault를 발생시킨다.
int *ptr = (int) 0x00000000;
*ptr = 1;
참고 자료
- Ready-For-Tech-Interview_단편화.md at master · WooVictory_Ready-For-Tech-Interview
- Ready-For-Tech-Interview_Paging_Segmentation.md at master · WooVictory_Ready-For-Tech-Interview
- Interview_Question_for_Beginner_README.md at master · JaeYeopHan_Interview_Question_for_Beginner
- 세그멘테이션 오류 - 위키백과, 우리 모두의 백과사전