2013년 12월 1일 일요일

[Book] multicore application programming(한빛미디어)

[Book]  multicore application programming(한빛미디어)




 멀티 코어를 고려한 애플리케이션 방법과 실재를 설명해 준 책이다. 하지만, 병렬 프로그램의 빙산의 일각만 보여 주지 않고 물 밑에 깔려 있는 큰 덩어리를 조목 조목 알려 주고 있다.
하드웨어, 소프트웨어를 넘나들고 posix의 X계열에서 윈도우로 소프트웨어 의존적인 부분도 다루고 있다. 과거에 나온 책들은 API 위주이며 표준이 만들어지고 있을 때 작성한 책들이어서 사용법이 깔끔하지 않았다. 이제 어느 정도 정리가 되어 지금 쯤 정리된 책을 보는 것은 모든 내용을 한 큐로 이어 보는 즐거움이 있을 것이다. 하드웨어 스레드인 strands를 설명할때는 참 빠짐 없이 설명하려 했구나, 하지만 참 쉽게 무리 없이 언급하고 있구나 감탄하게 되었다. 병렬 프로그램을 한다는 것은 생명을 하진 여러 프로세스/ 스레드들이 서로 어떻게 데이터를 주고 받고 이 데이터를 순서에 맞게 공유하는 것일 것이다. 이 것을 하기 위한 동기화 장치(뮤텍스, 크리티컬 리전, 스핀 락, 세마포어, 리더즈-라이터 락, 배리어, 아토믹 조작과 락-프리 코드)와 통신 방법(메모리 맵, 시그널, 메시지 큐, 파이프, 네트워크)을 잘 설명하고 있다. 또한 posix 스레드 설명을 예제 별로 쉽게 설명하고 있어서 금방 이해하고 따라 할 수 있다.  거의 모든 컴퓨터 프로그램이 병렬화 프로그램을 만든다. 한 마디로 스레드 사용하는 것이 우습다. 하지만, 알고 제대로 만들어 사용하는 사람은 드물다. 병렬 내용이 계속 변해 왔으며 재대로 정립된지도 오래지 않아서 그럴 것이다. 과거의 프로세스의 IPC 개념으로 접근하여 어느 정도 작동되게 프로그램을 짜는 것일 것이다. 이 책을 읽게 되면 그런 실수할 수 있고 그냥 작동되지만 위험한 코드를 만드는 것을 막을 수 있을 것이다. 내가 올해 읽은 책 중 꼭 한 권만 꼽으라면 난 서슴 없이 이 책을 읽을 것이다. 단, 용어를 한글화 한 부분이 조금 어색한 경우가 있다. 하지만 너무 심하지는 앟다.예를 들어 아토믹이라는 용어를 쓰는 부분이 조금 그렇다. 이 책을 읽으며 감탄을 자아 냈다. 꼭 알아야 할 부분이지만 국내에서는 잘 다루지 않는 분야를 참 쉽게 잘 설명했다는 느낌이었다. 무었보다 많이 알고 있다는 느낌이 들었다. 엄청난 내공이 있어야 이렇게 딱 잘라 설명할 수 있고 이해 시킬 수 있기 때문이다. 컴퓨터 쪽에 종사하는 누구라도 꼭 병렬 프로그램을 다루지 않는 사람이라도 꼭 이 책은 읽기를 바란다. 이렇게 좋은 책이 화자 되지 않고, 나 또한 책에 대해 모니터링 하는데 이 책을 이제야 발견한 것이 조금 아쉽다. 



Multicore Application Programming: For Windows, Linux, and Solaris : http://kangcom.com/sub/view.asp?sku=2010F1107470&mcd=571
Solaris Application Programming : 
멀티코어 애플리케이션 프로그래밍(성능을 100% 끌어내는) : http://kangcom.com/sub/view.asp?sku=201206290006

http://www.hanb.co.kr/book/look.html?isbn=978-89-7914-928-9

댓글 없음:

댓글 쓰기