CS/운영체제

운영체제 - 가상 메모리, 요구 페이징, 스레싱, 캐시 메모리

개발 일기92 2024. 6. 12. 15:28

가상메모리?

프로세스의 일부만 메모리에 로드하고 나머지는 디스크에 둔 상태로 실행하는 방식이다.

나머지 부분을 디스크에 두기 때문에 더 많은 프로세스를 메모리에 로드할 수 있다.

 

장점 

  • 메모리 크기에 대한 제약을 덜 받는다.
  • CPU 이용률과 처리율을 높일 수 있다. -> 동시에 많은 프로그램이 실행하므로
  • 필요한 영역만 로드하여 스와핑 횟수를 줄여 프로그램 실행 속도를 높일 수 있다.

요구 페이징?

프로세스에서 필요한 페이지만 메모리에 로드하는 방식이다.

필요한 페이지를 페이지 테이블과 매핑하여 물리 메모리에 로드하고 나머지는 디스크에 저장한다.

프로그램 실행하다가 물리 메모리에 필요한 페이지가 없을 때 이를 페이지 폴트라고 한다.

페이지 폴트 발생 시 디스크에서 필요한 페이지를 스왑 인 한다. 

페이지 테이블은 페이지에 해당하는 프레임이 존재하면 v, 없거나 유효하지 않은 주소 값이면 i를 반환한다.

 

페이지 폴트 발생 시 처리과정

1. 필요한 페이지가 있는지 물리메모리에 있는지 페이지 테이블에서 확인. -> 페이지 폴트 발생. i반환

2. OS는 참조하려는 페이지의 주소 값이 유효하지 않은지 메모리에 로드되지 않았는지 확인.

3. 로드되지 않은 경우라면 디스크에서 해당 영역을 찾는다.

4. 디스크에서 해당 페이지를 스왑 인. 만약 물리 메모리에 빈 프레임이 없으면 페이지 교체 알고리즘을 호출.

(기존 로드된 페이지를 디스크로. 필요한 페이지를 물리 메모리로 로드)

5. 로드 후 v 반환.

6. 프로세스 시작. 


스레싱?

동시에 일정 수 이상의 프로그램 실행했을 때 오히려 CPU이용률이 떨어지는 상황.

가상 메모리로 다중 프로그래밍을 하면 CPU 이용률이 높아진다.

but 일정 수 이상으로 작업 시 페이지 폴트가 자주 일어난다(스왑인, 스왑 아웃 작업 반복하며 cpu 이용률이 떨어짐.)

 

스레싱 예방법?

워킹 세트를 설정한다.

워킹 세트 : 지역성을 기반으로 자주 사용하는 페이지를 저장해 두는 것.

(자주 사용하는 페이지를 물리 메모리의 프레임에 고정하여 빈번한 페이지 폴트를 방지한다.)


캐시 메모리?

CPU와 메인 메모리간에 데이터 접근 시 속도 차이를 줄여주기 위해 사용한다.

CPU에서 메인 메모리에 있는 데이터를 가져올 때 자주 사용하는 데이터는 캐시 메모리에 따로 저장한다.

어떤 데이터를 저장할지는 지역성을 바탕으로 결정한다.

지역성 : cpu가 자주 참조하는 데이터가 고르게 분포되지 않고 특정 부분에 몰려 있는 것.

 

  • 시간 지역성(time locality) : 최근 참조한 내용을 다시 참조할 가능성이 높다.
  • 공간 지역성(space locality) : 실제 참조한 주소 근처의 내용을 참조할 가능성이 높다.

캐시 메모리의 매핑 방식

  • 직접 매핑 : 메인 메모리를 일정한 크기로 나누고 각 영역을 캐시 메모리에 매핑하는 방식. 나눠진 n개의 메모리 영역이 1개의 캐시메모리에 매핑됨.
  • 연관 매핑 : 메모리 영역을 캐시 메모리에 규칙 없이 매핑하는 방식. 메모리 영역 -> 캐시 영역 적재는 간단하지만, 캐시 영역에서 필요한 메모리를 찾을땐 비효율적이다.
  • 집합 연관 매핑 : 직접/연관 매핑을 결합해 단점을 보완한 방식. 범용적으로 사용됨.