지난 포스팅에서
프로세스를 주기억장치에
할당하는 방법을 다루었다.
프로세스 전부를 주기억장치에 할당하면
메모리를 효율적으로 사용할 수 없다.
만약 두 가지 조건을 만족하면
필요하지 않은 블록은 보조기억장치로 보낼 수 있다.
가상메모리 기법 운용 조건
1) 프로세스의 메모리 참조는 논리주소로 이루어지고 동적으로 물리주소로 변환된다.
물리주소는 실제 블록이 메모리에 저장된 위치를 의미한다. 물리주소가 동적으로 계산되면 블록이 필요하지 않을 때 굳이 메모리에 상주하고 있을 필요가 없다.
2) 프로세스 블록은 비연속적으로 메모리에 할당된다.
비연속적 메모리 할당 기법에는 페이징 기법과 세그멘테이션 기법이 있다. 두 기법은 메모리를 연속적으로 할당하지 않기에 블록을 미리 할당하고 있을 필요가 없다. 나중에 공간이 빈 메모리 아무 곳이나 할당하면 된다.
이렇듯, 두 가지 조건을 만족하면 실메모리(주기억장치)에 모든 프로세스 블록을 할당할 필요가 없다. 필요하지 않은 블록은 보조기억장치에서 대기하는데, 이 공간을 가상메모리(Virtual Memory)라 부른다.
가상 메모리 기법의 장점
1) 많은 프로세스를 주기억장치에 유지할 수 있다.
2) 주기억장치보다 큰 프로세스를 운용할 수 있다.
가상 메모리 기법의 단점
이미 주기억장치에 상주한 프로세스 블록들을 적재집합(resident set)이라 부른다. 필요한 블록이 적재집합에 없을 수 있다. ( Memory Access Fault ) 모든 블록(페이지)을 주기억장치에 상주시키지 않기 때문이다.
메모리 폴트가 발생하면 해당 프로세스는 인터럽트되어 입출력이 완료될 때까지 대기해야한다. 가상 메모리 기법은 반복적으로 발생하는 메모리 폴트가 단점이다. 메모리 폴트가 과도하게 발생하면 프로세스 처리시간보다 프로세스 입출력시간이 더 커지는데, 이를 쓰레싱(Thrashing)이라 한다. 그러므로 가상 메모리 기법은 쓰레싱을 어떻게 줄이는지가 관건이다.
참고자료
'CS > OS' 카테고리의 다른 글
[운영체제] 페이지 크기가 미치는 영향 (0) | 2021.11.16 |
---|---|
[운영체제] TLB ( Translation Lookaside Buffer ) (0) | 2021.11.16 |
[운영체제] 메모리 분할 ( Memory Partioning ) [ 비연속 메모리 할당 ] (0) | 2021.10.29 |
[운영체제] 메모리 분할 ( Memory Partioning ) [ 연속 메모리 할당 ] (0) | 2021.10.26 |
[운영체제] 메모리 관리 요구조건 (0) | 2021.10.24 |