1. 페이징을 통한 가상 메모리 관리
- 페이징의 이점 - 쓰기 시 복사
- 외부 단편화 문제를 해결한다는 점 이외에도 페이징이 제공하는 이점은 다양한데 대표적으로 프로세스 간에 페이지를 공유할 수 있다는 점이있다.
프로세스 간 페이지를 공유하는 사례로는 공유 라이브러리 등 다양하지만, 대표적인 예시로 쓰기 시 복사가 있다. - 부모 프로세스 혹은 자식 프로세스 둘 중 하나가 페이지에 쓰기 작업을 하면 그 순간 해당 페이지가 별도의 공간으로 복제되고 각 프로세스는 자신의 고유한 페이지가 할당된 프레임을 가리키는데 이것을 쓰기 시 복사라고 하며, 이러한 쓰기 시 복사를 통해 프로세스 생성 시간을 줄이는 것은 물론 메모리 공간 절약도 가능하다.
- 외부 단편화 문제를 해결한다는 점 이외에도 페이징이 제공하는 이점은 다양한데 대표적으로 프로세스 간에 페이지를 공유할 수 있다는 점이있다.
- 계층적 페이징
- 프로세스를 이루는 모든 페이지 테이블 엔트리를 항상 메모리에 유지하지 않을 수 있는 방법
- 프로세스의 크기가 커지면 프로세스 테이블의 크기도 커지기 때문에 프로세스를 이루는 모든 페이지 테이블 엔트리를 메모리에 두는 것은 큰 메모리 낭비이다.
- 프로세스의 페이지 테이블을 여러 개의 페이지로 자르고, 바깥쪽에 페이지 테이블을 하나 더 두어 잘린 페이지 테이블의 페이지들을 가리키게 하는 방식
- 페이지 테이블들 중 몇 개는 보조기억장치에 있어도 무방하며, 그때그때 메모리에 적재하면 된다.
- CPU와 가장 가까이 위치한 페이지 테이블(Outer 페이지 테이블)은 항상 메모리에 유지해야 한다.
- 계층적 페이징을 사용하는 경우 CPU가 발생하는 논리 주소도 달라진다.
- 바깥 페이지 번호를 통해 페이지 테이블의 페이지를 찾고
- 페이지 테이블의 페이지를 통해 프레임 번호를 찾고 변위를 더함으로 물리 주소를 얻는다.
- 프로세스를 이루는 모든 페이지 테이블 엔트리를 항상 메모리에 유지하지 않을 수 있는 방법
2. 페이지 교체와 프레임 할당
- 운영체제가 수많은 페이지를 관리하는 방법
- 요구 페이징 : 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법
- 요구 페이징 시스템이 안정적으로 작동하려면 페이지 교체와 프레임 할당을 해결해야 한다.
- 페이지 교체 알고리즘 : 쫓아낼 페이지를 결정하는 방법
- 페이지 참조열 : 연속된 페이지를 생략한 페이지열
- FIFO 페이지 교체 알고리즘 : 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식(순서대로)
- 2차 기회 페이지 교체 알고리즘 : CPU가 접근한 적이 있는 페이지는 한번 더 기회를 주는 방법
- 최적 페이지 교체 알고리즘 : CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘
- LRU(Least Recently Used Page Algorithm) 페이지 교체 알고리즘 : 최근에 사용되지 않은 페이지는 앞으로도 사용되지 않을 것 이라는 알고리즘
- 순수 요구 페이징 : 아무런 페이지도 메모리에 적재하지 않은 채 실행부터 하는 기법
- 스래딩과 프레임 할당
- 스래싱 : 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
- 멀티프로그래밍의 정도 : 메모리에서 동시 실행되는 프로세스의 수
- 정적 할당 방식
- 균등 할당 : 모든 프로세스에 균등(동일)하게 프레임을 제공하는 방식
- 비례 할당 : 프로세스 크기에 따라 프레임을 배분하는 방식
- 동적 할당 방식
- 작업 집합 모델기반 프레임 할당 : 작업 집합의 크기만큼만 프레임을 할당하는 방식
- 작업 집합 : 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합
- 페이지 폴트 빈도기반 프레임 할당 : 페이지 폴트율에 상한선과 하한선을 정하고, 그 내부 범위 안에서만 프레임을 할당하는 방식
- 작업 집합 모델기반 프레임 할당 : 작업 집합의 크기만큼만 프레임을 할당하는 방식
- 스래싱 : 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
'OS' 카테고리의 다른 글
8. 파일 시스템(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.02.26 |
---|---|
6. 가상 메모리(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.20 |
5. 교착 상태 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.19 |
4. 프로세스 동기화 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.18 |
3. CPU 스케줄링 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.14 |