1. 자바 플레이 그라운드 with TDD, 클린 코드
- 미학습
2. 혼자서 공부하는 컴퓨터 구조 + 운영체제
* 가상 메모리
- 정의 : 외부 단편화, 물리메모리 보다 큰 프로세스는 실행못하는 메모리 연속할당 방식을 해결하기 위한 방식
- 관리기법
구분 | 특징 |
세그먼테이션 | - 가변적인 크기(논리적 단위)인 세그먼트로 논리주소를 나누는것 - 외부단변환O, 내부단편화X |
페이징 | - 논리주소를 일정한 크기의 페이지로 나눠 메모리(프레임 == 페이지크기)에 적재하는 것 - 외부단편화X, 내부단편화O |
* 페이징
- 스와핑 ,페이지 인(스왑 인), 페이지 아웃(스왑 아웃)으로 표현되기도 한다.-> 프로세스 전체가 메모리에 적재될 필요가 없다.
- 페이지 테이블 -> 물리주소엔 불연속 배치이더라도 논리주소에선 연속배치가 될 수 있게 페이지, 프레임의 정보를 담는 이정표 역할
- 이로 인해 내부단편화 발생 -> 11크기의 프로세스를 2크기의 페이지 단위로 나누면 1이라는 크기의 내부단편화 발생
- 프로세스 페이지 테이블은 메모리에 적재 -> CPU내부의 페이지 테이블 베이스 레지스터(PTBR)에 테이블 주소 적재
- 메모리에 두번 접근 하는 것을 막기위해 TLB(Translation Lookaside Buffer)라는 페이지 테이블 캐시 메모리를 활용 ->캐시 히트와 마찬가지로 CPU에서 요청한 논리주소에 대한 페이지 번호가 TLB에 있을 경우 TLB히트(반대는 미스)라고한다.
- 페이징 주소변환 -> 모든 논리주소는 페이지 번호 + 변위로 구성
- 페이지 테이블 엔트리 -> 페이지 테이블의 행(페이지번호, 프레임 번호, 유효, 보호, 참조, 수정 비트 등으로 구성)
구성 | 특징 |
유효비트 | - 현재 페이지가 메모리 또는 보조기억장치에 적재되어 있는지 확인하는 용도(메모리=1, 반대는0) |
보호비트 | - 페이지 보호기능을 위해 존재 -> R(read),W(write),X(execute)로 각각 1일 경우 해당 기능 사용가능 |
참조비트 | - CPU가 해당 페이지에 접근한적 있는지 확인 -> 읽거나 쓰였으면 1 |
수정비트 | - 더티비트라고도 불리며 해당 페이지에 데이터를 쓴적이 있는지 확인 -> 1이면 변경된적 O - 페이지는 메모리에 적재된 상태에서 쓰였기 때문에 보조기억장치로 옮겨갈 때 추가 작업이 필요한지를 확인하기 위해 필요(데이터가 변경됐기 때문) |
- 외부단편화 문제 해결
- 쓰기 시 복사 -> fork할 때 부모프로세스와 똑같은 정보를 메모리에 적재하는 것이 아닌 같은 페이지 테이블을 통해 정보를 가지고 있다가 부모 또는 자식 프로세스에서 변경이 생길 때 해당 페이지가 별도의 공간으로 복제된다.
- 계층적 페이징 -> 페이지 테이블이 클 경우 페이지 테이블을 페이징 처리함으로써 메모리 낭비를 방지
- CPU가 특정 페이지에 접근 할 때 메모리에 적재가 안돼있으면 페이지폴트 발생
- 요구 페이징 -> 프로세스를 메모리에 적재 할 때 모든 페이지를 적재하지 않고 필요한 페이지만 적재하는 기법
- 요구 페이징을 안정적으로 유지하기 위해 페이지 교체, 프레임 할당 두가지를 해결해야한다.
* 페이지 교체
- 페이지 참조열 : CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지열
- 페이지 폴트 횟수 : 페이지 참조열을 통해 알 수 잇음
- 페이지 교체 알고리즘 -> 페이지 폴트 횟수를 줄이는 것이 목적
구분 | 특징 |
FIFO | - 가장 먼저 들어온 페이지를 교체 - 가장 먼저 들어왔지만 가장 자주 접근하게 되는 페이지를 교체하는 단점이 발생 - 2차 기회 페이지 교체 알고리즘을 통해 보완 -> 참조 비트1을 0으로 변경해 시간 계산 |
최적 페이지 교체 | - 가장 오랫동안 사용되지 않을 페이지 교체 - 현실적인 구현이 어려움(프로세스가 앞으로 메모리 어느 부분을 어떻게 참조할지 미리 알기가 어렵기 때문) - 다른 알고리즘의 비교대상으로 활용된다. |
LRU (Least Recently Used Page Replacement Algorithm) |
- 가장 오랫동안 사용되지 않은 페이지 교체 |
- 동시에 실행되는 프로세스의 수가 많이 질수록 CPU이용률이 올라가진 않는다 -> 스레싱 발생때문
- 스레싱 : 프로세스 실행시간 < 페이지 교체에 필요한 시간(페이지폴트가 되면서 추가적인 작업을 할 때)인 경우
- 스레싱의 근본적인 원인은 각 프로세스가 필요로 하는 최소한의 프레임 개수가 확보가 안됐기 때문이다.
* 프레임 할당 방식
구분 | 이름 | 특징 |
정적 할당 | 균등 할당 | - 모든 프로세스에 같은 개수의 프레임을 할당 |
비례 할당 | - 프로세스 크기에 따라 다른 개수의 프레임을 할당 - 프로세스 크기와 별개로 실행중 필요한 프레임의 개수가 다른 한계가 존재 |
|
동적 할당 | 작업 집합모델 | - 실행중인 프로세스가 일정시간 동안 참조한 페이지의 집합을 통해 프레임 개수를 할당 - 페이지 참조열, 일정시간 간격을 활용 |
페이지 폴트 빈도 | - 페이지 폴트 빈도율 ↑ -> 프레임 할당이 ↓ - 페이지 폴트 빈도율 ↓ -> 프레임 할당이 ↑ - 적정 범위에 상한선, 하한선을 둬 프레임 할당을 조절 |
3. 알고리즘
- 미학습
'TIL' 카테고리의 다른 글
TIL - 0304 (0) | 2023.03.04 |
---|---|
TIL - 0303 (0) | 2023.03.03 |
TIL - 0301 (0) | 2023.03.01 |
TIL - 0228 (0) | 2023.02.28 |
TIL - 0225 (0) | 2023.02.25 |