티스토리 뷰

[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다.

 

* 메모리 할당 방법

출처 : https://m.blog.naver.com/qbxlvnf11/221366441346

- 연속 메모리 적재 방법 : 연속적으로 적재

- 비연속(분산) 메모리 적재 방법 : 페이지나 세그먼트 단위로 나눠 여러 곳에 적재

 

* 연속 메모리 할당

- 고정 분할 방법 : 메모리를 여러 개의 고정된 크기로 분할함

- 가변 분할 방법 : 필요한 만큼 메모리를 할당함

 

* 고정 분할 방법(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

- 한 프로세스의 페이지를 메인 메모리의 여러 위치에 분산 적재하여 운영체제의 페이지 관리 부담이 큼

  -> 프레임 단위로 적재하므로 어떤 프로세스에 필요한 공간이 페이지 크기와 맞지 않으면, 마지막 페이지에 할당된 프레임이 완전히 차지 않아 내부 단편화가 발생할 수 있음

출처 : https://jinhyy.tistory.com/34

 

* 세그먼테이션(Segmentation)

- 프로세스를 서로 다른 크기의 논리적 블록 단위인 세그먼트(Segment)로 나누어 메모리에 불연속적으로 할당하는 방식

- 세그먼트 단위는 함수 단위일 수도 있고, Code/Data/Heap/Stack 등 논리적 단위일 수 있음

- 세그먼트의 논리적 주소 = 세그먼트 번호 + 오프셋

- 페이징과 마찬가지로 Segment Mapping 과정을 위해 Segment Table 필요

- 세그먼트의 크기는 각각 다르기 때문에 Segment Table에는 시작 주소와 함께 limit 정보가 주어짐

- 프로세스가 필요로 하는 메모리 공간 만큼이 할당되기 때문에 내부 단편화 문제 해결

- 메모리 해제를 통한 외부 단편화 발생

출처 : https://jinhyy.tistory.com/34

 

* Paging VS Segmentation

- Paging은 고정 크기의 분할 단위, Segmentation은 가변 크기의 분할 단위를 가짐

- Paging은 내부 단편화 발생 가능, Segmentation은 외부 단편화 발생 가능

- Paging은 외부 단편화 해결, Segmentation은 내부 단편화 해결

- Paging은 메모리를 효율적으로 사용할 수 있으며, Segmentation은 가변적인 데이터 구조와 모듈 처리, 공유와 보호의 지원 편리함

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함