공부기록
코타쿠
« 2024/11 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
관리 메뉴
공부기록
가상 메모리의 개요 본문
CS/OS
가상 메모리의 개요
코타쿠
2021. 5. 17. 17:50
- 단순 페이징, 세그멘테이션의 특징 (vs 고정 분할 혹은 가변 분할)
- 프로세스의 모든 메모리 참조는 논리주소
- 이전과 다른 메모리 위치에 적재될 능력이 있다.
- 한 프로세스의 주소공간은 여러 블록(페이지, 세그멘트)로 분할
- 이 블록들은 연속되어 배치될 필요가 없다. 테이블을 통해 찾아가면 되니까
- 위의 두 특성 때문에 프로세스의 모든 페이지, 세그먼트가 주기억 장치에 적재되어 있을 필요가 없다.
- 즉 블록들을 필요에 따라 스와핑 할 수 있다.
- 다음에 수행할 명령을 포함한 블록과, 그 명령에 의해 참조될 데이터가 포함된 블록이 주 기억장치에 있다면, 프로세스의 진행이 가능하다.
- 프로세스의 블록이 반입되는 과정
- OS는 초기에 수행될 코드와 참조될 데이터가 포함되는 몇개의 블록만 주기억장치로 반입
- 적재 집합 : 현재 주메모리에 올려져 있는 프로세스의 블록
- 처리기는 페이지, 세그먼트 테이블을 사용하여 프로세스의 참조 주소가 적재집합에 포함되어 있는지를 확인
- 만약 주기억장치에 적재되지 않은 논리주소가 참조되면, 처리기는 메모리 참조 오류 인터럽트를 발생
- OS는 인터럽트 당한 프로세스를 블록하고 제어를 받음
- 이 블록당한 프로세스의 수행을 재개하기 위해 아까 적재되지 못한 논리 주소를 포함한 블록을 주기억 장치로 적재
- 이를 위해 운영체제는 DISK I/O를 요청
- 처리기는 다른 프로세스에게 CPU를 할당
- I/O가 끝나면 입출력 인터럽트가 발생하고, 이를 통해 제어를 돌려받은 운영체제는 이전에 블록된 프로세스를 준비상태로 전환
- 프로세스의 일부 블록을 적재하고 수행하는 목적
- 보다 많은 프로세스를 주기억장치에 유지
- 주기억 장치보다 큰 프로세스를 수행 - 가상 메모리를 사용하는 이유
- 이 전략을 사용하지 않으면, 프로그래머가 메모리가 얼마나 큰지 알아야하고, 프로그램을 여러 블록으로 분할하여 구성할 수 있는 방안을 찾아야 한다.
- 지역성 (Locality)와 가상메모리 (Virtual Memory)
- 쓰레싱 (Thrashing)
- 특정 블럭시 사용되기 직전에 반출되었다면, 거의 곧바로 해당 블럭을 다시 반입
- 이러한 일이 과도하게 발생되어, 시스템은 명령어 수행이 아니라 블록 교체에 대부분의 시간을 소비하게 되는 상황
- 쓰레싱을 피하기 위해 최근의 이력을 근거로 미래에 사용될 가능성이 적은 블록을 추정한다.
- 지역성의 원리 (Principle of Locality)
- 프로세스 내에서 명령어와 데이터에 대한 참조는 특정 부분에 집중되어 있다.
- 짧은 시간동안 블록 몇 개 만이 필요할 것이라는 추정이 가능
- 프로세스의 생존기간 동안, 참조가 페이지들의 부분집합에 한정되어 있음
- 지역성의 원리는 모든 블록이 다 반입 될 필요가 없다는 것을 보여주기에 가상 메모리 시스템이 효과적임을 시사한다.
- 가상메모리가 실용적이기 위한 두 가지 필요조건
- 페이징, 세그먼테이션을 위한 하드웨어 지원
- 보조기억장치와 주기억장치 사이의 페이지 (혹은 세그먼트) 이동을 관리할 SW를 OS가 제공