안녕하세요? 허니입니다. 오늘은 운영체제에서 메모리 관련하여 알아야 개념들을 포스팅 하도록 하겠습니다. 학생이나 연구원분들에게 많은 도움이 될 것이라고 생각하며 언제든지 질문은 환영입니다.

 


오늘의 주제

 

TLB(Translation Lookaside Buffer)

Locality

Working set

Swapping과 Paging의 관리 방법

Overlay

 


TLB(Translation Lookaside Buffer)


앞서 우리는 테이블이 메모리를 너무 많이 차지하는 문제를 해결하기 위해 페이지 디렉토리와 레벨2 페이지테이블이라는 두 개의 테이블을 구성한다는 것을 공부해보았다. 그렇다면 우리가 자주 쓰는 프로그램을 항상 두 개의 테이블을 뒤져 찾아낸다는 것은 효율적이지 못한 것 아닐까. 그렇기에 하드웨어의 지원으로 자주 쓰는 프로그램의 매핑관계를 TLB에 저장하는 MMU가 고려된 것이다. 이러한 방법은 캐쉬라는 고속의 기억장치가 만들어져 가능하게 된 것으로 프로그램에서 자주 사용되는 데이터와 명령어들을 메모리에서 읽어와 캐쉬에 저장함으로써 이후 CPU의 요구가 있을 때 보다 빠른 시간 안에 처리가 가능한 것처럼 PTE를 TLB에 캐쉬하여 보다 빠른 메모리접근에 사용하는 것이다. 컴퓨터를 사용할 때 자주 쓰는 프로그램은 초기화면에 아이콘을 만들어 놓으면 사용하기 위해 프로그램을 찾는데 걸리는 시간을 휠씬 줄일 수 있는 것처럼 말이다.

 

그림 46 TLB (Table Lookaside Buffer)

 

최근 출시되는 프로그램들은 처음 메모리에 접근할 때 페이지 폴트가 일어나지만 그 다음 사용할 때에는 무조건 TLB안에 저장되게 설계되어 있다. TLB를 사용하게 되면 일반적인 Page Table Lookup보다 빠르지만 TLB에 담을 수 있는 항목은 보통 16개 정도에 불과하다.


IPT(Inverted Page Table)


앞서 우리는 페이지 테이블에 관해 상세히 공부해 보았다. 간략히 다시 한번 페이지 테이블의 개념을 설명하자면 가상페이지넘버를 가지고 그것과 매핑되는 물리적인 페이지프레임 넘버를 찾는 것이었다. 그러나 IPT는 페이지테이블의 이용방법을 완전히 뒤바꾸어 물리적인 페이지프레임넘버를 가지고 가상메모리내부의 페이지를 찾는 것이다. 과연 IPT의 장점은 무엇인가. 바로 현재 실제로 쓰이게 될 페이지프레임인덱스를 기준으로 가상메모리페이지를 찾게 되므로 기존의 페이지테이블에 비해 훨씬 적은 메모리를 차지한다는 것이다. 그렇다면 메모리도 적게 차지되는 IPT는 왜 널리 사용되지 못하는 것일까. 바로 공유의 문제와 페이지테이블 접근 시간이 더디다는 문제가 발생하기 때문이다. 페이지 테이블상에서 하나의 가상페이지는 여러 페이지프레임을 공유할 수가 있다.다시 말해 가상페이지 넘버 1번과 36번이 똑같은 12번 페이지프레임넘버를 지정했다면 12번 페이지 프레임 하나를 1번과 36번 의 가상페이지넘버를 사용하는 프로세스가 각각 공유하는 것이다. 그러나 IPT에는 12번의 페이지 프레임넘버가 1번과 36번의 가상페이지넘버를 지정 할 경우 (12, 1), (12,36)등과 같이 일일이 표기해줘야 하는 것이다.바로 페이지를 공유하기 위해서는 별도의 정보가 필요한 것이다. 페이지 테이블 접근 시간에서 문제가 발생하는 원인은 바로 프로세스가 수행하면서 만들어내는 주소가 가상주소이기 때문이다. 그런데 IPT는 물리적인 페이지프레임이 인덱스이기 때문에 맨 처음 주소부터 찾아 프로그램이 가상메모리의 임의의 주소가 어디에 자리잡고 있는지를 알아내게 되는 것이다. 그렇기에 페이지테이블을 통해 주소를 알아내는데 너무 긴 시간이 소요된다.

 


Locality(지역성)


프로세스가 실행되는 것을 계속 관찰하던 어느 시스템 설계자는 실행과정에서 공통된 특성을 한가지 발견하게 된다. 바로 프로세스가 메모리 레퍼런스(메모리를 참조하기 위해 접근하는 것을 메모리 레퍼런스라고 한다.)를 할 때는 메모리의 전 부분을 골고루 참조하는 것이 아니라 일부 페이지 프레임에 대해서 집중적으로 레퍼런스 한다는 것이다. 바로 지역적 특성을 갖는다는 것이었다. 예를 들어 For loop을 사용하게 되면 인접 주소들을 계속 참조하게 된다.

 

그림 47 지역성 (Locality)

 

 잠깐 상식!

For loop란 프로그래밍 언어에서 일정한 횟수 동안 같은 동작을 반복하여 수행하도록 하는 작업을 말한다.

 


Working set


가상메모리시스템에서 주어진 시간에 프로세스가 참조하는 페이지 프레임의 집합을 Working set이라고 말한다. TLB가 Working set에 속한 페이지 프레임을 다 가지고 있다면 메모리 참조 속도가 엄청나게 빨라지게 될 것이다. 또한 Working set을 통해 어떤 페이지프레임을 page out 시킬 것인가 하는 기준이 마련되게 된다. 다시 말해 메모리가 부족해 page out 시킬 것을 찾아야 한다면 바로 Working set안에 있는 프로그램을 제외시키면 되는 것이다. Working set에 속한 메모리를 고정시켜주면 page out으로 인하여 프로그램 운영에 미치는 영향을 최소화할 수 있다. 내가 사용하는 프로그램에 별다른 지장을 주지 않도록 내부적으로 page out이 진행된다면 이보다 더 좋을 순 없을 것이다.

그림 48 Working Set


그렇다면 앞서 설명한 swapping과 paging는 어떤 방법으로 관리될까. 그것들은 별도의 커널 스레드에 의해 관리된다. 이 커널 스레드는 보통의 상황에서는 활동을 하지 않지만 메모리와 free page의 부족을 나타내는 임계치에 다달으면 활동을 시작하게 된다. 이러한 커널 스레드를 page out daemon이라 한다. 이 daemon이 활동하는 동안 작업 중이던 프로세스들은 동작을 중단하고 있을까. 그것은 아니다. 작업은 작업대로 메모리 확보를 위한 page out은 out대로 함께 동작하는 것이다. 우리가 가끔 컴퓨터 작업을 할 때 본체의 디스크 불빛이 깜빡이며 삑삑 소리를 내는 것은 어떠한 문제가 발생해서가 아니라 바로 시스템 내부에서 메모리 확보를 위한 page out이 진행중인 것이다.

잠깐, 상식!
daemon(데몬): 외부에서 실행을 명령하지 않아도 자체적으로 가동되는 조건을 보유하고 있어 조건에 만족되는 상황이 발생했을 경우 작업이 수행되는 것을 말한다.

 


Overlay


가상메모리가 존재하지 않았을 당시에 8kbyte의 메모리에 32kbyte의 프로그램을 읽어드려야 하는 경우가 발생했다면 어떻게 될까. 프로그램 용량이 너무 커 실행시킬 수 없다면 모든 프로그램들은 메모리 크기로밖에 만들어질 수밖에 없을 것이다. 이러한 문제를 overlay를 통해 해결될 수 있는 것이다. 프로그램의 운영상 관련이 깊은 구조끼리 묶어 메모리가 감당할 수 있는 크기의 모듈로 나누어 수행하는 것이다. 90년대 초반까지만 하더라도 초등학교 시설에 비해 학생수가 많아 오전반 오후반으로 나누어 교실을 활용했던 것처럼 말이다. 그러나 프로그램을 제어하는 기능은 어느 모듈에나 속해 있어야 한다는 것을 잊어선 안되겠다. 바로 overlay는 가상 메모리의 전신인 격이다.

그림 49 Overlay
 

그렇다면 overlay와 가상메모리의 차이점은 무엇일까. overlay는 프로그램 사용자 스스로가 프로그램의 영역을 나누고 통제해야만 했다. 그러나 가상메모리는 사용자의 짐을 덜어주기 위해 영역을 나누고 통제하는 모든 것은 시스템 스스로가 도맡아 처리하게 되는 것이다.

 


요점정리

 

 TLB(Translation Lookaside Buffer)란?
하드웨어의 지원으로 자주 쓰는 프로그램의 PTE를 MMU의  TLB에 저장한다. 이러한 방법은 캐쉬라는 고속의 기억장치가 만들어져 가능하게 되었다.

 

 IPT(Inverted Page Table)란?
IPT는 페이지테이블의 이용방법을 완전히 뒤바꾸어 페이지프레임넘버를 갖고 가상메모리내부의 페이지를 찾는 것이다.

 

 Locality(지역성)이란?
프로세스가 메모리 레퍼런스(메모리를 참조하기 위해 접근하는 것을 메모리 레퍼런스라고 한다.)를 할 때는 메모리의 전 부분을 골고루 참조하는 것이 아니라 일부 페이지프레임에 대해서 집중적으로 레퍼런스 한다는 것이 바로 지역적 특성이다.

 

 Working set이란?
가상메모리시스템에서 주어진 시간에 프로세스가 참조하는 페이지프레임의 집합을  Working set이라고 말한다. 메모리가 부족해 page out 시킬 것을 찾아야 한다면 바로  Working set안에 있는 프로그램을 제외시키면 되는 것이다.

 

 Swapping과 Paging의 관리란?
swapping과 paging은  page out daemon이라는 별도의 커널 스레드에 의해 관리된다. 이 커널 스레드는 보통의 상황에서는 활동을 하지 않지만 메모리 부족을 나타내는 임계치에 다달으면 활동을 시작하게 된다.

 

 Overlay란?
프로그램 용량이 메모리 용량보다 클 경우 프로그램의 운영상 관련이 깊은 구조끼리 묶어 메모리가 감당할 수 있는 크기의 모듈로 나누어 수행하는 것이다.

 

목 차

 운영체제를 시작하는 분들을 위해

 운영체제의 역사와 구체적으로 어떤 일들을 수행하나요?

 운영체제의 목표와 역할이 미래에도 계속 증대될까요?

 운영체제를 이해하기 위해 필요한 기본 개념들은 무엇인가요?

 운영체제 프로세스 생애주기(Process Lifecycle)는 무엇인가요?

 운영체제 프로세스 관리(Process Management)는 어떻게 하나요?

 운영체제 프로세스(Process)의 처리 속도는 어떻게 높일까?

 운영체제 스레드(Thread)는 무엇인가요?

 운영체제 스케줄링 (Scheduling)은 어떻게 하나요?

 운영체제 스케줄링 알고리즘의 비교 기준이 있나요?

 운영체제 프로세스 동기화가 무엇인가요?

 운영체제에서 세마포어(Semaphore)란?

 운영체제 메모리 관리(Memory Management)는 어떻게 하나요?

 운영체제 메모리 분할 방법은 어떻게 하나요?

 운영체제 가상메모리(Virtual Memory)는 무엇인가요?

 운영체제 Page in/out, Swapping 등이 Page Table Entry와 어떤 관계인가요?

 운영체제 메모리 관련해서 알아야 할 개념은 어떤것이 있나요? (TLB, Locality, Working Set, Overlay)

 운영체제 Page replacement (페이지 대체) 알고리즘이란?

 운영체제 파일시스템(File System)은 어떻게 운영되나요?

 운영체제 파일시스템 내부구조는 어떻게 되나요?

 운영체제 디스크 공간 할당(Disk Space Allocation) 알고리즘과 효과적 알고리즘의 판단 기준은?

 운영체제 파일시스템에서 접근 시간, 디스크 스케줄링을 위한 알고리즘, I/O 시스템이란?

 리눅스 인터럽트 (Interrupt)에 대해 자세히 설명해 주세요.

 인텔 구조에서 운영체제 가상 메모리 (Virtual Memory)는?

 운영체제 아키텍처의 종류는 얼마나 있나요?

 

+ Recent posts