티끌모아 태산

OS for Beginner(2) 본문

CS 지식/운영체제

OS for Beginner(2)

goldpig 2023. 6. 14. 11:35
728x90

메모리 관리에 대한 개념들에 대해 간단하게 알아 보겠습니다. 

 

각각의 프로세스는 독립된 메모리 공간을 갖고, 다른 프로세스의 메모리 공간에 접근할 수 없다는 제한이 있다. 오로지 OS만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다. 

 

Swapping

메로리 관리를 위해 사용되는 기법으로, 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑 영역(백킹스토어)에 일시적으로 내려놓는 것을 말한다. -> 메모리에 존재하는 프로세스의 수를 조절하여 시스템의 성능을 향상시키기 위한 목적. 

  • swap-in: 주 기억장치(RAM)으로 불러오는 과정
  • swap-out: 보조 기억장치로 내보내는 과정

Fragmentation

프로세스들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 작은 자유 공간들이 늘어나게 되는데, 이것이 단편화 이다.

  • 외부 단편화: 메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생. -> Compaction(압축): 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아 놓고, 분산되어 있는 공간을 merge하여 자유공간을 확보하는 방법인데 작업의 효율이 좋지 않다. 
  • 내부 단편화: 프로세스가 메모리 공간을 차지하고 남는 부분. 예를들어, 메모리 분할 자유 공간이 100B이고 프로세스가 98B를 사용하게 되면 2B라는 차이가 존재하고 이것을 내부 단편화 라고 한다. 

Paging

프로세스의 주소 공간을 동일한 크기의 페이지 단위로 나누어 물리적 메모리의 서로 다른 위치에 페이지들을 저장하는 방식으로 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메로리 관리 기법이다. 외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론으로, 물리 메모리는 Frame 이라는 고정 크기로 분리되어 있고, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리된다. 

 

페이징 기법은 논리 메모리가 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단펴화를 해결할 수 있는 큰 장점이 있다. 하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 관리되고(논리 메모리에서), 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 맵핑 되어 저장된다고 볼 수 있다. -> 내부 단편화 문제가 늘어가 된다. 즉, 프로그램의 크기가 항상 페이지 크기의 배수가 된다는 보장이 없기 때문에 프로세스의 주소 공간 중 제일 마지막에 위치한 페이지에서는 내부 단편화가 발생할 가능성이 있다. 

Segmentation

페이징에서처럼 논치 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할. 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장-> 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수 도 있다.(외부 단편화)

728x90

'CS 지식 > 운영체제' 카테고리의 다른 글

OS for Beginner(3)  (0) 2023.06.15
OS for Beginner(1)  (0) 2023.06.14
Memory Management(4)  (0) 2023.06.13