ahlight
개발 저장소
ahlight
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • Java (7)
    • Spring (5)
    • JPA (2)
    • JavaScript (0)
    • Computer Science (12)
      • 디자인패턴, 프로그래밍 패러다임 (1)
      • 네트워크 (4)
      • 운영체제 (4)
      • 데이터베이스 (3)
      • 자료구조 (0)
    • 알고리즘 (1)
    • 프로그래머스 (13)
    • 백준 (94)
    • 서평 (3)
    • 회고 (1)
    • TIL (58)
    • 기타 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • TDD
  • 라즈베리파이4 #홈서버 #포트포워딩 #dhcp
  • 클린코드
  • 넥스트스텝
  • Java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ahlight

개발 저장소

TIL - 0302
TIL

TIL - 0302

2023. 3. 3. 19:03

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)
- 가장 오랫동안 사용되지 않은 페이지 교체

 

출처 : https://velog.io/@oeckikek/%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC

  • 동시에 실행되는 프로세스의 수가 많이 질수록 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
    'TIL' 카테고리의 다른 글
    • TIL - 0304
    • TIL - 0303
    • TIL - 0301
    • TIL - 0228
    ahlight
    ahlight

    티스토리툴바