요구 페이징 (Demand Paging)
목차
01. 운영체제의 개요
02. 컴퓨터의 구조와 성능 향상
03. 프로세스와 스레드
04. CPU 스케줄링
05. 프로세스 동기화
06. 교착 상태
07. 물리 메모리 관리
08. 가상 메모리의 기초
09. 가상 메모리 관리
10. 입출력 시스템과 저장장치
11. 파일 시스템
12. 네트워크와 분산 시스템
요구 페이징
프로세스의 일부만 메모리로 가져오는 경우
- 메모리를 효율적으로 관리하기 위해서
- 응답속도를 향상 시키기 위해서
- 예시로 포토샵 → 포토샵의 메인 프로그램만 올리고 필터는 사용자가 필요할때마다 메모리로 가져옴
요구 페이징
- 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것
- 페이지를 미리 가져오는 방식은 가져온 페이지를 쓰지 않을 때 메모리를 낭비함
- 따라서 요구 페이징이 메모리의 절약, 효율적 관리, 응답속도 향상 등의 효과를 볼 수 있음
요구페이징과 스왑영역
- 페이지가 스왑영역에 있는 경우는 크게 두 가지
- 요구 페이징으로 인해 처음 부터 물리 메모리에 올라가지 못한 경우
- 메모리가 꽉 찼을때
페이지 테이블 엔트리의 구성
- 페이지 번호
- 프레임 번호
- 플래그 비트
- 접근 비트 : 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트
- 변경 비트 : 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트
- 유효 비트 : 페이지가 실제 메모리 or 스왑에 있는지를 나타내는 비트
- 읽기, 쓰기, 실행 비트 : 페이지에 대한 읽기, 쓰기, 실행 권한을 나타내는 비트
유효 비트
- 가상 메모리의 페이지 테이블에는 페이지가 물리 메모리에 있는지, 스왑에 있는지 표시하기 위해 유효 비트 사용
- 0 일때 : 페이지가 메모리에 존재, 주소 필드에 물리 메모리의 프레임 번호가 저장
- 1 일때 : 페이지가 스왑 영역에 존재, 주소 필드에 스왑 영역 내 페이지의 주소가 저장
페이지 부재
- 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황
- 페이지 부재가 발생하면 프로세스가 해당 페이지를 사용할 수 있도록 스왑 영역에서 물리 메모리로 옮겨야함
페이지 부재 처리 과정
- 프로세스가 페이지 3을 요청하면 페이지 테이블의 유효비트가 1이기 때문에 페이지 부재가 발생
- 메모리 관리자는 스왑영역의 0번에 있는 페이지를 메모리의 비어있는 프레임인 5로 가져옴
- 프레임 5로 접근하여 해당 데이터를 프로세스에 넘김
페이지 교체
- 페이지 부재가 발생하면 스왑 영역에 있는 페이지를 메모리의 빈 영역에 올리고 페이지 테이블을 갱신
- 빈 프레임이 없을 때는 메모리에 있는 프레임 중 하나를 스왑 영역으로 내보낸 후에 페이지를 가져올 수 있음
페이지 교체 알고리즘
- 어떤 페이지를 스왑영역으로 내보낼지 결정하는 알고리즘
대상 페이지
- 페이지 교체 알고리즘에 의해 스왑 영역으로 보낼 페이지
메모리가 꽉 찬 상태에서 페이지 부재가 발생했을 때 조치
위 그림은 메모리가 꽉 찬 상태에서 page fault가 발생했을 때 어떤 작업이 일어나는지를 보여준다. 프로세스가 페이지 4를 요청했다고 가정하자.
- 해당 페이지의 유효 비트(valid bit)가 1이다. 즉 페이지 부재(page fault)가 발생한다.
- 메모리가 꽉 차 있는 상태이기 때문에 스왑 영역에 있는 데이터 E를 가져오기 위해 메모리의 데이터(페이지) 중 하나를 스왑 영역으로 보내야 한다. 물리 메모리의 프레임 3에 저장된 페이지를 대상 페이지(victim page)로 임의 선정하였는데 이 페이지를 스왑 영역으로 옮긴다.(스왑아웃)
- 이에 따라 대상 페이지(victim page) PTE 1의 유효 비트가 0에서 1로, 주소 필드 값이 프레임 3에서 스왑 주소 6으로 바뀐다.
- 스왑 영역 1번에 있던 페이지 E가 프레임 3으로 올라간다.(스왑인)
- 이에 따라 PTE 4의 유효 비트가 1에서 0으로, 주소 필드 값이 스왑 주소 1에서 프레임 3으로 바뀐다.
세그먼테이션 오류와 페이지 부재(page fault)는 많은 차이가 있다. 세그먼테이션 오류는 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 때 발생한다. 즉, 사용자 프로세스에 의해 발생하며 해당 프로세스를 강제 종료하여 해결한다. 반면 페이지 부재(page fault)는 해당 페이지(데이터)가 물리 메모리에 없을 때 발생하는 오류로 사용자 프로세스와 무관하다. 페이지 부재(page fault)가 발생하면 메모리 관리자는 스왑 영역에서 해당 페이지를 물리 메모리로 옮긴 후 작업을 진행한다.
세그먼테이션 오류와 페이지 부재
- 세그먼테이션 오류
→ 사용자의 프로세스가 주어진 메모리 공간을 벗어나거나 접근 권한이 없는 곳에 접근할 때 발생하며 해당 프로세스를 강제 종료
- 페이지 부재
→ 해당 페이지가 물리 메모리에 없을 때 발생하는 오류로 메모리 관리자는 스왑 영역에서 해당 페이지를 물리 메모리로 옮긴 후 작업 실행
공간 지역성 (spacial-locality)
집 바로 옆의 편의좀과 길 건너편의 편의점 중 가까이 있는 편의점에 갈 확률이 더 높다.
이와 마찬가지로 공간의 지역성(spacial locality)은 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높다는 것이다.
시간 지역성 (temporal locality)
1년 전에 산 라면보다 어제 산 라면을 먹을 확률이 더 높다. 이와 마찬가지로 시간 지역성(temporal locality)는 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 더 먼 시간에 접근한 데이터보다 사용될 확률이 높다는 것이다.
순차적 지연성(sequential locality)
순차적 지연성(sequential locality)은 여러 작업이 순서대로 진행되는 경향이 있다는 것을 의미한다.
일반적인 프로그래밍은 처음부터 마지막 순서로 진행되는 경향이 있다. 책에 따라서 순차적 지역성을 공간 지역성의 특별한 경우로 보고 지역성을 공간 지역성과 시간 지역성으로만 구분하기도 한다.
지역성의 종류
- 공간의 지역성 → 현재 위치에서 가까운 데이터에 접근할 확률이 높음
- 시간의 지역성 → 가장 가까운 시간에 접근한 데이터에 접근할 확률이 높음
- 순차적 지역성 → 여러 작업이 순서대로 진행되는 경향이 있음
'Operating System' 카테고리의 다른 글
스레싱 (0) | 2022.06.10 |
---|---|
페이지 교체 알고리즘 (0) | 2022.06.08 |
세그먼테이션-페이징 혼용기법 (0) | 2022.06.06 |
세그먼테이션 기법 (0) | 2022.06.02 |
페이징 기법 (0) | 2022.05.31 |
댓글
이 글 공유하기
다른 글
-
스레싱
스레싱
2022.06.10 -
페이지 교체 알고리즘
페이지 교체 알고리즘
2022.06.08 -
세그먼테이션-페이징 혼용기법
세그먼테이션-페이징 혼용기법
2022.06.06 -
세그먼테이션 기법
세그먼테이션 기법
2022.06.02