목록System Programming (2)
꾸준히
CPU 성능 향상의 한계 스레드 프로그래밍이 많이 쓰이는 이유는 CPU의 성능과 효율에 기술적 한계가 보이기 시작했기 때문이다. 과거에는 프로그래머가 비효율적인 코드를 작성하더라도 새로 개발된 CPU 및 주변 장치로 교체해주면 성능 문제가 해결되는 경우가 많았다. 하지만 시간이 지나면서 클럭 속도를 4GHz 이상 올리기 시작하자 심각한 전력 소비 현상과 더불어 발열 문제가 발생했다. 원래 CPU의 성능을 올리기 위한 기초적인 방법은 작동 클럭을 올리는 것이다. 하지만 클럭의 한계점이 보이기 시작하자 벤더들은 분업의 원리를 적용한 멀티코어를 만들었다. 이는 프로세서 1개의 성능 향상이 한계에 부딪히자 2개 이상의 프로세서가 작업을 나눠서 실행하도록 하는 병렬 처리 힌트에서 파생된 것이다. 공정 기술의 향상..
mmap (memory mapped I/O) mmap은 장치나 파일을 메모리와 대응시키는 기법이다 POSIX 시스템에서 mmap의 구현은 파일기술자(fd)를 포인터 변수에 대응시키는 방법을 사용한다 따라서 먼저 파일을 열고 거기서 얻어진 파일기술자를 mmap에 넘기는 방식을 사용한다 mmap 대응이 완료되면 파일의 내용에 접근할 때 read, write 관련 명령을 사용할 필요 없이 포인터 변수를 이용하여 접근할 수 있다 int fd = open("/tmp/myfile", O_RDWR, 0664); char *p_map = mmap((void *)0, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); close(fd); 위 예시를 보면 먼저 파일을 오픈하고, mmap ..