[OS] Memory

윤정민·2023년 9월 28일
0

OperationSystem

목록 보기
15/16

1. Main Memory

  • cpu가 직접 전근 가능한 기억 장치
  • 프로세스가 실행되려면 프로그램이 메모리에 올라와야 함
  • 주소가 할당된 일련의 바이트들로 구성되어 있음

2. Memory Management Unit

  • 논리 주소를 물리 주소로 변환
  • 메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리해주는 하드웨어

2.1. MMU의 메모리 보호

  • 프로세스는 독립적인 메모리 공간을 가져야 하며, 자신의 공간만 접근해야 함
  • 프로세스마다 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시키며 보호
  • base와 limit 레지스터를 활용한 메모리 보호 기법
    • base 레지스터: 메모리상의 프로세스 시작주소를 물리 주소로 저장
    • limit 레지스터: 프로세스의 사이즈를 저장
      base <= x < base + limit
    • 영역 밖에서 접근을 요구하면 trap을 발생
    • 안전성을 위해 base와 limit 레지스터는 커널모드에서만 수정 가능하도록 설계

3. 메모리 과할당(Over Allocation)

  • 실제 메모리의 사이즈보다 더 큰 사이즈의 메모리를 프로세스에 할당
  • 과할당 상황을 들키는 경우
    • 프로세스 실행 도중 페이지 폴트 발생
    • 페이지 폴트를 발생시킨 페이지 위치를 디스크에서 찾음
    • 메모리의 빈 프레임에 페이지를 올려야 하는데, 모든 메모리가 사용중이라 빈 프레임이 없음
  • 위와 같은 과할당 상황을 피하기 위해 빈 프레임을 확보할 수 있어야
    • 메모리에 올라와 있는 한 프로세스를 종료시켜 빈 프레임을 얻음
      • 페이징 시스템을 들킬 우려가 있어 지양
    • 프로세스 하나를 swap out하고, 이 공간을 빈 프레임으로 활용

4. swap out 과정

  • 프로세스 실행 도중 페이지 부재 발생
  • 페이지 폴트를 발생시킨 페이지 위치를 디스크에서 찾음
  • 메모리에 빈 프레임이 있는지 확인
    • 빈 프레임이 있다면 사용
    • 빈 프레임이 없다면, victim 프레임을 선정해 디스크에 기록하고 페이지 테이블을 업데이트함
  • 빈 프레임에 페이지 폴트가 발생한 페이지를 올리고, 페이지 테이블 업데이트
profile
그냥 하자

0개의 댓글