#####. 가상메모리
###. 가상메모리
#. 가상메모리는 실제 메모리(주기억장치)의 용량보다 더 많은 양의 기억공간이 필요한 프로그램을 실행할 수 있게하는 중요한 개념.
#. 이러한 동작이 가능하기 위해서는 가상의 커다란 프로세스 기억공간을 정해진 방법으로 분할하고, 그 중 현재 필요한 부분만 메모리에 적재되도록 해야한다.
#. 이를 위해 프로세스에 의해 참조되는 주소를 실제 메모리에서 사용하는 주소와 분리한다.
#. 필요한 영역을 적절한 시점에 메모리에 적재한다.
###. 가상 메모리의 개념(virtual memory)
#. 컴퓨터 시스템의 메모리 크기보다 큰 기억 공간이 필요한 프로세스를 실행할 수 있게하는 방법
#. 핵심은 실행 중인 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분히라는 것!
#. 전체 프로그램 및 데이터 중 현재 필요한 부분만 메모리에 적재함으로써 프로세스의 수행이 가능하게 한다.
#. 이때 실행 프로세스가 참조하는 주소를 가상주소 (virtual address)라 하고 실제 메모리에 사용하는 주소를 실주소(real address)또는 물리적 주소(physical address)라고 한다.
#. 실행 프로세스가 참조하는 가상주소의 범위를 프로세스의 가상주소 공간(virtual address space) V라고 하며, 특정 컴퓨터 시스템에서 사용 가능한 실주소의 범위를 실주소 공간(real address space)R 이라 한다.
#. 프로세스는 오직 가상주소만을 참조하지만, 그들은 실제로 메모리에서 실행되어야 하므로 프로세스가 실행되면 가상주소는 실주소로 변환 되어야 하는데, 이 과정을 '사상 (mapping)'이라 하며 변환 함수로 표시 됨
#. 매핑 작업이 원활하지 않으면 속도가 느리기 때문에 두 주소를 연관시키는 많은 방법이 개발됨
#. 가상주소 => 실주소 변환 과정을 동적 주소 변환(Dynamic Address Translation : DAT)라고 한다.
###. 블록 단위 주소 변환
#. 동적 주소 변환 방법은 두 주소가 어디 위치하는지를 나타내는 주소변환 사상표 (mapping table)을 유지한다.
#. 매핑 테이블은 각 항목 별로 바이트나 워드 단위로 수행되기 때문에 메모리 공간이 많이 필요하게 된다.
#. 그래서 항목 대신 블록 단위로 주소 변환이 이루어지는 블록 매핑 시스템을 운영한다.
#. 블록의 크기가 동일할 떄 그 블록을 페이지(page)라고 부르고 이런 가상 메모리 구성을 페이징(paging)기법이라고 한다. 세그먼트 (segment)는 그기가 다를 수 있는 블록으로, 이런 가상메모리 구성을 세그먼테이션(segmentation)기법이라 한다.
###. 페이징 기법
#. 페이징 기법은 가상 메모리를 고정된 크기의 블록, 즉 페이지 단위로 나누어 관리하는 기법
#. 가상메모리에 같은 크기의 메모리 값을 주고 참조하도록 한다. 페이징 기법 => 페이징 프레임을 이용하는 것
- 페이징 프레임 (paging frame) : 메모리가 가상메모리의 매핑 정보를 가져오기 위한 틀
#. 페이지 매핑 테이블을 직접 이용해 동적 주소를 변환하는 것을 직접사상이라 한다.
#. 연관사상은 정보를 연관메모리에 저장한 연관 매핑테이블을 이용해 동적 주소를 변환하는 방식이다.
#. 연관검색을 수행한 후 실패하면 직접검색을 한다. 연관/직접 사상에 의한 동적 주소 변환이라 한다.
#. 페이징 기법에서 프로세스 사이의 메모리 보호는 페이지 단위로 이루어진다. 메모리도 동일 크기의 페이지 프레임으로 나뉘어 사용되므로 외부 단편화가 발생하지 않는다. 대신 페이지 내에 내부 단편화 발생 가능
###. 세그먼테이션 기법
#. 모듈화에 따른 논리적 의미에 부합하는 다양한 크기의 블록, = 세그먼트(segment) 단위로 가상 메모리를 나누어 관리하는 기법
#. 세그먼테이션 기법에서 가상주소는 순서쌍으로 나타내는데, 세그먼트 번호, 세그먼트 시작위치로 나타내고, 세그먼트 번호는 세그먼트의 시작 위치로부터의 변위 이다.
#. 세그먼테이션 기법은 최소, 최적 적합의 방법과 동일하다.
###. 페이징/ 세그먼테이션 혼용기법
#. 세그먼테이션 기법의 논리적 장점과 페이징 기법의 메모리 관리 측면의 장점을 활용한 기법
#. 각 세그먼트를 다시 페이지 단위로 분할하고 메모리도 페이지 프레임으로 분할하여 하나의 페이지지만 페이지 프레임에 적재하는 방식
###. 메모리 호출 기법
#. 메모리 호출 기법은 어느 시점에 페이지 또는 세그먼트를 메모리에 적재할 것인가를 결정하는 기법
#. 페이징 기법 : 요구 페이지 호출기법, 예상 페이지 호출기법
#. 요구페이지 호출 기법
- demand page fetch strategy는 한 프로세스의 페이지 요구가 있을 때 요구 페이지를 메모리에 적재하는 방법
- 실행중인 프로세스에 의해 명백히 참조 될 때 보조 기억장치에서 메모리로 옮겨짐
- 메모리에 옮겨진 페이지는 모두 프로세스에 의해 실제로 참조된 것임을 확신 : 오버헤드 최소화
#. 예상 페이지 호출 기법
- prepaging fetch strategy는 현 시점에서 액세스 되고 있지 않지만 사용될 것으로 예상되는 페이지를 미리 메모리에 옮겨 놓는 방법
- 예상이 적중하면 필요한 시점에 단절없이 실행되어 시간이 감소
- 적중하지 않으면 적재에 따른 시간과 메모리 낭비
- 페이지 부재 (page fault)를 최소화
'IT' 카테고리의 다른 글
CNCF란?? 오픈 허브?? 알기 쉽게 풀어 쓴 개념 (0) | 2023.07.19 |
---|---|
도커 개요 (0) | 2023.07.18 |
프로세스 개요 (0) | 2023.07.18 |
리눅스 쉘 개요 및 이해 (0) | 2023.07.18 |
블로그를 열면서 (0) | 2023.07.17 |