크래프톤 정글/TIL

[크래프톤 정글 5기] week02 알고리즘 주차 열세번째 날, 캐시 메모리, 지역성, 프로세스, 쓰레드

양선규 2024. 4. 2. 22:47
728x90
반응형

캐시 메모리를 사용하면 컴퓨터의 성능이 향상되는 이유

지역성(Locality)

- 프로그램이 메모리에 접근할 때, "특정 부분을 집중적으로 사용"하는 경향

시간적 지역성(Temporal Locality)

- 한 번 접근된 데이터는 가까운 미래에 다시 접근될 가능성이 높다.

- ex) 루프 내에서 반복적으로 사용되는 변수

공간적 지역성(Spatial Locality)

- 메모리의 특정 주소에 접근한 후, 그 주변 주소에 있는 데이터에 접근될 가능성이 높다

- ex) 배열, 연속적인 메모리 블록 등

캐시 메모리는 지역성 원리를 활용하여, 자주 사용되거나 연속적으로 사용될 가능성이 높은 데이터를 미리 캐시에 저장한다. 이로 인해 CPU는 필요한 데이터를 캐시에서 빠르게 찾을 수 있다.

 

메모리 계층구조

 

메모리 계층구조

L0 : 레지스터 파일

L1 ~ L3 : CPU 내에는 L1, L2 캐시가 있고 L3까지 있을 수 있다.

L4 : 메인 메모리

L5 : 하드디스크, SSD 등 로컬 저장장치

L6 : 원격 저장장치

- 한 레벨의 저장장치는, 하위 레벨의 캐시 역할을 한다.

- ex ) 레지스터 파일은 L1의 캐시, 메인메모리는 로컬저장장치의 캐시이다.

- 피라미드의 위로 올라갈수록 "작고, 빠르고, 비싸다"

- 피라미드의 아래로 내려갈수록 "크고, 느리고, 싸다"

- 물리학적인 이유로, 큰 저장장치들이 작은 저장장치보다 느린 속도를 갖는다.

 

프로세스와 쓰레드의 차이점

정의 - 프로세스 : 프로그램의 실행중인 인스턴스이다. 자체 주소공간, 메모리 등을 가진다.

정의 - 쓰레드 : 프로세스 내부의 공유 메모리 단위이며, 작업을 효율적으로 병렬 실행 가능하게 한다.

자원 공유 - 프로세스 : 프로세스는 독립적인 메모리 공간과 자원을 가지기 때문에, 프로세스간 자원 공유는 IPC 매커니즘을 통해 이루어진다.

자원 공유 - 쓰레드 : 같은 프로세스 내의 쓰레드들은 코드, 데이터, 시스템 자원을 공유한다.

 

IPC(Inter-Process Communication, 프로세스 간 통신)

- 프로세스들 사이에 서로 데이터를 주고받는 행위나 방법 또는 경로

 

B-Tree 인덱스를 사용할 때와, 사용하지 않을 때의 시간 복잡도

- B-Tree 사용 시간 복잡도 : O(logN), NDB 내 레코드 수이다.

- B-Tree 미사용 시간 복잡도 : O(N), 선형 검색을 수행해야 한다.

-> 데이터 양이 많을수록 B-tree 인덱스를 사용하는 것이 성능 면에서 훨씬 유리하다.

 

운영체제(Operation System)

- 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층.

- 응용프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야 한다.

 

운영체제의 두 가지 주요 목적

- 제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해

- 응용프로그램들이 단순/균일한 매커니즘을 사용하여, 복잡하고 매우 다른 저수준 하드웨어를 조작할 수 있도록 하기 위해

 

네트워크는 일종의 입출력 장치이다

- 개별 시스템의 관점에서 볼 때, 네트워크는 입출력 장치로 볼 수 있다.

- 메인 메모리로부터 네트워크 어댑터로 데이터를 복사하고, 네트워크를 통해 다른 컴퓨터로 이동된다. 다른 컴퓨터는 이 데이터를 읽어서 자신의 메인메모리에 복사한다. 이 일련의 과정을 입출력 기능이라고 볼 수 있다.

728x90
반응형