Facebook 에서 개발한 malloc
메모리 단편화를 최소화하고, 멀티프로세서/멀티스레드 환경에서 동시성을 제공한다.
1 min read
Facebook 에서 개발한 malloc
메모리 단편화를 최소화하고, 멀티프로세서/멀티스레드 환경에서 동시성을 제공한다.
현재 공유 자원에 접근할 수 있는 thread 또는 Process 의 수를 나타내는 값을 설정하여 mutual exclusion 를 달성하는 기법 Semaphore 는 리소스 상태를 나타내는 간단한 카운터를 사용하며, 이는 OS 또는 Kernel 에서 지정된 값이다.
CPU 의 bit 는 한 번에 다룰 수 있는 데이터의 최대 크기를 의미한다. 예시: 32bit CPU 는 한 번에 다룰 수 있는 데이터의 최대 크기가 32bit 이다.
메모리의 구성 요소 4 개 Code 실행할 프로그램의 코드가 저장되는 영역 (컴파일 시 크기가 결정됨) Data 전역 변수, static variable 등 컴파일 시 결정되는 것들에 대한 영역 stack 지역 변수, parameters, return value 등 임시로 사용하는 값들에 대한 영역 (컴파일 시...
Linux 는 I/O 성능을 높이기 위해서 Page Cache 를 사용한다.
CPU 에서 사용할 데이터를 메인 메모리에서 캐시 메모리로 미리 올려놓는 방식을 의미한다. References Cache prefetching - Wikipedia .
Cache Locality? (참조) 캐시 지역성이 좋고 나쁘다는 것은 무슨 의미를 가지는가? CPU 는 일반적으로 특정 메모리에 접근할 때, 해당 메모리 근처의 chunks 들을 cache 에 미리 올려둔다.
공유된 자원의 데이터를 여러 thread 가 접근하는 것을 막는 것 상호배제라고도 하며, Critical Section 을 가진 thread 의 Running time 이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술이다.
Cache 는 느린 저장소나 계산 결과 앞에 더 빠른 저장 공간을 두어 반복 접근 비용을 줄이는 구조다. OS/architecture 에서는 CPU cache, page cache, disk cache 등이 대표적이다.
하드디스크에 존재하고 Memory Management Unit 가 관리하는 영역 swap in swap out .
Critical Section 은 여러 thread 또는 Process 가 동시에 접근하면 안 되는 shared resource 를 다루는 코드 구간이다.