다중 프로그래밍 환경에서의 메모리 할당
목차
01. 운영체제의 개요
02. 컴퓨터의 구조와 성능 향상
03. 프로세스와 스레드
04. CPU 스케줄링
05. 프로세스 동기화
06. 교착 상태
07. 물리 메모리 관리
08. 가상 메모리의 기초
09. 가상 메모리 관리
10. 입출력 시스템과 저장장치
11. 파일 시스템
12. 네트워크와 분산 시스템
다중 프로그래밍 환경에서의 메모리 할당
메모리에 여러개의 프로세스를 배치하는 방법
가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 것
고정 분할 방식 : 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누는 것
식당 의자 비유
가변 분할 방식 : 손님 신체 크기에 맞게 의자를 준비
고정 분할 방식 : 같은 크기 의자 준비
손님 자리 배치 비유
가변 분할 방식 : 어디에 앉든 제약이 없기 때문에 손님들이 알아서 편한 자리에 앉음
고정 분할 방식 : 의자를 4개씩 나누고 거기에만 앉음
메모리 분할 방식의 구현
- 가변 분할방식
- 프로세스의 크기에 맞게 메모리가 분할
- 메모리의 영역이 각각 다름
- 연속 메모리 할당
- 고정 분할 방식
- 프로세스의 크기에 상관없이ㅣ 메모리가 같은 크기로 나뉨
- 큰 프로세스가 메모리에 올라오면 여러 조각으로 나누어 배치
- 비연속 메모리 할당
가변 분할 방식 장단점
장점 : 프로세스를 한 덩어리로 처리하여 하나의 프로세스를 연속된 공간에 배치
단점 : 비어있는 공간을 하나로 합쳐야 하며, 이 과정에서 다른 프로세스의 자리도 옮겨야 하므로 메모리 관리가 복잡함
고정 분할 방식 장단점
장점 : 메모리를 일정한 크기로 나누어 관리하기 때문에 메모리 관리가 수월
단점 : 쓸모없는 공간으로 인해 메모리 낭비
가변 분할 방식과 외부 단편화
프로세스 A B C D E 를 순서대로 배치했을 때 프로세스 B와 D가 종료되면 빈 공간이 생김
그러면, B와 D보다 프로세스 큰 것을 배정하지 못함. 이러한 공간을 외부 단편화 라고함.
외부 단편화 해결
메모리 배치 방식 : 작은 조각이 발생하지 않도록 프로세스를 배치하는 것
조각 모음 : 조각이 발생했을 때 작은 조각들을 모아서 하나의 큰 덩어리로 만드는 작업
메모리 배치 방식(가변 분할 방식의 예시)
- 최초 배치
- 프로세스를 메모리의 빈 공간에 배치할 때 첫번째로 발견한 공간에 배치
- 최적 배치
- 전체적인 자리를 보고 가장 단편화가 조금 발생할 것 같은 공간에 배치
- 최악 배치
- 빈 공간을 확인후 가장 큰 공간에 프로세스를 배치
조각모음
이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만드는 작업
- 조각 모음 순서
1. 조각 모음을 하기위해 이동할 프로세스의 동작을 멈춤
2. 프로세스를 적당한 위치로 이동(주소값 변경)
3. 작업을 다 마친 후 프로세스 다시 시작
고정 분할 방식 내부 단편화
- 각 메모리 조각에 프로세스를 배치하고 공간이 남는 현상
- 고정 분할 방식은 내부 단편화를 줄이기 위해 신중하게 메모리의 크기를 결정해 나눠야 하지만 프로세스 크기가 제각각이기 때문에 정답은 없음
- 조각모음X
비교
구분 | 가변 분할 방식 | 고정 분할 방식 |
메모리의 단위 | 세그먼테이션 | 페이징 |
특징 | 연속 메모리 할당 | 비연속 메모리 할당 |
장점 | 프로세스를 한 덩어리로 관리 가능 | 메모리 관리가 편리 |
단점 | 빈 공간의 관리가 어려움 | 프로세스가 분할되어 처리됨 |
단편화 | 외부 단편화 | 내부 단편화 |
버디 시스템의 작동 방식
1. 프로세스의 크기에 맞게 메모리를 1/2로 자르고 프로세스를 메모리에 배치
2. 나뉜 메모리의 각 구역에는 프로세스가 1개만 들어감
3. 프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 덩어리를 만듦
특징
가변 분할 방식처럼 메모리가 프로세스 크기대로 나뉨
고정 분할 방식처럼 하나의 구역에 다른 프로세스가 들어갈 수 없고, 메모리의 한 구역 내부에 조각이 생겨 내부 단편화 발생.
비슷한 크기의 조각이 서로 모여 작은 조각을 통합하여 큰 조각을 만들기 쉬움
'Operating System' 카테고리의 다른 글
페이징 기법 (0) | 2022.05.31 |
---|---|
가상메모리의 개요 (0) | 2022.05.30 |
단일 프로그래밍 환경에서의 메모리 할당 (0) | 2022.05.26 |
메모리 주소 (0) | 2022.05.25 |
메모리의 관리 개요 (0) | 2022.05.24 |