시작하기 전에
저번에 메모리 관리 전략을 살펴봤으니 가상 메모리로 넘어가 봅시다.
메모리 공간이 한정되어 있으므로 사용자는 동시에 많은 프로그램을 실행하고 싶어하며, 이러한 메모리 공간의 한계를 극복하기 위해 가상 메모리라는 개념이 등장했습니다. 이를 알아봅시다.
가상 메모리(Virtual Memory)
프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 둔 상태로 프로세스를 실행하는 방식이다. 이 방식은 프로세스 전체가 메모리에 올라오지 않아도 프로세스 실행에 문제 없다는 점에서 착안했다.
장점:
- 프로그램이 메모리 크기에 대한 제약을 덜 받을 수 있다.
- 동시에 많은 프로그램을 실행하므로 CPU 이용률과 처리율을 높일 수 있다.
- 필요한 영역만 메모리에 로드해 스와핑 횟수를 줄여서 프로그램 실행 속도를 높일 수 있다.
앞서 얘기한 페이징에 가상 메모리의 개념을 더해 요구 페이징을 사용할 수 있다. 이를 알아보자.
요구 페이징
프로세스에서 필요한 페이지만 메모리에 로드하는 방식이다.
필요한 페이지를 물리 메모리에 로드하고, 필요하지 않은 페이지는 디스크에 저장한다.
프로그램을 실행하다가 물리 메모리에 필요한 페이지가 없을 때 이를 페이지 폴트(page fault)라고 한다.
페이지 폴트가 발생하면 디스크에서 필요한 페이지를 스왑 인한다. 페이지 테이블에서 페이지에 해당하는 프레임이 존재하면 'v(valid)' 값을, 프레임이 존재하지 않거나 유효하지 않은 주소 값이면 'i(invalid)' 값을 반환한다.
따라서 페이지 폴트 발생 시 처리 과정은 다음과 같다:
- 필요한 페이지가 물리 메모리에 있는지를 페이지 테이블에서 확인한다. 페이지 폴트가 발생하면 i를 반환한다.
- i를 반환하면 OS는 참조하려는 페이지의 주소 값이 유효하지 않은지 아니면 메모리에 로드되지 않은 영역인지 판단한다.
- 필요한 페이지가 메모리에 로드되지 않은 영역이라면 디스크에서 해당 영역을 찾는다.
- 디스크에서 해당 페이지 영역을 스왑 인한다. 이때 물리 메모리에 비어 있는 프레임(free frame)이 있으면 페이지를 해당 영역에 바로 로드한다. 만약 비어 있는 프레임이 없으면 페이지 교체 알고리즘을 호출해 기존에 로드된 페이지를 디스크로 스왑 아웃한 후 새로운 페이지를 로드한다.
- 페이지 테이블에서 새로 로드한 페이지의 값을 v로 변경한다.
- 프로세스를 다시 실행한다.
그렇다면 최대한 많은 프로그램을 동시에 실행하면 CPU 이용률이 최대가 되는 걸까? 페이지 폴트와 연관해서 생각해보면 그렇지 않다. 아래서 알아보자.
스레싱(Thrashing)
- 동시에 일정 수 이상의 프로그램을 실행했을 때 오히려 CPU 이용률이 떨어지는 상황을 의미한다.
- 가상 메모리를 구현해 다중 프로그래밍을 하면 CPU 이용률이 높아진다.
- 일정 수 이상으로 다중 프로그래밍을 하면 페이지 폴트가 자주 일어난다. 따라서 스와핑을 자주 하게 되고 CPU 이용률이 떨어지는 스레싱이 발생한다.
- 스레싱을 예방하려면 워킹 세트(working set)를 설정하는 방법이 있다. 이는 지역성을 기반으로 자주 사용하는 페이지를 저장해 두는 것이다. 이렇게 하면 페이지 폴트가 빈번하게 발생하는 현상을 방지할 수 있다.
CPU는 메모리에 접근해 많은 데이터를 처리하게 된다. 이때 시간을 줄이기 위해 자주 사용하는 데이터를 임시로 캐시 메모리에 저장하는데, 이를 알아봅시다.
캐시 메모리(Cache Memory)
CPU와 메인 메모리 간에 데이터 접근 시 속도 차이를 줄이기 위해 사용한다.
CPU에서 메인 메모리에 있는 데이터를 가졍로 때 자주 사용하는 데이터는 캐시 메모리에 따로 저장한다. 이후에 해당 데이터가 필요하면 캐시 메모리에 접근하며, 이러면 메인 메모리에 접근하는 것보다 속도를 향상시킬 수 있다.
캐시 메모리에 어떤 데이터를 저장할지는 지역성을 바탕으로 결정한다.
지역성(locality)은 CPU가 자주 참조하는 데이터가 고르게 분포되지 않고 특정 부분에 몰려 있는 것을 나타낸다.
지역성은 2가지가 있다:
- 시간 지역성: 최근 참조한 내용을 다시 참조할 가능성이 높다.
- 공간 지역성: 실제 참조한 주소 근처의 내용을 참조할 가능성이 높다.
운영체제는 여기서 마무리이다.
'📖 Computer Science > 운영체제' 카테고리의 다른 글
[CS Study] 운영체제 (3) - 메모리 관리 전략 (0) | 2025.05.08 |
---|---|
[CS Study] 운영체제 (2) - 스케줄링 (0) | 2025.05.08 |