CS/computer science

[기술면접] CS 문답 | os : memory

째깍단 2023. 8. 24. 20:45

💡 paging에 대해 설명하시오

페이징 기법은 메모리 관리기법이다

 

 

 

memory 분할의 역사..

 

메모리 분할 방법의 필요성:

메인 메모리에는 다양한 프로그램, 컴퓨터 운영체제가 함께 저장된다.

많은 사람이 사용하는 서버의 경우는 다양한 유저의 프로세스도 하나의 메모리에 저장해야한다.

이러한 상황에서 컴퓨터를 잘 사용하기 위해 가능한 한 가장 효율적인 방법으로 메인메모리를 분할하고 할당해야했다.

 

 

연속메모리 할당..(지금방식이랑은 다름)

contiguous allocation과 MMU

  • contiguous allocation 연속 메모리 할당
    Logical address가 연속적이면 physical address도 연속적으로 배치된다. 는 개념

  • MMU Memory management unit
    MMU는 CPU코어 안에 탑재되어 가상 주소를 실제 메모리 주소로 변환해주는 장치

 


MMU의 memory protection
잘못된 메모리 주소를 참조하지 않도록 막아주는 것이 memory protection, 이것을 위해 상한 레지스터(limit register)가 추가되었다.

가상 주소값이 상한 레지스터보다 크면 memory protection fault를 발생시킨다.= 메모리 보호!

 

[참고] : https://jhnyang.tistory.com/247

 

 

 

연속 메모리 할당을 쓰면 mmu가 메모리 + 및 상한선 체크만 해주면 되어 간단해졌지만 단점으로 인해 점차 쓰이지 않게 되었다.

  • 👎 단점 : Fragmentation 메모리 단편화
    메모리 사이에 남은 공간을 Hole이라 부름.
    hole은 각각 쪼개진 공간이므로 해당 크기보다 큰 프로세스가 들어올 수 없다

    총 공간을 계산해 보았을때 요청을 만족할 만한 충분한 메모리가 있음에도,
    가능한 공간들이 연속적이지 않을때
    (저장공간이 작은 hole로 메모리가 조각나있을때)
    External fragmentation이 발생한다 (외부 단편화)


비어 있는 공간을 연속적인 공간으로 만들고 움직이는 작업이 compaction

이로 인해 I/o problem(하드 디스크 병목)이 발생 = 좋은 방법이 아니다! = paging의 배경

[참고] : https://jhnyang.tistory.com/264

 

 


 

 

프로세스를 연속 할당하면 외부 단편화가 발생해 값비싼 메모리 자원의 손실 현상이 일어날 수 있다.

따라서 내부 단편화 internal Fragmentation의 기법을 고민하게 되었다.

 

내부단편화는 Logical address를 동일한 크기로 자르고 physical address도 동일한 크기로 자른 후 배치를 하면 자투리 공간이 없어질 것이라는 생각으로 진행되었다. 이는 외부 단편화가 절대 발생하지 않는 것을 의미하며, 이것이 paging 기법이다.

 

 

paging은 Intel프로세서에서 사용되고 있는 기법으로,

쉽게 말하면 프로세스를 일정 크기인 page로 잘라서 메모리에 적재하는 방식이다.

 

Logical address space 분할 = page

Physical address memory 분할 = frame

 

 

 

 

💡 segmentation에 대해 설명하시오

 

세그먼테이션은 사용자/프로그래머 관점의 메모리 관리 기법으로
프로세스를 논리적 내용을 기반으로 나눠서(Segment) 메모리에 배치하는 방법을 사용한다.

 

프로세스를 Code, Data, Stack으로 나누어 주는 것도 세그먼테이션의 역할이며, 세그먼트 테이블은 세그먼트 번호와 시작 주소(base), 세그먼트 크기(limit)를 엔트리로 가진다.

 

가상 메모리를 사용하며, CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트가 발생해서 해당 프로세스를 강제로 종료하게 된다

 

 

 

 

💡 Paging 과 Segmentation 차이점

 

  • paging 은 고정 크기, segmentation 은 가변 크기를 가진다.
    페이징은 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당한다. 말 그대로 프로세스를 일정한 크기로 자른 것이다.
    세그먼테이션은 논리적 내용을 기반으로 나누어 배치하므로 해당 내용의 크기에 따라 세그먼트의 크기가 달라진다.
  • paging은 내부 단편화 발생, segmentation 은 외부 단편화가 발생 가능하다.

 

 

 

 

💡 가상 메모리에 대해서 설명하시오

 

가상 메모리 (Virtual Mememory)는 실제 메모리 크기와 관계 없이 메모리를 사용할 수 있도록 가상 메모리 주소를 사용하는 것이다.

 

프로세스의 일부분만 메모리에 로드하고 나머지는 보조 기억 장치 (가상 메모리 공간) 에 둔다.

MMU 를 통해 논리 주소, 물리 주소를 나누어 사용하여 CPU에게는 마치 필요한 프로세스만 동작하는 것처럼 보이게 한다.

 

MMU = 가상 주소를 실제 메모리 주소로 변환해주는 장치

 

 

👍 장점

  • 실제 메모리 (RAM) 보다 더 큰 공간을 사용
  • 가상의 주소를 사용해 논리적인 연속성을 제공
  • 물리 메모리의 주소 공간을 몰라도 됨 </aside>