본문 바로가기

TIL (Today I Learned)

10주차 키워드 정리

728x90

 

 

 

  가상 메모리 : 실제 하드웨어보다 소프트웨어의 크기가 더 커도 운용이 가능하게 만들어주는 메모리 기법. 어플리케이션이 실행될 때, 실행에 당장 필요한 부분만 메인 메모리에 적재되고 나머지는 보조 기억장치(디스크)에 남아있는다. 가상 메모리 구현을 위해서는 MMU가 있어야 한다.

 

  페이지 테이블 : 메모리를 적재하는 단위인 페이지, 이 페이지를 관리하는 테이블이다. 각 페이지의 가상 주소와 실제 적재되어 있는 물리 주소가 매핑되어 있다.

 

  TLB (translation lookaside buffer) : 페이지 테이블에 접근하는 횟수를 줄여 주소 변환 시간을 단축한다. TLB는 적은 엔트리만 가질 수 있지만, 그렇기에 연산 속도가 빠르다. (내가 보기엔 접근 횟수는 TLB가 있으나 없으나 비슷한거 같은데 연산 속도가 빨라서 사용하나보다)

 

  페이지 폴트 : 페이지 테이블에 접근했을 때, valid bit가 0이면 물리 메모리에 적재되어 있지 않다는 것이고, 페이지 폴트가 발생한다. 즉, 물리 메모리에 적재되지 않은 메모리에 접근했을 때 발생한다. 

페이지 폴트 발생 -> 가상메모리를 토대로 물리메모리 주소 계산 -> 디스크에서 메모리 가져와 물리메모리에 적재

 

  Lazy Loading : 늦은 로딩. 당장 사용하지 않을 메모리는 적재하지 않는다. 실제로 적재되는 순간은 데이터에 접근하는 순간이다. 웹, 게임 등에서 많이 사용하고, 운영체제에서는 메모리 관리할 때 사용한다.

 

  페이지 할당 정책 : https://stonebig.tistory.com/31 이 블로그 참고하시고 퀴즈 잘 보시길

 

  Anonymous Page | File-Backed Page : 익명 페이지. 반대로는 File-Backed Page가 있다. 익명 페이지는 파일에서 데이터를 가져오는 파일백-페이지가 아닌 다른 페이지들을 말한다. 디스크에 저장된 파일에서 데이터를 읽어오는 것이 아니라, 동적으로 메모리를 할당 받은 페이지라고 볼 수 있다. 메모리 스택면에서 보면 코드, 데이터 등 이미 정해진 부분들은 filebacked / 이외의 스택이나 힙, bss 등의 영역은 거의 anonymous라고 볼 수 있겠다. 

 

  Swap Disk : 물리 메모리에 더 적재할 공간이 없을 때, 물리 페이지(프레임) 중 하나(또는 그 이상)를 스왑 디스크로 내보낸다. 스왑 디스크를 이용해 프로세스를 운용하면서 필요한 메모리 swap in/out을 더 빠르게 진행할 수 있다. 스왑 디스크는 주로 보조기억장치(디스크) 안에 존재한다.

 

  Direct Memory Access : 디스크에서 메모리로 데이터를 가져오는 과정을 CPU가 다 작업하거나 기다리고 있으면 굉장한 자원 낭비가 된다. 이를 방지하기 위해 DMA가 CPU 대신 메모리를 적재하고, 작업이 완료된 후에 CPU에게 완료 시그널을 보낸다. DMA를 이용해 CPU가 더 많은 작업을 할 수 있어 효율적이다.

 

 

 

 

 

퀴즈 틀린 기념

 

  스레싱(Thrashing)이란?

 

페이지 폴트 발생 비율이 증가하여 CPU 이용률이 급격히 감소하는 현상이다.

프로세스를 처리하는 시간보다 페이지를 교체하는 시간이 더 길어져 CPU를 이용하는 시간이 줄어드는 것이다.

 

운영체제는 CPU 이용율이 감소하면 다중 프로그래밍의 정도를 높혀 더 많은 프로세스를 사용하려 하는데, 사용하는 프로세스가 많아지면 한 프로세스 당 사용할 수 있는 메모리 프레임의 수가 적어지고, 적은 프레임을 할당받은 프로세스들은 페이지 부재가 자주 발생해 페이지 교체가 빈번하게 일어나게 된다. 결국 CPU의 이용율을 더욱 낮추는 악순환이 일어난다.

 

  해결 방법

 

1. Working set

지역성의 원리를 이용하여 지역성 집합이 메모리에 동시에 올라갈 수 있게 보장하는 기법

 

2. Page Fault Frequency (페이지 부재 빈도)

프로세스의 페이지 부재 빈도를 주기적으로 조사하고, 이 값에 근거해 프로세스에게 할당할 메모리를 동적으로 조절하는 기법. 현재 페이지 부재와 직전 페이지 부재 사이의 시간을 관찰하여 상한 값을 초과하거나 하한 값 미만으로 내려가면 운영체제가 메모리에 올라가 있는 프로세스의 수를 조절한다. 

 

 

 

 

 

출처

[운영체제] 가상 메모리(Virtual Memory System)

TLB(Translation Lookaside Buffer

[OS] 스레싱(Thrashing)과 해결방법