개발자 면접 공부/운영체제,CS

가상메모리 관리

chogyujin 2023. 12. 8. 17:12
728x90

1. 개요

오늘은 가상메모리와 가상메모리의 관리에 대해 공부하겠습니다.


2. 가상메모리란?

가상메모리는 운영체제에서 크고 느린 장치인 디스크를 어떻게 메모리에 다 담을지 또한 메모리 용량이 부족할지? 그리고 어떻게하면 메모리의 보안을 유지할수있을지 많은 선배 개발자분들이 고민을 하였다.

그 결과 일부 페이지들을 스왑 아웃하는 기능을 사용하여 멀티 프로그래밍과 사용 편의성 등의 이유로 실제 물리 메모리보다 더 많은 용량의 메모리가 필요하다고 판단, 그것이 가상 메모리가 되었다.

 

  • Non-Contiuous allocation
    • 사용자 프로그램을 block으로 분할하여 적재/실행
    • paging/segmentation system
  • 가상 메모리 관리의 목적
    • 가상 메모리 시스템 성능을 최적화
      • cost model, 다양한 최적화 기법이 존재

 


3. Other Considerations

가상 메모리를 관리할 때 신경써야 할 것들 몇 개 말해보겠다.

  • Page Size
  • Program restructuring
  • TLB reach

3-1 Page Size

  • 시스템 특성에 따라 다르다
    • No best answer
    • Page Size가 점점 커지는 경향이 있음
      • HW의 발전과도 연관이 깊다.
      • CPU의 성능이 발전하고 Memory Size도 점점 커지면서 상대적인 Page fault의 처리 비용이 증가중
  • 일반적인 page size : 2^7(128) bytes ~ 2^22(4M)bytes
  • Small page size일 경우
    • Large page table/ # of PF -> High overhead(kernel)
    • 내부 단편화 감소
    • I/O 시간 증가
    • Locality 향상
    • Page fault 증가
  • Large page size
    • Small page table/# of PF -> Low overHead(kernel)
    • 내부 단편화 증가
    • I/O 시간 감소
    • Locality 감소
    • Page fault 감소

3-2 Program Restructuring

  • 가상 메모리 시스템의 특성에 맞도록 프로그램을 재구성
  • 사용자가 가상 메모리 관리 기법에 대해 이해하고 있다면, 프로그램의 구조를 변경하여 성능을 높일수 있다.
// program-1
int main()
{
	int zar[256][256]; // 행, 열
    int i, j;

    for(j=0; j < 256; j++)
    	for (i=0; i < 256; i++)
        	zar[i][j] = 0;

    return 0;
}

출처 :https://velog.io/@minu/7.1.-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC

// program-2
int main()
{
	int zar[256][256];
    int i, j;

    for(i = 0; i < 256; j++)
    	for(j = 0; j < 256; j++)
        	zar[i][j] = 0;

    return 0;
}

3-3 TLB Reach

  • TLB를 통해 접근 할 수 있는 메모리의 양
    • number of entries * page size
  • TLB hit ratio를 높이려면
    • TLB의 크기를 증가->비쌈
    • Page크기를 증가 or 다양한 page size 지원
      • 현대 OS의 발전으로 인해 OS의 지원이 가능함

4. Ref

https://velog.io/@minu/7.1.-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC

 

7.1. 가상 메모리 관리

가상 메모리 관리

velog.io

 

'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글

메모리 영역  (1) 2024.03.23
TCB  (0) 2023.12.14
캐시메모리와 지역성 그리고 캐시라인  (0) 2023.11.30
Race Condition 경쟁상태  (0) 2023.10.28
라이브러리 vs 프레임워크  (0) 2023.05.21