스와핑(swapping)
프로세스를 보조기억장치의 스왑영역으로 쫒아내고 당장 필요한 프로세스를 적재하는 메모리 관리 기법으로 프로세스의 전체 크기가 메모리보다 큰 상황에서도 프로세스를 동시에 실행시킬 수 있다는 장점이 있다.
스왑 아웃(swap-out)
프로세스를 보조기억장치 스왑영역으로 내쫒는 것
스왑 인(swap-in)
스왑 아웃된 프로세스를 메모리에 적재하는 것
스왑 영역
스왑 아웃된 프로세스가 적재되는 보조기억장치 영역
연속 메모리 할당
- 프로세스를 메모리에 연속적으로 배치하는 방식
- 연속 메모리 할당 방식은 외부 단편화라고하는 용량 낭비의 문제를 야기할 수 있다.
- 외부 단편화 : 프로세스들이 실행되고 종료되고 반복하면서 빈 공간이 생기는 메모리 낭비 현상. 해결방법으로 페이징이 있다
페이징
- 물리 메모리를 프레임(frame)이라는 일정한 크기로 나누고 프로세스를 페이지(page)라는 일정한 크기로 나눈 뒤 페이지를 프레임에 매핑하는 메모리 관리 방식
- 페이지 인 : 페이지를 보조기억장치의 스왑 인 하는 것
- 페이지 아웃 : 페이지를 보조기억장치의 스왑 아웃하는 것
가상 메모리(virtual memory)
- 프로세스의 일부만을 적재하여 실제 물리 메모리보다 큰 프로세스를 실행하는 기술
- 페이징은 현대 운영체제에서 가장 대중적으로 사용되는 가상 메모리 관리 기법
- 페이징은 페이지라는 단위의 동일한 크기로 자르는 기법이라면
세그멘 테이션 기법은 프로세스를 사용자영역의 크기, 세그먼트라는 함수 등의 유 의미한 단위로 나누는 기법으로 단위가 동일하지 않기 때문에 외부 단편화가 생길 수 있다.
페이징을 이용하면 내부 단편화가 생길 수 있다.
내부 단편화 : 마지막 페이지에 할당할 때 프로세스 크기보다 페이지크기가 커서 프로세스 내부에서 일어나는 메모리 낭비 현상
⭐⭐
CPU입장에서 페이지 테이블이 없다면 불 연속적으로 프레임에 페이지가 할당되어 있을 때, 페이지가 어디 프레임에 적재되어있는지 알 수 없다. 페이지 테이블을 이용하면 물리 메모리 내 불 연속적으로 배치되어있는 페이지에도 CPU가 접근이 가능하다.
페이지 테이블
- 프레임과 페이지의 매핑 정보를 담고 있는 표 형태의 데이터
- 프로세스마다 페이지 테이블을 가지고 있다.
페이지 테이블 베이스 레지스터(PTBR)
- 각 프로세스의 페이지 테이블 위치를 가르키는 레지스터
- PCB에 저장되있는 메모리정보에 포함된다.
TLB(Translation Look-aside Buffer)
- 페이지 테이블의 일부 메모리를 캐시 메모리로 가져와서 좀 더 빠르게 페이지 테이블에 접근하기 위한 용도이다.
- 캐시 메모리에 원하는 데이터가 있다면 캐시 히트
- 캐시 메모리에 원하는 데이터가 없다면 캐시 미스로 어쩔 수 없이 페이지 테이블에 접근한다.
페이지 테이블 내 정보 : 유효비트(valid bit)
접근하려는 페이지가 보조기억장치에 적재 되있으면(페이지 아웃 되있으면) 0
접근하려는 페이지가 메모리에 적재 되있으면 1
현재 메모리에 적재되있지 않은 페이지에 접근하려면, 즉 접근하려면 페이지가 보조기억장치에 있는 경우 ⭐페이지 폴트가 발생한다.
페이지 폴트는 인터럽트의 한 일종이로 페이지 폴트가 발생 하면
- 작업내역 백업
- 페이지 폴트 루틴 실행 - 접근하려는 페이지 적재
- 유효 비트 1로 변경
- 접근하려는 페이지로 접근
페이지 테이블 내 정보 : 보호 비트(protection bit)
접근하려는 페이지의 권한을 나타낸다.
페이지 테이블 내 정보 : 참조 비트(reference bit)
접근한적 있는 페이지인지를 나타낸다.
페이지 테이블 내 정보 : 수정 비트(modifyt bit / dirty bit)
쓰기 작업을 한 적 있는 페이지인지를 나타낸다.
수정비트가 있는 이유는 변경이 되었다면 보조기억장치에 알려주기 위해서다.
계층적 페이징
페이징 테이블을 페이징 하는 것으로 페이지 테이블 크기를 줄이기 위해서 사용하며 가장 위에 있는 페이징 테이블은 메모리에 적재가 되어 있어야 한다.
'CS > 운영체제' 카테고리의 다른 글
[OS] 파일과 디렉터리 (0) | 2023.09.11 |
---|---|
[OS] 요구 페이징, 스래싱, 페이지 교체 알고리즘 (0) | 2023.09.10 |
[OS] 교착상태와 해결 방법 (0) | 2023.09.10 |
[OS] 조건 변수와 모니터 (0) | 2023.09.09 |
[OS] 뮤텍스 락과 세마포어 (0) | 2023.09.09 |
댓글