티스토리 뷰
[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다.
* 메모리 할당 방법
- 연속 메모리 적재 방법 : 연속적으로 적재
- 비연속(분산) 메모리 적재 방법 : 페이지나 세그먼트 단위로 나눠 여러 곳에 적재
* 연속 메모리 할당
- 고정 분할 방법 : 메모리를 여러 개의 고정된 크기로 분할함
- 가변 분할 방법 : 필요한 만큼 메모리를 할당함
* 고정 분할 방법(Fixed Partition Allocation)
- 메모리를 여러 개의 고정된 크기로 분할하고, 분할한 각 메모리는 프로세스, 즉 작업 하나를 실행 할 수 있음
- 논리적 주소가 분할된 메모리보다 크면 오류 발생하고, 작으면 내부 단편화 발생함
- 프로그래밍의 성능이 분할 수에 제한을 받음
* 내부 단편화(Internal Fragmentation)
- 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간 낭비 발생
- 프로세스는 실제로 사용하지 않는 메모리 영역을 가지고 있게 됨
*외부 단편화(External Fragmentation)
- 남아있는 총 메모리 공간이 프로세스가 요청한 메모리 공간보다 크지만, 남아있는 공간이 연속적이지 않아 사용할 수 없는 경우
- 쪼개진 메모리 공간을 사용할 수 없어 메모리 낭비 발생
- 프로세스들이 메모리를 할당하고 반납하는 과정에서, 사용할 수 있는 메모리 공간이 쪼개져서 발생
* 가변 분할 방법(Variable Partition Allocation)
- 고정된 경계를 없애고 각 프로세스가 필요한 만큼 메모리를 할당하는 것
- 프로세스 크기 만큼의 메모리 공간을 사용하기 때문에 내부 단편화는 발생하지 않음
- 프로세스를 올리기에 충분한 공간이 존재하지 않는 경우 외부 단편화 발생
- 사용 가능 공간을 어느 작업에 할당하는 것이 좋은지 결정하는 일반적인 메모리 배치 방법으로 최초 적합, 최적 적합, 최악 적합 있음
* 최초 적합(First-Fit)
- 프로세스를 사용 가능 공간 중 충분히 큰 첫번쨰 공간에 할당함
- 검색을 사용 가능 공간의 리스트 맨 앞이나 이전의 최초 적합 검색이 끝났던 곳에서 시작하면 충분히 큰 사용 공간을 빨리 찾을 수 있음
- 공간 활용률이 떨어질 수 있다는 단점 존재
* 최적 적합(Best-Fit)
- 프로세스를 충분히 큰 사용 가능 공간 중에서 들어갈 수 있는 가장 작은 공간에 할당함
- 사용 가능 공간을 계속 정렬하는 과정이 필요하여 비효율적일 수 있음
* 최악 적합(Worst-Fit)
- 프로세스를 가장 큰 사용 가능 공간에 할당함
- 공간이 크기 순으로 정렬되어 있지 않은 경우 전체를 검색해야 함
- 가장 큰 사용 가능 공간에 할당하기 때문에 가장 작은 또 다른 사용 가능 공간을 만드는 최적 적합보다 메모리 활용 면에서 더 유용함
* 메모리 통합(Memory Coalescing) 방법
- 위 방법(최초, 최적, 최악)들의 단편화 문제를 해결하기 위한 방법
- 하나의 작업이 끝났을 때 다른 빈 공간과 인접해 있는지 점검하여 하나로 합치는 것
- 메모리 전반에 흩어진 빈 공간을 모두 통합하기는 어려움
* 메모리 압축(Memory Compaction) 방법
- 위 방법(최초, 최적, 최악)들의 단편화 문제를 해결하기 위한 방법
- 메모리의 내용을 적절히 움직여 사용 가능 공간을 큰 블록 하나로 만드는 것
- 장점 : 가변 메모리에서 발생하는 수많은 작은 공백을 하나의 큰 공백으로 변환하여 새로운 작업에 할당할 수 있음
- 단점 : 압축하는 동안 시스템은 모든 일은 중지해야 하며, 메모리에 있는 작업들을 이동하기 때문에 프로그램을 적재할 때 제거되는 대치 관련 정보를 액세스 가능한 형태로 보관해야 함. 또한 압축 작업을 자주 요구하여 시스템 자원의 소모가 큼
* 분산 메모리 할당
- 메모리에 불연속적으로 공간 할당
- 하나의 프로세스가 물리 메모리 상의 여러 위치에 분산되어 적재되도록 함
- 페이징, 세그멘테이션으로 나뉨
* 페이징(Paging)
- 작업을 크기가 동일한 페이지로 나눠 처리하는 방법
- 프로세스의 주소 공간을 고정된 사이즈의 페이지(Page) 단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식
- 메모리는 프레임(Frame)이라는 고정 크기로 분할, 프로세스는 페이지(Page)라는 고정 크기로 분할
- 페이지와 프레임을 대응시키는 Page Mapping을 위해 Page Table 필요
- Page Table에는 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장
- 빈 프레임에 어떤 페이지든 적재할 수 있어 메모리를 효율적으로 사용할 수 있으며, 프레임 간에 외부 단편화 발생X
- 한 프로세스의 페이지를 메인 메모리의 여러 위치에 분산 적재하여 운영체제의 페이지 관리 부담이 큼
-> 프레임 단위로 적재하므로 어떤 프로세스에 필요한 공간이 페이지 크기와 맞지 않으면, 마지막 페이지에 할당된 프레임이 완전히 차지 않아 내부 단편화가 발생할 수 있음
* 세그먼테이션(Segmentation)
- 프로세스를 서로 다른 크기의 논리적 블록 단위인 세그먼트(Segment)로 나누어 메모리에 불연속적으로 할당하는 방식
- 세그먼트 단위는 함수 단위일 수도 있고, Code/Data/Heap/Stack 등 논리적 단위일 수 있음
- 세그먼트의 논리적 주소 = 세그먼트 번호 + 오프셋
- 페이징과 마찬가지로 Segment Mapping 과정을 위해 Segment Table 필요
- 세그먼트의 크기는 각각 다르기 때문에 Segment Table에는 시작 주소와 함께 limit 정보가 주어짐
- 프로세스가 필요로 하는 메모리 공간 만큼이 할당되기 때문에 내부 단편화 문제 해결
- 메모리 해제를 통한 외부 단편화 발생
* Paging VS Segmentation
- Paging은 고정 크기의 분할 단위, Segmentation은 가변 크기의 분할 단위를 가짐
- Paging은 내부 단편화 발생 가능, Segmentation은 외부 단편화 발생 가능
- Paging은 외부 단편화 해결, Segmentation은 내부 단편화 해결
- Paging은 메모리를 효율적으로 사용할 수 있으며, Segmentation은 가변적인 데이터 구조와 모듈 처리, 공유와 보호의 지원 편리함
'개인공부 > 운영체제' 카테고리의 다른 글
[운영체제] 입출력 시스템 (0) | 2023.12.02 |
---|---|
[운영체제] 가상 메모리(Virtual Memory) (0) | 2023.12.01 |
[운영체제] 메모리 관리 (0) | 2023.11.30 |
[운영체제] 스케줄링 알고리즘 (0) | 2023.11.29 |
[운영체제] 스케줄링(Scheduling) 개념 (0) | 2023.11.29 |