티스토리 뷰

SoftWare/OS

OS - 9. Virtual Memory(2)

White Whale 2016. 6. 3. 11:23
728x90

1. 프레임 할당

  

우선 프레임은 메모리상 페이지는 가상 메모리상의 블락 단위이다.


 운영체제는 프로세스에게 알맞는 프레임 개수를 할당해야한다. 너무 많이 할당하면 다른 프로세스가 능률이 떨어질 것이며 적게 할당하면 페이지 부재로 인해 CPU 능률이 떨어질 것이다. 그러면 최소로 할당해야 하는 프레임의 수는 얼마인가? 페이지 부재로 인해 가장 문제가 되는 것은 명령어를 다시 실행 시켜야 하는 것이다. 따라서 프로세스당 필요한 최소 프레임 수는 명령어 집합 아키텍처에 결정된다. 

 이론적으로 명령당 참조 회수가 한번이면 프레임이 하나만 있으면 되지만 간접 참조 때문에 그렇지 않다. 이러한 이유로 최대 프레임 수는 간접 참조의 반복과 관련있는 가용 물리 메모리에 의해 결정된다.



2. 할당 알고리즘

  

 1. 균등 할당 : 프로세스가 똑같이 프레임을 할당 받고 남은 프레임은 가용 프레임 버퍼 저장소로 상용한다.

 2. 비례 할당 : 프로세스의 크기나 우선 순위 아니면 둘을 조합한 것에 따라 프레임 갯수를 할당한다. 



3. Global vs Local Allocation

  

 프레임 교체 시 희생 페이지를 정할 때 자신에게 할당된 프레임 내에서 찾는 Local과 모든 프레임을 대상으로 찾는 경우인 Global이 있다. Local인 경우 항상 프레임 부재율이 일정하지만 안쓰는 프레임으로 낭비가 발생할 수 있다. Global은 낭비되는 프레임은 줄지만 페이지 부재율이 어떤 프로세스와 함께 실행되느냐에 따라 달라진다.



4. Non-Uniform Memory Access(비균등 메모리 접근 -NUMA)

  

 블레이드와 같이 CPU와 일정 메모리를 탑제하고 있는 여러개의 보드로 운영되는 시스템들은 각자의 보드 내 메모리에는 접근속도가 빠르지만 다른 보드의 메모리에 접근시 속다가 느리다. 이렇게 메모리 접근 시간이 차이가 나는 시스템을 모두 비균등 메모리 접근 시스템이라고 한다. 하나의 CPU에 실행되고 있는 프로세스의 프레임들이 복수의 메모리에 적재된다 할때 메모리 관리 시스템은 프로세스가 실행되고 있는 CPU에 가까운 메모리에 프레임을 적재하는 것이 가장 효율 적이다.



5. Thrashing

  

 충분한 프레임을 할당 받지 못해 빈번한 페이지 부재로 인한 페이징 작업을 스레싱이라고 한다.  어떤 프로세스가 실제 실행보다 더 많은 시간을 페이징에 사용하고 있을 경우 스레싱이 발생했다고 한다.



6. Cause of Thrashing

  

 다중 프로그래밍 시스템에서 다른 프로세스의 프레임을 가져올 수있다고 했을 때, 프레임 선점이 연쇄적으로 발생하여 페이지 부재를 계속해서 발생시킨다. 이렇게 페이징 시간이 늘어나면 CPU 사용 시간이 줄어들고 시스템은 다른 프로세스를 추가로 실행 시켜 상황을 더 악화 시킨다.

스레싱은 지역 교환 알고리즘과 우선순위 교환 알고리즘을 사용하면 제한할 수 있다. 그러나 근본적으로는 막지 못한다. 스레싱을 막기위해서는 각 프로세스가 필요로 하는 최소하의 프레임 개수를 보장야한다.



7. Working-set Model

  

 프로세스의 최소 프레임 수를 아는 방법 중 하나인 작업 집합 방법은 지역성 모델(locality model)을 기반으로 하고 있다. 지역성이란 특정 구간에서 반복적인 일을 하는 것을 말한다. 

특정 범위를 정해 해당 범위 내 사용된 페이지의 수를 구하고 최대가 대는 수가 해당 프로세스의 최소한의 필요 프레임 수가 된다. 

 해당 범위인 window size가 크면 중복되는 페이지가 많아져 최소 요구량이 커지고 작으면 페이징 부재가 자주 발생하게 된다. 또한 각 프로세스의 최소 프레임의 수의 합이 메모리의 총 프레임의 수보다 클 경우 결국 쓰레싱이 발생한다.



8. 페이지 부재 빈도(PFF)

  

 작업 집합 방법 보다 페이지 부재 빈도 방식이 스레싱을 더 효율적으로 처리한다.

궁극적의 목표는 스레싱을 어떻게 막을 것인가, 즉 페이지 부재율을 어떻게 조절할 것인가인데, 각 프로세스마다 페이지 부재율을 정해 상함보다 올라가면, 프레임 수를 늘리고 하한보다 낮아지면 프레임을 반환하면서 스레싱을 방지할 수 있다.



9. 메모리 사상 파일

  

  프로세스에서 특정 파일에 접근하여 데이터를 읽고 쓴다고 하였을 때, 시스템 호출로 하기에는 많은 시간이 든다. 그래서 해당 파일을 메모리에 올려 빠르게 접근하여 사용한다. 이러한 방식을 메모리 사상이라고 한다. 해당 방식을 사용하면 공유 메모리를 이용하여 파일을 여러 프로세스가 공유할 수 있다.



10. 커널 메모리 할당

  

  사용자 모드에서 수행중인 프로세스가 추가적인 메모리를 요구하면 커널이 관리하는 가용 페이지 프레임에서 페이지들이 할당된다. 커널 메모리에는 물리 메모리 내에 흩어져 있는 페이지들로 채워져있다. 커널은 프로세스에게 알맞는 메모리를 제공하여 내부단편화를 줄일려고 한다. 


1. 버디 시스템 : 버디 시스템은 물리적으로 연속된 페이지들로 이루어진 고정된 크기의 세그먼트로부터 메모리를 할당한다. 메모리는 2의 거듭제곱 단위로 할당된다. 분활된 세그먼트를 버디라고 하며 연속된 버디들은 쉽게 합병이 가능하다. 단점은 어정쩡하게 요구되면 내부 단편화가 발생한다.


2. Slab Allocation : Slab이란 하나 또는 그 이상의 연속된 페이지의 구성이다. 캐시는 하나 또는 그이상의 슬랩으로 구성된다. 캐시는 커널 자료구조 마다 하나의 캐시가 존재한다. 캐시 내의 자료 구조 객체 수는 캐시에 들어가 있는 Slab의 크기에 따라 달라진다. 슬랩의 장점으로는 내부 다편화가 없으며 메모리 요청이 빠르게 처리된다.



11. Prepaging

  

  프로세스가 시작될 때 많은 페이지 부재가 발생한다. 과도한 페이지 부재를 방지하기 위한 방법으로 모든 페이지나 어느 정도의 페이지를 미리 메모리에 올리는 것이다.



12. Page Size

  

  페이지 크기와 관련된 것은 테이블의 크기이다. 테이블에 들어가는 페이지의 개수가 고정일때 페이지의 크기가 작아지면 테이블의 크기는 작아진다. 필요 데이터에 대한 정밀도는 높아지나 데이터의 양이 적어 빈번히 페이지를 교체해야한다. 

페이지의 크기가 커지면 페이지 교체율은 낮아지고 입출력 시간이 줄어든다. 그러나 페이지의 내부 단편화가 발생할 수가 있다. 



13. TLB Reach

  

  TLB Reach란 TLB로 부터 액세스할 수 있는 메모리 공간의 크기이다. TLB는 8장에서 설명하였으며 MMU안에 있는 특수 소형의 캐시이며 associative memory로 구성된다. 또한 메모리에 있는 page table를 통해 해당 페이지를 찾아가는 것보다 효율적으로 접근할 수 있다. 

TLB Reach  = (TBL에 들어갈 수 있는 페이지 개수) x (page size)

여러 크기의 페이지를 수용하려면 TLB는 운영체제가 관리를 해야한다. 그러면 소프트웨어 적인 오버헤드가 발생하는데 이는 hit ratio와 TLB reach의 향상으로 상쇄될 수 있다.



14. Program Structure

  

 당연히 왼쪽이 더 좋다.



15. Program Structure

  

 I/O 작업 중인데 해당 페이지를 교체하면 문제가 발생한다. 이때는 lock bit를 추가하여 페이지를 메모리에 lock을 시키던가 입출력을 메모리 밖에서 하고 끝이 났을 때 버퍼와 간의 이동만 메모리에서 하는 방법이 있다.


 

'SoftWare > OS' 카테고리의 다른 글

OS - 11. File-System implementation  (0) 2016.06.10
OS - 10. File-System  (0) 2016.06.07
OS - 9. Virtual Memory(1)  (1) 2016.06.02
OS - 8. Memory Management  (0) 2016.06.01
OS - 7. Deadlocks  (0) 2016.05.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함