[영상후기][10분 테코톡] 🧚🏻 배럴의 가상 메모리

박철현·2023년 3월 5일
0

영상후기

목록 보기
7/160

movie

  • 가상메모리 : 프로세스 전체가 메모리 내 올라오지 않더라도 실행 가능하도록 하는 기법

    • 사용자 프로그램이 물리 메모리의 제약에서 벗어남
      => 사용자 프로그램이 물리 메모리보다 커져도 됨(물리 메모리 크기 신경쓰지 않고 해결하고자 하는 문제에 집중 가능)
    • 각 프로그램이 더 작은 메모리를 차지하기 때문에 더 많은 프로그램을 동시 수행 가능
      => 프로세스 당 메모리 사용량이 감소하고 더 많은 프로세스 수용 가능
      => 응답시간은 늘지 않으면서 CPU 이용률과 처리률이 높아짐
    • 프로그램을 메모리에 올리고 swap 하는데 필요한 IO 횟수가 줄어듬
      => IO가 적게 일어나므로 더 빨리 실행 가능
  • 이해하기 위한 사전 지식 필요

    • 컴퓨터 구조

      • CPU는 메인메모리까지만 참조 가능, 외부 DISK는 OS도움을 받아 입출력 작업 진행
    • 프로그램이 실행되는 것이란?

      • CPU가 일을 하는 것, CPU는 메인메모리 까지만 참조 가능
      • 프로그램의 정보가 메모리에 올라와야 함
      • 프로그램은 Disk에 이진 실행 파일 형식으로 존재
      • 프로그램의 정보가 CPU가 참조할 수 있는 형태(프로세스)로 물리메모리에 올라가야 실행 가능
    • 주소바인딩 : 논리주소를 물리주소와 매핑하는 작업

      • 논리주소 : CPU가 생성하는 주소
      • 물리주소 : 메모리가 취급하는 주소
      • 실행시간 바인딩 : 논리적 주소 + 기준 레지스터 = 물리적 주소
    • 스왑영역

      • 시분할 방식 : 여러개의 프로그램을 동시에 실행하는 것 처럼 사용하기 위해 CPU가 짧은 시간 단위로 프로세스를 바꿔가며 사용하는 방식
      • CPU가 프로세스 실행하려면 메모리에 올라와 있어야 하는데 프로그램이 많을 경우 공간이 부족 → 메모리 공간의 확장 영역으로 스왑 영역 사용
      • 스왑 영역 : 외부 저장장치 존재, 물리메모리 확장
        • 디스크에 존재하지만 파일시스템과 별도 존재 → 일시적 저장(휘발성) -> 공간 효율성 보다는 시간 효율성을 고려한 저장 -> 일반적으로 파일 시스템 접근 보다 좀 더 빠른 접근 가능
  • 가상메모리 필요 이유?

    • 여러 프로그램 활용 → 공간 부족 → 스왑영역으로 내쫓고 가져오기
    • 스왑영역과 I/O, 물리메모리 크기 벗어나면 실행 불가
    • 따라서 필요성이 생김
  • 가상메모리, 모든 논리주소를 물리 메모리에 올려야 할까?

    • 좋은 프로그램 일 수록 자주 사용되지 않는 방어나 관리 코드가 많음
    • 자주 사용되지 않는 부분을 물리 메모리에 올리는 것은 비효율
    • 필요한 내용만 물리 메모리에 올려두고 사용하면 좋을듯 => 가상메모리 등장
  • 가상메모리 : 전체를 다 메모리에 올릴 필요 없이 필요한 부분만 메모리에 올려 실행 (실제 물리 + 개발자 논리 메모리 개념 분리)

    • 요구페이징 기법을 활용하여 필요한 부분만 적재함
  • 요구 페이징 기법 : 주소 공간이 여러 페이지로 나누고, 당장 필요한 페이지만 물리메모리에 올리기

    • 필요한 페이지가 물리 메모리에 있는지 여부를 알기 위한 valid 비트 사용(있음 - valid 비트 / 없음 - Invalid 비트)
    • Invalid 비트 : Page Fault 발생한 것으로 봄 이 경우 보조저장장치에서 해당 페이지를 가져옴
    • 요구페이징 기법 과정 : 찾고자 하는 페이지가 가상 공간에 없음(Page Fault 발생) -> CPU 제어권 OS로 넘어감 -> Swap 영역에서 해당 페이지를 참고해서 물리메모리의 빈 공간에 올림
      • 상대적으로 큰 공간인 Swap 영역을 활용하여 프로세스마다 가상의 주소 공간을 확보하고 필요한 페이지만 물리메모리에 올려 사용함으로 써 더 효과먹으로 물리 메모리를 사용함
      • 운영체제에서는 프로그램이 물리적 메모리의 크기를 고려할 필요 없이 자기 자신만의 메모리를 사용하는 것 처럼 가정하에 프로그램 하는것을 지원
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보