Cache

자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 원래의 데이터를 접근하는 시간이 오래 걸리거나 반복적으로 동일한 결과를 돌려주는 경우 데이터를 직접적인 접근으로 인한 병목현상을 막기 위해 사용되는 저장소이다. 

 


캐시 철학

 

Temporal locality

시간적으로 보면, 최근에 사용했던 기억 장소들이 집중적으로 액세스 되는 경향이 있다. 접근되었던 적이 있는 곳에는 다 시 접근할 가능성이 높다는 판단

 

Spacial locality

프로그램 실행 시 접근하는 메모리의 영역은 이미 접근이 이루어진 영역의 근처일 확률이 높다.

 

테스트 코드

            int[,] arr = new int[10000, 10000];

            {
                long now = DateTime.Now.Ticks;
                for (int i = 0; i < 10000; i++)
                {
                    for (int j = 0; j < 10000; j++)
                    {
                        arr[i, j] = 1;
                    }
                }
                long end = DateTime.Now.Ticks;
                Console.WriteLine($"(i,j) 순서 걸린 시간{end - now}");
            }

            {
                long now = DateTime.Now.Ticks;

                for (int i = 0; i < 10000; i++)
                {
                    for (int j = 0; j < 10000; j++)
                    {
                        arr[j, i] = 1;
                    }
                }
                long end = DateTime.Now.Ticks;
                Console.WriteLine($"(j,i) 순서 걸린 시간{end - now}");
            }

 테스트 결과로 봤을 때 같은 동작이지만 두 개의 결과가 많은 시간이 차이가 보이는 걸 알 수 있다. Spacial locality관점으로 근접한 공간적 메모리 영역을 접근했을 때 좀 더 짧게 수행되기 때문이다. 

 


https://talkingaboutme.tistory.com/entry/Study-Memory-Hierarchy-1

 

반응형

'STUDY > 운영체제' 카테고리의 다른 글

운영체제) 교착상태 (deadlock)  (0) 2019.08.16

운영체제 

교착상태

-  두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 떄문에 결과적으로 아무것도 못하는 상태

- 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제이다.

 

다중 프로그래밍 : CPU작업과 입출력 작업을 병행하는 것(메모리에 여러개의 프로그램을 상주시켜 하나의 CPU로 연산과 처리를 중첩시켜 CPU유휴시간을 감소하기 위한 기법

 

교착상태의조건

1. 자원점유와 대기

프로세스가 자신이 가질 수 있는 자원은 가지고 있으면서 다른 자원이 오기를 기다리는 것

 

2. 비선점

다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없다.

 

3. 순환대기

프로세스의 자원 할당에서 첫 번째 프로세스와 마지막 프로세스의 자원할당이 겹치게 되어 원형에 있는 모든 프로세스가 자원 할당을 받고자 기다리는 형태

 

4. 상호배제

한번에 한개의 프로세스만이 공유자원을 사용할 수 있어야 한다.

 

예방

1. 자원점유와 대기

프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.

 

2. 비선점

자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다.

 

3. 순환대기

자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 한다.

 

4. 상호배제

한번에 여러개의 프로세스가 공유자원을 사용할 수 있도록 한다.

 

회피

교착상태가 발생하면 적절히 피하는 방법

 

각 프로세스의 요청과 방출에 대한 순서를 파악하고 있다면 우리는 각 요청에 대해서 가능한 미래의 교착상태를 피하기위해 프로세스가 대기해야하는 지를 결정할 수 있다는 점에 착안하여 나온 방법

즉, 어떤 프로세스가 요청을 할 때 미래에 대한 분석을 통해 나의 요청을 늦추는 방법으로 교착상태를 피할 수 있다.

 

 

 

 

 

 

학습참고 :

1. https://coding-factory.tistory.com/311

2. https://frontalnh.github.io

반응형

'STUDY > 운영체제' 카테고리의 다른 글

[컴퓨터 구조] 캐시이론 Locality  (0) 2021.09.23

+ Recent posts