1.가상메모리(virtual memory)
1)정의 및 개요
-프로세스를 메모리에 연속적으로 할당하는 방식은 외부단편화와 물리메모리보다 큰 프로세스를
실행할 수 없는 단점이 있다.
-가상메모리란 실행하고자 하는 프로그램 일부만 메모리에 적재하여 실제 물리 메모리 크기보다
더 큰 프로세스를 실행할 수 있게 하는 기술이다.
2.페이징(paging)
1)정의 및 개요
-외부 단편화가 생기는 이유는 연속적인 메모리 할당이다.
-메모리와 프로세스를 일정한 단위로 잘라 불연속적인 할당을 할 수 있다면 외부단편화가 발생하지 않는다.
-프로세스의 논리 주소 공간을 페이지(page),메모리 물리 주소공간을 프레임(frame)으로 잘라
관리하는 기법이 페이징이다.
2)페이징 인, 페이징 아웃
-페이징에서도 스왑핑을 사용할 수 있다.
-페이지 단위로 보조기억장치로 스왑인 되는 것을 페이징 인(page in).
-페이지 단위로 보조기억장치에서 스왑 아웃 되는 것을 페이지 아웃(page out)이라 한다.
3.페이지 테이블(page table)
1)정의 및 개요
-메모리가 불연속적으로 배치되어 있다면 CPU입장에선 어떤 곳에 데이터가 있는지 알기 어려워
순차적으로 실행하기 어렵다는 단점이 있다.
-페이지 테이블은 이러한 단점을 극복하기 위해 사용하는 방법으로 페이지와 프레임에 번호를 달아
CPU가 번호를 보고 다음 프레임으로 찾을 수 있게 한다.
-프로세스마다 각자의 페이지 테이블을 가지고 있고 메모리에 적재된다.
-CPU내의 페이지 테이블 베이스 레지스터(PTBR:page table base register)이
각 프로세스의 페이지 테이블이 적재된 주소를 가리킨다.
2)TLB(Translation Lookaside Buffer)
-페이지 테이블을 메모리에 두면 메모리의 접근 시간이 배로 늘어나는 단점이 있다.
-메모리에 있는 페이지 테이블을 보기 위해 한번, 프레임에 접근하기 위해 한번.
-이와 같은 문제를 해결하기 위해 CPU곁에 TLB라는 페이지 테이블의 캐시메모리를 둔다.
-최근에 사용된 페이지 테이블을 저장한다.
-TLB에서 저장된 값을 불러오는 것을 TLB히트라고 불러오지 못하고 메모리에서 꺼내오는 것을
TLB 미스라고 한다.
3.페이징에서의 주소변환
-페이지와 프레임은 하나 이상의 주소를 포함한다. 그렇기에 특정 주소에 접근하려면 두 가지
정보가 필요하다.
-페이징 시스템은 모든 논리 주소가 페이지 번호(page number)와 변위(offect)로 구성된다.
-페이지 번호는 접근하고자 하는 페이지의 번호 값이며
변위는 접근하려는 주소가 프레임의 시작 번지부터 얼만큼 떨어져 있는지 알기 위한 정보이다.
4.페이지 테이블 엔트리(Page Table Entry)
1)정의
-페이지 테이블의 각각의 행.
-페이지 테이블 엔트리에 담기는 중요한 정보 중 유효비트,보호비트,참조비트,수정비트가 있다.
2)유효 비트(vaild bit)
-현재 페이지에 접근 가능한지 여부를 담는 비트.
-모든 페이지가 메모리에 존재하지 않고 스왑영역에 있는 경우가 많다.
-현재 페이지가 메모리에 적재되어 있는지 보조기억장치에 적재되어 있는 여부를 알려준다.
-만약 유효비트가 0인 메모리에 접근하려하면 페이지 폴트(page fault)라는 예외가 발생한다.
*페이지처리 과정
3)보호 비트(protection bit)
-페이지의 보호를 위한 비트이다.
-보호비트를 통해 읽고 쓰기가 모두 가능한지 읽기만 가능한지 나타낸다.
-보호비트는 읽기(read),쓰기(write),실행(excute) 여부를 나타내는 3개의 비트(r,w,x)로 구현할 수 있다.
4)참조비트(reference bit)
- CPU가 어떤 페이지에 접근한 적이 있는지 여부를 나타낸다.
-읽거나 쓴 페이지는 1로 적재된 이후 한번도 읽거나 쓴 적이 없다면 0으로 나타낸다.
5)수정 비트(modified bit)
-페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부를 알려준다.
-더티 비트(dirty bit)라고도 불리며 변경된 적이 있으면 1 없으면 0이다.
-수정 비트는 페이지가 메모리에서 사라질 때 보조기억장치에서 쓰기작업을 해야하는지 여부를
판달할 때 쓰인다.
5.페이징의 이점
1)쓰기 및 복사(copy on write)
-멀티 프로세서에서 부모 프로세스를 복제해 자식 프로세스를 만드는 과정(fork)에서
자식 프로세스의 데이터는 부모 프로세스와 다른 별도의 메모리공간에 생성된다.
-각 프로세스의 페이지 테이블은 자신의 고유한 페이지가 할당된 프레임을 가리킨다.
-하지만 이러한 작업은 불필요한 생성 및 메모리 낭비를 초래한다.
-쓰기 및 복사 에서는 각 페이지 테이블이 동일한 프레임을 가리키게 하되 한 쪽이 쓰기 작업을 하게되면
별도의 공간에 복사하는 것으로 메모리 절약과 프로세스 생성시간을 줄일 수 있다.
2)계층적 페이징(hierarchical paging)
-페이지 테이블의 크기는 꽤 많은 양을 가지는데 프로세스가 커지는 만큼 증가한다.
-모든 페이지 테이블 엔트리를 메모리에 두는 것은 매우 비효율적이다.
-페이징 테이블을 페이징하여 여러 단계의 페이지를 두고 바깥쪽에 페이징 테이블을 생성하여
잘린 페이징을 가리키게 하는 방법이다.
-페이징 된 페이지 테이블을 보조기억장치 등에 적재하여 해당 페이지테이블을 참조해야 할 때가
생기면 메모리에 적재하는 방식으로 메모리낭비를 줄인다.
-계층적 페이징 기법을 사용하면 페이지의 형태도 달라져 페이지번호가 바깥쪽 페이지 번호와 안쪽 페이지
번호로 나눠 진다.
-바깥 쪽 페이지 번호는 CPU와 근접한 곳에 위치한 페이지 테이블 엔트리를 가리키고
-안쪽 페이지 번호는 첫번째 페이지 테이블에 위치한 두번째 페이지 테이블를 가리킨다.
-이러한 계층적 페이징은 세개나 네개 그 이상으로도 구성될 수 있다.
'컴퓨터 공학 > 혼자 공부하는 컴퓨터 구조 +운영체제' 카테고리의 다른 글
33.파일과 디렉토리 (0) | 2023.08.08 |
---|---|
32.페이지 교체와 프레임 할당 (0) | 2023.08.07 |
29.교착 상태 해결방법 (0) | 2023.07.30 |
28.교착상태 (0) | 2023.07.30 |
27.동기화 기법 (0) | 2023.07.27 |