연속 메모리 할당
스와핑
- 메모리 상 빈 공간에 또 다른 프로세스를 적제하여 실행하는 방식
- 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일우 영역
- 스왑 아웃 : 현재 실행되지 않은 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
- 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨지는 것
메모리 할당
최초 적합
- 운영체제가 메모리 내 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방법
최적 적합
- 운영체제가 빈 공간을 모두 검색한 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방법
최악 적합
- 운영체제가 빈 공간을 모두 검색한 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방법
외부 단편화
- 프로세스들이 메모리를 사용하다가 사용이 끝나면 빈 공간들이 생기는데 그 빈 공간이 새롭게 사용할 프로세스 공간보다 작아 메모리 낭비하는 상태
- 해결 방법
- 메모리 압축
- 빈 공간들을 하나로 모으는 방법
- 하나로 모으는 동안 시스템은 작업을 중지해야 한다.
- 메모리 압축
페이징
프로세스의 논리 주소 공간을 페이지라는 일정 단위로 잘라 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가장 메모리 관리 기법
페이징 시스템에서 스왑 아웃은 페이지 아웃, 스왑 인은 페이지 인이라고 부른다.
페이지 테이블
- 페이지 번호와 프레임 번호를 짝지어 주는 표
내부 단편화
- 하나의 페이지 크기보다 작은 크기가 발생해 메모리 낭비하는 상태
페이지 테이블 베이스 레지스터(PTBR)
- 각 프로세스의 페이지 테이블이 적재된 주소를 가짐
TLB
- 메모리 접근 시간이 늘어난 문제 해결 위해 만듬
- MMU안에 TLB 캐시 메모리공간을 둚
- 페이지 테이블의 일부 내용을 저장
- 캐시 메모리이기에 최곤 사용된 페이지 위주로 가져와 저장
페이징에서의 주소 변환
- 특정 주소에 접근하려면 두개 정보가 필요함
- 어떤 페이지 혹은 프레임에 접근하고 싶은지
- 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지
페이지 테이블 엔트리
페이지 테이블의 각각의 행
유효 비트
현재 해당 페이지에 접근 가능한지 여부를 알려 줌
페이지가 메모리에 적재되어 있으면 1, 아니면 0
페이지 폴트
- 유효 비트가 0인 페이지로 접근할 때 발생
- 처리 과정
- CPU는 기존 작업 내역 백업
- 페이지 폴트 처리 루틴 실행
- 페이지 처리 루틴은 원하는 페이지를 메모리로 가져온 뒤 유효 비트를 1로 변경
- 페이지 폴트를 처리 했다면 이제 CPU는 해당 페이지에 접근 가능
보호 비트
- 페이지 보호 기능을 위해 존재하는 비트
- 해당 페이지가 읽고 쓰기가 가능한 페이지인지 식별
- 읽기만 가능하면 0 읽기와 쓰기가 모두 가능하면 1
- 세 개의 비트를 사용하면 rwx로 권한 조합을 나타낼 수 있다.
참조 비트
- CPU가 이 페이지에 접근한 적이 있는지 여부를 나타냄
- 적재 후 읽거나 쓴 페이지는 1, 아니면 0으로 유지
수정 비트(더티 비트)
- 해당 페이지에 데이터를 쓴적이 있는지 없는지 수정 여부을 알려줌
- 1이면 변경된적 있는 페이지, 0이면 읽기만 했거나 변경된 적없는 페이지
페이지 교체
요구 페이징
- 프로세스를 메모리에 적재할 때 필요한 메모리에 적재하는 기법
- 과정
- CPU가 특정 페이지에 접근하려는 명령어 실행
- 해당 페이지가 현재 메모리에 있을 경우 CPU는 페이지가 적재된 프레임에 접근
- 해당 페이지가 현재 메모리에 없을 경우 페이지 폴트 발생
- 페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재하고 유효 비트를 1로 설정
- 다시 1번 수행
순수 요구 페이징
- 페이지 폴트를 강제로 발생시켜 실행에 필요한 페이지가 어느 정도 적재시키는 기법
페이지 교체 알고리즘
FIFO 페이지 교체 알고리즘
- 먼저 메모리에 적재된 페이지를 교체하는 알고리즘
2차 기회 페이지 교체 알고리즘
- 참조 비트가 1일 경우 당장 교체하지 않고 참조 비트를 0으로 만든 후 현재 시간을 적재 시간으로 설정
최적 페이지 교체 알고리즘
- CPU에 의해 참조되는 횟수를 교려하는 알고리즘
LRU 페이지 교체 알고리즘
- 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘
- 페이지마다 마지막으로 사용한 시간을 토대로 최근에 가장 사용이 적었던 페이지를 교체
페이지 폴트가 자주 발생하는 이유
- 프로세스가 사용할 수 있는 프로세스 수가 적으면 발생
- 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제를 스래싱이라 함
프레임 할당 방식
균등 할당
- 모든 프로세스를 균등하게 프레임을 제공하는 방식
비례 할당
- 프로세스의 크기에 비례하여 프레임을 할당하는 방식
배분할 프레임을 결정하는 방식
작업 집합 모델
- 프로세스가 일정 기간 동안 참조한 페이지 집합을 기억하여 빈번한 페이지 교체를 방지
페이지 폴트 빈도
- 페이지 폴드율에 상한선과 하한선을 정하고 이 범위 안에서만 프레임을 할당하는 방식
참고) 혼자 공부하는 컴퓨터 구조+운영체제
'공부 > 컴퓨터구조, 운영체제' 카테고리의 다른 글
15장 파일 시스템 (0) | 2023.04.10 |
---|---|
13장 교착상태 (0) | 2023.04.10 |
12장 프로세스 동기화 (0) | 2023.04.10 |
11장 CPU 스케줄링 (0) | 2023.04.10 |
10장 프로세스와 스레드 (0) | 2023.03.30 |