1 min read
cache locality cache prefetch Memory
Cache 는 느린 저장소나 계산 결과 앞에 더 빠른 저장 공간을 두어 반복 접근 비용을 줄이는 구조다. OS/architecture 에서는 CPU cache, page cache, disk cache 등이 대표적이다.
Cache Locality? (참조) 캐시 지역성이 좋고 나쁘다는 것은 무슨 의미를 가지는가? CPU 는 일반적으로 특정 메모리에 접근할 때, 해당 메모리 근처의 chunks 들을 cache 에 미리 올려둔다.
Linux 는 I/O 성능을 높이기 위해서 Page Cache 를 사용한다.
버퍼는 CPU 와 보조 기억 장치에서 사용되는 임시 저장 공간을 의미한다. 버퍼는 CPU 내부에 있는 cache memory 보다는 느리지만 보조 기억 장치보다 훨씬 빠른 주기억 장치 (RAM) 을 사용한다.
CPU 의 bit 는 한 번에 다룰 수 있는 데이터의 최대 크기를 의미한다. 예시: 32bit CPU 는 한 번에 다룰 수 있는 데이터의 최대 크기가 32bit 이다.
CPU Scheduling 은 OS 가 어떤 Process 또는 thread 에 CPU 실행 시간을 줄지 결정하는 정책이다. 여러 작업이 동시에 실행되는 것처럼 보이게 하려면, OS 는 짧은 시간 단위로 실행 대상을 바꾸고 Context Switching 을 수행한다.
Facebook 에서 개발한 malloc 메모리 단편화를 최소화하고, 멀티프로세서/멀티스레드 환경에서 동시성을 제공한다.
Process 란 OS 로 부터 시스템 자원을 할당받고 메모리에 적재되어 실행되고 있는 프로그램 (program) 의 인스턴스를 의미하며, 여기서 프로그램은 실행 가능한 파일을 뜻한다.
swap 영역 에서 물리 Memory 로 데이터 (Page) 를 가져오는 것 .
현재 공유 자원에 접근할 수 있는 thread 또는 Process 의 수를 나타내는 값을 설정하여 mutual exclusion 를 달성하는 기법 Semaphore 는 리소스 상태를 나타내는 간단한 카운터를 사용하며, 이는 OS 또는 Kernel 에서 지정된 값이다.