어째서 가상메모리가 좋을까?

Y39·2023년 2월 23일
0

toBeProgrammer

목록 보기
5/88

movie

  • 가상메모리

    • 메모리 관리 기법
      -프로세스 전체가 메모리에 올라가지 않아도 실행 가능
    • 장점
      • 물리 메모리의 제약에서 벗어남
      • 더 작은 메모리를 차지해서 더 많은 프로그램을 동시 수행
      • 프로그램을 메모리에 올리고 swap 하는 IO 횟수가 줄어들음
  • 컴퓨터와 가상메모리

    • 컴퓨터의 cpu에서 처리
      • cpu는 효율적으로 메모리 처리를 위해 메인메모리(레지스터 값)을 참조
        근데 레지스터는 매우 작고 휘발적임
      • 그래서 옆에 있는 disk를 써야함
        근데 느리지만 비휘발적임
        OS의 도움으로 넣고 빼고(I/O)를 해야함
  • 프로그램이 실행되는 것이란?
    => cpu가 동작하는 것.
    즉 프로그램 정보가 메인메모리까지 와야함

    • 소스 프로그램 -> 컴파일 -> 이진실행파일 생성(disk) -> 실행 -> 실행 파일이 물리메모리를 차지 -> 메인 메모리로 보냄 -> 프로세스 형태로 배치 -> cpu가 알아들을 수 있는 형태가 됨
    • cpu는 프로세스 형태가 된 프로그램에게 논리 주소를 줌
    • 논리 주소는 변수 같은 거고, 물리 주소를 참조할 수 있음
    • 이렇게 논리 주소와 물리 주소를 엮는 것이 '주소 바인딩'
    • 다양한 바인딩 기법이 있지만 가상 메모리를 쓰려면 실행시간 바인딩이 지원돼야함
  • 왜 프로세스가 동시에 실행되나?

    • 실제로는 동시에 실행 되는 것이 아니라 짧은 시간마다 프로세스를 바꿔가면서 사용 => 시분할
  • swap 영역

    • 메모리는 작기 때문에 disk에 swap영역을 생성
      • disk가 메인 메모리한테 월세로 내준거
    • swap 영역 파일 저장소와 다르고 메모리와 매우 유사
  • 가상 메모리 왜 필요?

    • 프로그램이 요구하는 메모리가 크다면 실행조차 안 될 거임
    • 그래서 프로그램 실행시 필요한 프로세스만 띄우는 아이디어
      • 이때 물리적인 메모리를 사용하지 않고 가상 메모리를 통해 필요한 부분만 떼어내는 거임
    • 그럼 필요한 부분만 어떻게 줄 수 있음?
      -요구 페이징 기법을 사용
      • 논리 주소 공간이 하나가 아니라 페이지로 쪼개져있음
      • 그래서 필요한 애들만 물리 메모리에 올려서 씀
      • 필요한 애들이 물리 메모리에 올라왔는지 체크하면서 관리
profile
System.out.print("Bold")

0개의 댓글