6-1. 연속 메모리 할당
- 연속 메모리 할당 연속적인 메모리 공간을 할당하는 방식.
- 스와핑
- 대기 상태가 된 프로세스나, 오랫동안 사용되지 않은 프로세스를 임시로 보조기억장치 일부 영역으로 보내고, 메모리상 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식.
- 스왑 영역 : 프로세스들이 저장되는 보조기억장치의 일부 영역.
- 스왑 인 : 프로세스가 스왑영역(보조기억장치 영역)에서 메모리로 옮겨지는 것.
- 스왑 아웃 : 프로세스가 메모리에서 스왑영역으로 옮겨지는 것.
- 메모리 할당
- 최초적합 운영체제가 메모리 내 빈 공간을 순서대로 검색하다가, 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식.
- 최적 적합 운영체제가 메모리 내 빈 공간을 모두 검색한 뒤, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식.
- 최악 적합 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식.
- 외부 단편화 프로세스가 실행/종료가 반복되면서 생기는 빈 공간에 큰 프로세스를 적재하기 어려운 상황.
- 압축(조각모음)
- 여기저기 흩어져 있는 빈 공간을 하나로 모으는 방식.
- 많은 오버헤드를 야기하며, 효율적인 방법에 대한 어려움이 있다는 단점.
6-2. 페이징을 통한 가상 메모리 관리
- 가상메모리(virtual memory)
- 실행하고자 하는 프로그램을, 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술.
- 실행하고자 하는 프로그램을, 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술.
- 페이징
- 메모리와 프로세스를 일정한 단위로 나누어, 메모리에 불연속적으로 적재하는 방법.
- 메모리를 나눈 단위는 프레임, 프로세스를 나눈 단위는 페이지.
- 페이징 시스템에서의 스왑 인/아웃은 페이지 인/아웃으로 부르기도 함.
- 페이지 테이블
- 페이징 시스템에 의해 실제 메모리에 불연속적으로 배치된 프로세스를, 논리 주소에는 연속적으로 배치되도록 이용하는 목록.
- 내부 단편화의 문제
- 페이징 시스템에서, 페이지 단위보다 작은 빈 공간이 생기는 문제.
- 페이지 크기가 너무 크면 내부 단편화의 문제도 커지고, 페이지 크기가 너무 작으면 페이지 테이블의 목록이 길어져 낭비가 발생한다.
- 페이지 테이블 베이스 레지스터 (PTBR : Page Table Base Register)
- 각 프로세스의 페이지 테이블이 적재된 주소를 저장.
- 각 프로세스의 페이지 테이블이 적재된 주소를 저장.
- TLB (Translation Lookaside Buffer)
- 페이지 테이블을 메모리 두는 경우, 메모리 접근 횟수가 2배가 됨.
- 따라서 TLB라는 페이지 테이블의 캐시 메모리를 따로 두고, 페이지 테이블의 일부 내용을 저장 (참조 지역성에 근거).
- TLB 히트 : CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있는 경우.
- TLB 미스 : CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 없는 경우. (메모리 테이블에 다시 한 번 접근)
- 페이징 시스템의 논리 주소는 기본적으로 페이지 번호와 변위(offset)로 구성.
- 페이지 테이블 엔트리 : 페이지 테이블의 각각의 row.
- 유효 비트 : 현재 해당 페이지에 접근 가능한지 여부를 반환 (1:true)
- 페이지 폴트(page fault) : CPU가 유효 비트 0인 메모리에 적재되어 있지 않은 페이지에 접근하려고 하는 경우의 예외.
- 보호 비트
- 페이지의 쓰기 가능성 여부 반환. (true:1, 0이면 읽기만 가능)
- 조금 더 복잡하게 구현 가능.
- 읽기, 쓰기, 실행 여부로 나누어 rwx 세자리로 구현
- ex) 보호비트 111은 읽기, 쓰기, 실행 모두 가능.
- 참조 비트
- CPU가 이 페이지에 접근한 적이 있는지 여부 반환. (1:true)
- 수정 비트 (더티 비트)
- 해당 페이지에 데이터를 쓴 적이 있는지의 여부를 반환. (1:true)
- 페이지가 메모리에서 사라질 때, 보조기억장치에 쓰기 작업을 해야하는지 여부를 위해 존재
- 페이징 시스템에 의해 실제 메모리에 불연속적으로 배치된 프로세스를, 논리 주소에는 연속적으로 배치되도록 이용하는 목록.
- 쓰기 시 복사
- fork 시스템 호출시 생성되는 자식 프로세스는 처음에 부모 프로세스와 같은 프레임을 가리키다가, 둘 중 어느 하나가 페이지에 쓰기 작업을 하는 경우, 해당 페이지가 별도의 공간으로 복제됨.
- fork 시스템 호출시 생성되는 자식 프로세스는 처음에 부모 프로세스와 같은 프레임을 가리키다가, 둘 중 어느 하나가 페이지에 쓰기 작업을 하는 경우, 해당 페이지가 별도의 공간으로 복제됨.
- 계층적 페이징 (hierarchical paging)
- 페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식.
- 다단계 페이지 테이블(multilevel page table) 이라고도 함.
- 논리 주소도 페이지 번호/변위 가 아닌, 단계별 페이지 번호/변위 로 바뀜.
6-3. 페이지 교체와 프레임 할당
- 요구 페이징 (demand paging)
- 프로세스를 메모리에 적재할 때, 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법.
- 요구 페이징의 기본적인 흐름
- CPU가 특정 페이지에 접근하는 명렁어를 실행.
- 유효비트가 1인 경우, CPU는 페이지가 적재된 프레임에 접근.
- 유효비트가 0인 경우, 페이지 폴트 발생. 페이지 폴트 처리 루틴은 해당 페이지로 메모리에 적재하고, 유효 비트를 1로 설정.
- 1을 반복.
- 순수 요구 페이징 (pure demand paging) 아무런 페이지도 메모리에 적재하지 않은 채, 무작정 실행하여 페이지 폴트가 계속 발생하다가, 적재가 된 이후에는 점점 페이지 폴트 발생 빈도가 떨어짐.
- 페이지 교체
- 페이지 폴트가 적게 일어나는 페이지 교체 알고리즘이 효율적.
- 페이지 참조열 (page reference string)
- 연속된 페이지를 생략한 CPU가 참조한 페이지의 참조열.
- 중복된 페이지를 참조하는 것은 페이지 폴트를 발생시키지 않으므로 제외.
- FIFO 페이지 교체 알고리즘 (FIFO Page Replacement Algorithm)
- 가장 먼저 참조한 페이지부터 쫓아내는 방식
- 2차 기회 페이지 교체 알고리즘 (second chance page replacement algorithm)
- 가장 오래 머물렀던 페이지의 참조 비트가 1인 경우, 참조 비트를 0으로 만들고 참조열의 맨 뒤로 보냄 (=적재 시간을 현재 시간으로 설정)
- 만약 가장 오래 머물렀던 페이지의 참조 비트가 0이라면, 사용도 안하면서 가장 오래 머물렀던 페이지가 되므로 쫓아낸다.
- 최적 페이지 교체 알고리즘
- 앞으로 오랫동안 사용되지 않을 페이지를 내보내는 알고리즘.
- 이론상 페이지 폴트 발생빈도가 가장 낮지만, 결과론이지 현실에서 구현하기 쉽지 않아 기준점으로 사용하는 경우가 많음.
- LRU 페이지 교체 알고리즘 (Least Recently Used Page Replacement Algorithm)
- 오랫동안 사용되지 ‘않은’ 페이지를 교체하는 알고리즘.
- 그 외에도 다양한 페이지 교체 알고리즘이 존재하므로, 암기보다는 이해 위주로 학습.
- 스래싱(thrashing)
- 프로세스가 실제 실행되는 시간보다, 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제.
- 멀티프로그래밍의 정도 (degree of multiprogramming)
- 메모리에서 동시에 실행되는 프로세스의 수
- 스레싱의 근본원인 : 각 프로세스가 필요로 하는 최소한의 프로세스 수가 보장되지 않음.
- 프레임 할당 방식
- 균등 할당 : 각 프로세스 수에 같은 수의 프레임을 할당.
- 비례 할당 : 프로세스별 크기에 비례하여 프레임을 할당.
- 균등 할당과 비례할당 방식은 프로세스 실행과정을 고려하지 않고, 단순히 프로세스의 크기와 물리 메모리의 크기만을 고려한 방식이라는 점에서 정적 할당 방식이라고도 함.
- 작업 집합 모델(working set model)
- 프로세스가 일정 기간 동안 참조한 페이지 집합을 기억하여, 빈번한 페이지 교체를 방지.
- 페이지 폴트 빈도(Page-Fault Frequency)를 기반으로 한 프레임 할당 방식
- 페이지 폴트율이 너무 높으면 프로세스가 너무 적은 프레임을 갖고 있다고 인식하여 프레임을 더 할당하고, 반대의 경우도 마찬가지로 적용하는 방식.
- 기준이 되는 적정 페이지 폴트율의 상한선과 하한성을 정한다.
참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)
'CS지식 > 운영체제' 카테고리의 다른 글
| 운영체제 Ch.7 파일 시스템 (1) | 2023.09.05 |
|---|---|
| 운영체제 Ch.5 교착 (0) | 2023.01.30 |
| 운영체제 Ch.4 동기화 (0) | 2023.01.29 |
| 운영체제 Ch.3 CPU 스케쥴링 (0) | 2023.01.28 |
| 운영체제 Ch.2 프로세스와 스레드 (0) | 2023.01.20 |