에러 메세지

 

remote: Invalid username or password.
fatal: Authentication failed 

 

이유

1. 토큰이 변경되어서 다시 설정이 필요한 경우

2. 생성된 토큰이 없는 경우

 

깃허브 ->  settings -> Developer settings -> personal access tokens -> Tokens(classic) 선택하여 새로운 토큰 생성

 

새로 생성할때 최대한 긴 유효기간을 선택

 

다시 작업하던 폴더로 가서

 

orgine을 삭제 후 받은 토큰을 이용하여 다시 설정

 

git remote remove origin

git remote add origin https://닉네임:토큰@github.com/repository

닉네임은 자신의 깃허브 아이디 repository 는 작업 할 레포지토리 경로 url

프로세스가 원활하게 수행되기 위해서는 일정 수준이상(최소한)의 페이지 프레임 할당이 필요

 

최소한의 프레임을 할당 받지 못한 경우 -> 스레싱(thrashing)현상 발생

  •  집중적으로 참조되는 페이지 부재율 상승 -> CPU 이용률 급격히 감소 

스레싱이 발생하는 시나리오

  • CPU 이용률이 낮아서 준비 큐가 비는 경우가 발생
    • (의미) 메모리에 올라와 있는 프로세스의 수가 너무 적어
      모든 프로세스가 I/O 작업을 함으로써 준비 큐가 비는 현상이 발생
    • CPU의 이용률이 낮다 = 일을 안한다
      -> 운영체제가 메모리에 올라가는 프로세스의 수가 적다고 판단
      -> 메모리에 프로세스를 추가
      -> 동시에 올라가 있는 프로세스의 수(multi-programing Degree: MPD)가 증가
      ->  MPD가 과도하게 많아지면
      -> 각 프로세스가 최소한의 프레임을 할당받지 못함
      -> 페이지 부재가 발생
      -> 디스크 I/O 수행
      -> 문맥교환을 통해 다른 프로세스에게 CPU 이양
      -> 다른 프로세스도 최소한의 프레임을 할당 받지 못함
      -> 페이지 부재
      -> 디스크 I/O 수행
      -> 문맥교환을 통해 다른 프로세스에게 CPU 이양
      이런 식으로 준비 큐에 있는 프로세스가 CPU를 할당 받아도 페이지 부재처리하기에 바빠짐
      이 때문에 CPU의 이용률이 낮아짐

 

MPD를 조절하면서 CPU 이용률을 높이는 방법

1) 워킹셋 알고리즘 (working-set algorithm)

  • 워킹셋 = 프로세스가 일정 시간동안 원활히 수행되기 위해 한꺼번에 메모리에 올라와있어야 하는 페이지들의 집합
  • 워킹셋이 메모리에 올라갈 수 있는 경우에만 그 프로세스에 메모리 할당
  • 불가능한 경우는 디스크로 스왑아웃
  • 한꺼번에 메모리에 올라가야 할 페이지들의 집합을 결정하는 방법
    • 워킹셋 윈도우(△) 사용 
      • 페이지가 참조된 시점 부터 △ 시간 동안은 메모리에 유지하고, 그 시간이 지나면 메모리에서 지움
      • △ 의 크기를 잘 결정하는 것이 중요
        • 너무 작으면 - 지역성 집합을 모두 수용 못할 경우 발생
        • 너무 크면 - MPD가 감소해 CPU의 이용률 낮아지는 경우 발생
  • 메모리 내에 있는 모든 프로세스에 프레임을 다 할당한 후 프레임이 남으면?
    • 스왑아웃 되었던 프로세스에게 프레임 할당

2) 페이지 부재 빈도 알고리즘 (page-fault frequency scheme)

  • 페이지 부재율을 주기적으로 조사하고 이에 따라 각 프로세스에 할당할 메모리의 양을 동적으로 조절
    • 설정한 상한 값 이상 -> 해당 프로세스에 프레임을 추가로 할당
    • 설정한 하한 값 이하 -> 해당 프로세스에 필요이상으로 프레임이 할당 된것으로 간주하여 할당된 프레임의 수 줄임
  • 메모리 내에 있는 모든 프로세스에 프레임을 다 할당한 후 프레임이 남으면?
    • 스왑아웃 되었던 프로세스에게 프레임 할당

 

전역교체

모든 페이지 프레임이 교체 대상

전체 메모리를 각 프로세스가 공유해서 사용하고 교체 알고리즘에 이용하여 할당되는 메모리 양이 가변적으로 변하는 방법

ex) LRU, LFU, 클럭등의 알고리즘을 물리적 메모리내에 존재하는 전체 페이지 프레임들을 대상으로 적용

 

 

지역교체

현재 수행 중인 프로세스에게 할당된 프레임 내에서만 교체 대상을 선정

프로세스마다  페이지 프레임을 미리 할당

ex) LRU, LFU 등의 알고리즘을 프로세스별로 독자적으로 운영

' > 운영체제와 정보기술의 원리' 카테고리의 다른 글

9장 디스크 관리 1.디스크의 구조  (1) 2023.12.26
8장 5.스레싱  (1) 2023.12.25
8장 페이지 프레임의 할당  (0) 2023.12.25
8장 2 페이지 교체  (0) 2023.12.24
8장 1. 요구 페이징  (0) 2023.12.24

페이지 프레임 할당 -> 물리적 메모리공간에 할당

 

페이징 ?

프로세스의 주소 공간을 미리 동일한 크기의 페이지 단위로 나누어 물리적 메모리의 서로 다른 위치에 페이지들을 저장하는 방식

 

할당 알고리즘 (allocation algorithm)

  • 균등 할당(equal allocation) : 페이지 프레임을 균일하게 할당
  • 비례 할당(proportional allocation) : 프로세스의 크기에 비례하게 할당
  • 우선순위 할당(priority allocation) : 우선순위에 따라 페이지 프레임을 다르게 할당

고려해야할 사항

  • 알고리즘 만으로는 페이지 참조 특성을 다 반영 못할 수 있는 경우
    • 실행 중인 프로세스가 너무 많아서 메모리 양이 과도하게 작아지는 경우 
      : 명령을 실행 할때 하나가 아니라 여러 페이지(코드, 데이터, 스택 등등) 를 동시에 참조 하기 때문
    • 반복문(loop)의 경우
      : 반복문을 구성하는 모든 프로세스를 한꺼번에 메모리에 올려놓는 것이 유리
      : 반복문을 구성하는 페이지의 수보다 적은 양의 프레임을 할당 -> 페이지 부재 발생
    • 프로세스에 필요한 최소한의 메모리양이 시간에 따라 다를 수 있는 경우 
      

' > 운영체제와 정보기술의 원리' 카테고리의 다른 글

8장 5.스레싱  (1) 2023.12.25
8장 4. 전역교체와 지역교체  (0) 2023.12.25
8장 2 페이지 교체  (0) 2023.12.24
8장 1. 요구 페이징  (0) 2023.12.24
8장 가상메모리  (1) 2023.12.23

 

페이지 교체 란

페이지 부재가 발생 하였을 때 물리적 메모리에 빈 공간이 없을 때 하나의 페이지를 스왑아웃하여 빈 공간을 확보하는 작업 

 

페이지 교체 알고리즘 

(목표) 페이지의 부재율을 최소화 -> 미래에 참조될 가능성이 가장 적은 페이지를 선택하여 스왑아웃 하는 방안을 모색

(페이지 교체의 예)

책에서 스크린샷

 

(성능) 주어긴 페이지 참조열 (page reference string)에 대해 부재율을 계산하여 평가

          (페이지 참조열 예시) 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
                               참조되는 페이지들의 번호를 시간 순서에 따라 나열
                               해당 번호의 페이지가 이미 메모리에 올라와 있으면 메모리에서 적중(hit)
                               메모리에 없는 경우 페이지 부재 발생

 

1) 최적 페이지 교체

 

빌레디의 최적 알고리즘 (Belady's opitmal algorithm) 또는 MIN, OPT 로 불림

: 페이지 중 가장 먼 미래에 참조될 페이지를 쫓아내서 페이지 부재율을 최소화하는 알고리즘

: 미래에 어떤 페이지가 어떠한 순서로 참조될지 미리 알고 있다는 전제하에 운영 -> 오프라인 알고리즘

+ 알고리즘 중에 가장 적은 페이지 부재율을 보장
+ 한 시스템에서 새로운 알고리즘 설계시의 성능평가의 기준
- 실제 시스템에서는 사용 불가 

 

(작동원리 예시)

 

페이지 부재가 7번째에 발생 -> 미래에 일어날 페이지 순서 참조 -> 4 를 스왑아웃 하고 5를 적재

 

2) 선입선출(First In First Out :FIFO) 알고리즘

 

페이지 교체 시 물리적 메모리에 가장 먼저 올라온 페이지를 우선적으로 내쫓는다.

- 비효율적인 상황이 발생 (페이지 부재 다수 발생)

메모리 공간이 늘어나도 성능은 오히려 너 나빠질수도 있다. -> FIFO의 이상 현상

 

3) LRU(Least Recently Used) 알고리즘

성능향상을 위해서는 향후 사용될 가능성이 낮은 페이지를 우선적으로 메모리에서 쫓아내는 것이 바람직

  • 메모리 참조 성향 중 중요한 한가지 성질 => 시간지역성(temporal locality)
    • 최근에 참조된 페이지가 가까운 미래에 다시 참조될 가능성이 높은 성질

LRU 알고리즘은 시간지역성을 이용하여 마지막 참조 시점이 가장 오래된 페이지를 쫓아낸다.

 

4) LFU (Least Frequently Used) 알고리즘

메모리에있는 페이지 중 참조 횟수가 가장 적었던 페이지를 쫓아내는 알고리즘

  • Incache-LFU : 메모리에 올라온 후 부터 참조 횟수를 카운트 
  • Perfect-LFU : 메모리에 올라온 이력에 관계없이 해당 페이지가 과거에 참조 된 총 횟수 카운트
    + 페이지 참조 횟수를 정확히 반영
    - 모든 페이지의 참조 기록을 보관하여야 하므로 오버헤드 발생

5) 클럭 알고리즘(clock algorithm) / 2차 기회 알고리즘

NUR(Not Used Recently) 또는 NRU(NOT Recently Used) 알고리즘

하드웨어적인 지원을 통해 알고리즘의 운영에 시간적인 오버헤드를 줄인 방식

  • 오랫동안 참조되지 않은 페이지 중 하나를 교체
  • 하드웨어적인 지원으로 동작하여 LRU 보다 페이지의 관리가 빠르고 효율적
  • 시곗바늘이 한 바퀴 도는 동안 다시 참조 되지 않은 페이지를 교체
  • 페이지 부재율을 줄이도록 설계
  • 작동원리
    • 프레임내의 페이지가 참조 되면 하드웨어가 자동으로 1로 셋팅
    • 시곗바늘이 참조비트가 1인 페이지를 지나면 0으로 셋팅
    • 시곗바늘이 참조비트가 0인 페이지를 지나면 교체 대상 페이지

 

 

 

 

 

 

 

+ Recent posts