메모리 관리 전략
메모리 관리의 배경
각 프로세스는 독립된 메모리 공간을 갖고, 운영체제나 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있음.
(단, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역에 접근에 제약을 받지 않음)
Swapping
메모리 관리를 위해 사용되는 기법으로, 라운드 로빈과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU할당 시간이 끝난 프로세스의 메모리를 보조기억 장치로 내보내고 다른 프로세스의 메모리를 불러들일 수 있음.
주기억장치(RAM)으로 불러오는 과정을 swap-in, 보조 기억장치로 내보내는 과정을 swap-out이라고함.
이는 큰 디스크 전송 시간이 요구되기 때문에 현재엔 메모리 공간이 부족할 때 swapping이 시작됨.
단편화 (Fragmentation)
프로세스들이메모리에 적재되고 제거되는 일이 반복되다 보면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 크기의 작은 빈 공간들이 늘어나게되는 것.
- 외부 단편화 : 메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리 사이에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생.
- 내부 단편화 : 프로세스가 사용하는 메모리 공간에 포함된 남은 부분. 요구된 메모리 보다 약간 커서 빈 곳이 쓸모는 없지만 비어있는 상태.
압축 : 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한 쪽으로 몰아 자유공간을 확보하는 방법. but 작업효율 구림.
페이징 (Paging) - 고정 크기
하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 깨는 메모리 관리 방법.
외부 단편화롸 압축 작업을 해소하기 위한 방법.
물리 메모리는 Frame이라는 고정된 크기로 분리되고 논리 메모리(프로세스가 점유하는)는 page라고 불리는 고정 크기 블록으로 분리됨.
페이징을 통해 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절하게 배치됨으로 외부 단편화 해결
하나의 프로세스가 사용하는 공간은 여러 페이지로 나뉘어 관리되고 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 mapping되어 저장된다.
단점: 역으로 내부단편화의 비중이 증가. page에 여유공간이 남게 되는 경우가 많기 때문
세그멘테이션 (Segmentation) - 가변 크기
페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할함.
내부 단편화 문제를 해소하기 위한 방법
메모리 사용 효율이 개선되고 동적 분할을 통한 오버헤드가 감소함.
단점: 외부단편화 문제 해결 불가. 서로다른 크기의 스그먼트들이 적재되고 제거되다보면 빈 공간이 많은 수의 작은 조각으로 나뉘어 사용하지 못하게 되기 때문
CS 면접 대비를 위해 아래 깃허브를 기반으로 작성 되었습니다.
github.com/JaeYeopHan/Interview_Question_for_Beginner
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 캐시의 지역성 (0) | 2021.05.16 |
---|---|
[운영체제] 가상 메모리 (0) | 2021.05.16 |
[운영체제] 교착상태 (Deadlock) 및 기아상태(Starvation) (0) | 2021.05.15 |
[운영체제] 프로세스 동기화 (0) | 2021.05.15 |
[운영체제] 동기와 비동기 (0) | 2021.05.14 |