Top

실시간 임베디드 멀티스레딩 [누구나 쉽게 이해할 수 있는 RTOS 멀티스레드 프로그래밍]

  • 원서명Real-Time Embedded Multithreading (ISBN 9781578201341)
  • 지은이Edward L.Lamie
  • 옮긴이김도형
  • ISBN : 8989975670
  • 32,000원
  • 2005년 07월 25일 펴냄
  • 페이퍼백 | 384쪽 | 190*255mm
  • 시리즈 : 임베디드 시스템

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/multi-threading)

PC에서 직접 간단한 예제를 실행하면서 배우는 RTOS 프로그래밍 입문서!
ARM과 스레드X를 이용한 RTOS 멀티스레드 프로그래밍의 이해


현업에서 가장 널리 쓰이는 RTOS와 프로세서를 이용해 임베디드 애플리케이션을 개발해 보자. 이 책은 임베디드의 실시간 개념과 용어부터 구체적인 예제까지, 당장 활용할 수 있는 실전 지식을 다루고 있다. ARM® 프로세서 개요, 스레드X® 실시간 운영체제(RTOS)가 제공하는 모든 서비스에 대한 상세한 설명을 통해 실제 시스템을 구축하는 데 필요한 구체적인 내용을 배울 수 있을 것이다. 또 책 마지막 부분의 사례 연구를 통해 흔히 맞닥뜨리는 문제에 대한 대처법 등 모든 내용을 실전 지식으로 체득할 수 있게 했다.

스레드X와 ARM 프로세서는 실시간 멀티스레딩 임베디드 시스템 개발방법을 배우기에 이상적인 조합이다. ARM 마이크로프로세서는 그 단순한 구조 때문에 휴대폰에서 레이저 프린터까지 다양한 장치에서 널리 사용되고 있다. Express Logic의 스레드X RTOS 역시 신뢰성 있는 멀티스레딩 지원과 단순한 구조 때문에 ARM 프로세서용 RTOS 중 가장 널리 쓰는 운영체제 중 하나다.


[ 이 책의 내용과 대상 ]

이 책은 현재 임베디드 시스템을 개발하고 있거나 임베디드 시스템 개발 과정을 더 잘 알기를 원하는 사람들을 위한 것이다. 임베디드 시스템 개발자는 보통 소프트웨어 혹은 전기, 전자 분야의 엔지니어지만 그 밖의 다른 분야 종사자들도 이 분야에 지대한 공헌을 해왔다. 이 책에서는 특히 더 작고, 빠르며, 정해진 시간 내에 동작하고 오류가 발생하지 않는 임베디드 응용을 다룬다.
이 책에서는 임베디드와 실시간 관련 개념, ARM® 프로세서, 스레드X(ThreadX) 실시간 운영체제(RTOS)에서 제공하는 모든 서비스, 전통적인 문제에 대한 해법, 사례 연구 등의 내용을 총 14장에 걸쳐 담았다. 또 이 책은 C 나 C++ 프로그래밍 경험이 있는 독자층을 염두에 뒀다. 따라서 프로그래밍 기본에 대해서는 굳이 설명하지 않을 것이다. 독자의 배경 지식에 따라 이 책의 각 장은 각기 별도로 읽어도 무방하다.
임베디드 시스템을 다루고 있는 훌륭한 서적은 물론 많다. 하지만 대부분은 포괄적이고 일반적인 관점에서 쓴 것이다. 이 책은 전형적 상용 RTOS와 마이크로프로세서를 택해서, 이를 활용한 임베디드 시스템 개발을 다루고 있다는 점에서 독특하다. 이 접근법은 각 시스템에 맞게 적용해야 하는 일반적인 개념을 설명하기 보다는 구체적인 지식과 기술을 제공하는 장점이 있다. 따라서 이 책에서 다루는 내용은 즉시 적용해 볼 수 있을 것이다.
임베디드 응용 개발을 위해 실제 RTOS를 주된 도구로 사용하므로 RTOS를 직접 개발하거나 RTOS를 사용하지 않는 경우의 이점 등에 대해서는 언급하지 않겠다. 직접 RTOS를 만들 때에 비해 적당한 가격의 상용 RTOS를 사용할 때 얻는 이점은 상당하다. 예를 들어 대부분의 상용 RTOS 개발 회사는 이미 수년간 자사의 시스템을 다듬고 최적화해왔다. 상용 RTOS 회사가 가진 전문 지식과 제품 지원이 성공적인 시스템 개발에 중요한 역할을 할 수도 있다.
이 책에서 선정한 RTOS는 스레드X2 (버전 4)이다. 스레드X는 신뢰성이 높고, 사용이 쉬우며, 가격도 저렴하고, 널리 사용되고 있다. 또 OS 개발자의 풍부한 경험으로 제품의 성숙도가 높다. 스레드X는 현대 RTOS가 지니는 대부분의 특성을 갖고 있고, 그 외 몇가지 진보된 특성을 제공한다. 또 하나의 언급할 만한 특성은 스레드X의 API에 사용된 일관성있고 읽기 쉬운 코딩 규약(coding convention)이다. API의 논리적 접근 방식 덕분에 직관적인 응용 프로그램 개발이 가능해졌다.
이 책에서는 주로 C 프로그래밍 언어를 사용했지만, 경우에 따라 C++를 사용할 수도 있다.
부록 CD에는 스레드X3의 Win32버전을 실었다. 이 시스템을 이용해 스스로 고안한 테스트를 해보고, 데모 시스템을 돌려보거나, 책에 제시된 프로젝트를 테스트해볼 수도 있을 것이다.


[ 부록 CD 포함 ]

부록 CD에 있는 Win32 기반 스레드X 데모 시스템을 이용해 책에 나온 모든 예제와 각 장 끝에 수록한 프로젝트, 사례 연구를 실행해 볼 수 있다.

저자/역자 소개

[ 저자 소개 ]

컴퓨터 과학과 명예교수로, 31년 동안 대학에서 소프트웨어 공학과 운영체제를 가르쳤다. 센트럴 미시건 대학교와 캘리포니아 주립대 스타니스라우스 교의 컴퓨터 과학과의 초대 학장을 역임했으며 현재 부정기로 대학원 코스를 가르치고 있으며, Express Logic, Inc.를 위해 RTOS 실무 교육 강좌를 맡고 있다.


[ 저자 Edward Lamie 한국어판 서문 ]

제 책의 한국어 판은 많은 부분에서 원서보다 훨씬 나아졌습니다. 여러 가지 오류를 지적해줬을 뿐만 아니라 일부 내용에 대해서는 어떻게 수정하면 좋을지까지 제안해준 역자 김도형씨께 감사 드립니다. 한국어 판에서는 숨겨진 오류를 찾아내 바로잡고, 역자의 의견을 참고해 일부 내용을 수정하고 보강 했습니다. 그래서 한국어판이 원서보다 많이 개선된 것입니다. 제가 이 책을 즐겁게 썼던 만큼 독자 여러분도 재미있게 읽으시길 바랍니다.

미국 캘리포니아 샌디에고에서
Edward L. Lamie


[ 역자 소개 ]

김도형

포항공대 컴퓨터공학과를 나와 한국과학기술원 전산학과에서 석사 학위를 마쳤다. 데이터 방송 솔루션 전문 업체인 ㈜알티캐스트에서 DTV용 저작도구, 수신기 미들웨어 개발을 이끌었고, 현재는 DMB 미들웨어 규격 표준화와 제품 개발을 총괄하고 있다. 최근에는 JSR 242, JSR 272 등 자바 관련 해외 표준화 활동에도 활발히 기여하고 있다.


[ 역자 서문 ]

"실시간 임베디드 멀티스레딩"은 RTOS 프로그래밍을 위한 입문서다. 임베디드 시스템이나 RTOS에 대한 좋은 개론서들이 많이 나와 있지만, 대부분 프로세서와 메모리, 입출력 장치를 포함한 기본적인 하드웨어 개념과 컴파일러, 링커, 디버거 등 개발 환경에 대한 설명에 많은 지면을 할애하고 있다. 그러다 보니 정작 RTOS 상에서의 멀티스레드 프로그래밍에 대해서는 개념적 접근에만 머무르는 경우가 많다. 이 책은 바로 이런 실전 공백을 메우기 위한 것이다. 임베디드 시스템 전반에 대한 개념서를 읽은 뒤 이 책을 접하면 많은 도움이 될 것이다.
군더더기 없이 RTOS 프로그래밍으로 뛰어들기 위해 이 책에서는 대상을 구체화하는 전략을 택했다. RTOS인 스레드X를 기준으로 RTOS 상의 멀티스레드 프로그래밍을 직설화법으로 풀어냈으며, 마이크로프로세서를 다뤄야 하는 부분에서는 ARM 프로세서로 대상을 제한했다. 하지만 일반적인 개념을 소개함에 있어 균형을 잃지 않으며, 윈도우에서 실행할 수 있는 스레드X 에뮬레이터를 포함해서 예제를 직접 실행하고 수정해 볼 수 있게 배려했다.
스레드X는 국내에는 그다지 널리 알려져 있지는 않다. 하지만 역자의 경험으로 비춰볼 때 구체적인 대상 없이 막연히 익힌 지식보다는, 이 책에서처럼 구체적인 경험을 통해 얻은 지식이 여러 다른 RTOS를 사용할 때 더욱 진가를 발휘할 것이라고 믿어 의심치 않는다. 스레드X는 전형적인 RTOS로 국내에서 사용되는 다른 RTOS와도 유사한 편이다.
이 책은 역자의 첫 번역서다. "번역은 또 하나의 창작"이라는 말을 떠올리면서 부족하지만 매끄러운 문장이 되도록 노력했고, 독자의 입장에 서서 조금이라도 이해하기 어려운 부분은 관련자료를 찾아보면서 원문의 내용을 확인했다. 다행히 우연한 기회에 원저자와 연락이 닿았고 저자와의 의견 교환을 통해 많은 부분을 보강할 수 있었다. 인용된 스레드X 매뉴얼 내용이 잘못된 것을 찾아내기도 했고 일부 내용은 아예 문단 자체를 저자로부터 새로 받아서 번역하기도 했다. 부족한 번역이지만 원서에 수록된 내용을 더 쉽게 접하는 데 도움이 되기를 바란다.

목차

목차
  • 1장 임베디드, 실시간 시스템
    • 1.1 소개
    • 1.2 임베디드 시스템은 무엇인가?
    • 1.3 임베디드 시스템의 특성
    • 1.4 실시간 시스템
    • 1.5 실시간 운영체제와 실시간 커널
    • 1.6 프로세스, 태스크, 스레드
    • 1.7 실시간 시스템의 구조
    • 1.8 임베디드 시스템 개발
  • 2장 RTOS를 사용한 시스템과의 첫 만남
    • 2.1 운영 환경
    • 2.2 스레드X 데모 시스템 설치
    • 2.3 2개의 스레드를 사용하는 예제 시스템
    • 2.4 스레드X 객체 생성
    • 2.5 예제시스템 컴파일과 실행
    • 2.6 시스템과 출력결과 분석
    • 2.7 02samplesystem.c 예제
    • 2.8 생각해볼 문제
  • 3장 RTOS 관련 개념 및 용어 정의
    • 3.1 소개
    • 3.2 우선순위
    • 3.3 준비 스레드와 중지 스레드
    • 3.4 우선순위 기반 선점형 스케줄링
    • 3.5 라운드 로빈 스케줄링
    • 3.6 확정성
    • 3.7 커널
    • 3.8 RTOS
    • 3.9 문맥 전환
    • 3.10 타임 슬라이스
    • 3.11 인터럽트 처리
    • 3.12 스레드 기아현상
    • 3.13 우선순위 역전현상
    • 3.14 우선순위 상속
    • 3.15 선점 한계치
    • 3.16 생각해볼 문제
  • 4장 시스템 개발을 위한 RTOS 구성요소
    • 4.1 소개
    • 4.2 공개 자원의 정의
    • 4.3 스레드X 데이터 타입
    • 4.4 스레드
    • 4.5 메모리 풀
    • 4.6 응용 프로그램 타이머
    • 4.7 뮤텍스
    • 4.8 카운팅 세마포어
    • 4.9 이벤트 플래그 그룹
    • 4.10 메시지 큐
    • 4.11 스레드 동기화와 통신용 구성요소 요약
    • 4.12 생각해볼 문제
  • 5장 ARM 마이크로프로세서 소개
    • 5.1 소개
    • 5.2 역사
    • 5.3 기술적 특징
      • 5.3.1 시스템 온 칩(SoC) 호환성
      • 5.3.2 낮은 전력 소모
      • 5.3.3 향상된 코드 밀도
      • 5.3.4 다용도 레지스터 집합
      • 5.3.5 CPSR 정의
      • 5.3.6 프로세서 모드
    • 5.4 ARM 전력 절약 지원
  • 6장 스레드-핵심 구성요소
    • 6.1 소개
    • 6.2 스레드 제어 블록
    • 6.3 스레드 서비스 요약
    • 6.4 스레드 생성
    • 6.5 스레드 제거
    • 6.6 스레드 식별
    • 6.7 스레드 정보 얻기
    • 6.8 선점 한계치 변경
    • 6.9 우선순위 변경
    • 6.10 제어 양도
    • 6.11 스레드 실행 재개
    • 6.12 스레드 수면
    • 6.13 스레드 일시 중지
    • 6.14 응용 프로그램 스레드 종료
    • 6.15 타임 슬라이스 변경
    • 6.16 스레드 일시 중지 중단
    • 6.17 스레드 실행 개요
    • 6.18 스레드 상태
    • 6.19 스레드 설계
      • 6.19.1 스레드 수를 최소화하라
      • 6.19.2 우선순위를 주의깊게 선택하라
      • 6.19.3 우선순위 수를 최소화하라
      • 6.19.4 선점 한계치 사용을 고려하라
      • 6.19.5 우선순위 상속을 고려하라
      • 6.19.6 라운드 로빈 스케줄링 사용을 고려하라
      • 6.19.7 타임 슬라이싱 사용을 고려하라
    • 6.20 스레드 내부
    • 6.21 요약
    • 6.22 생각해볼 문제
  • 7장 상호 배제 문제와 고려사항
    • 7.1 소개
    • 7.2 크리티컬 섹션 보호
    • 7.3 공유 자원에 대한 독점적 접근 제공
    • 7.4 뮤텍스 제어 블록
    • 7.5 뮤텍스 서비스 요약
    • 7.6 뮤텍스 생성
    • 7.7 뮤텍스 제거
    • 7.8 뮤텍스 소유권 얻기
    • 7.9 뮤텍스 정보 얻기
    • 7.10 뮤텍스 중지 목록에 우선순위 적용하기
    • 7.11 뮤텍스 소유권 놓기
    • 7.12 교착 상태 피하기
    • 7.13 뮤텍스로 크리티컬 섹션을 보호하는 예
    • 7.14 예제 시스템 출력
    • 7.15 07samplesystem.c 예제
    • 7.16 뮤텍스 내부 동작
    • 7.17 요약
    • 7.18 생각해볼 문제
  • 8장 메모리 관리-바이트 풀과 블록 풀
    • 8.1 소개
    • 8.2 메모리 바이트 풀 요약
    • 8.3 메모리 바이트 풀 제어 블록
    • 8.4 메모리 바이트 풀 사용에 따른 함정
    • 8.5 바이트 풀 서비스 요약
    • 8.6 메모리 바이트 풀 생성
    • 8.7 메모리 바이트 풀에서 할당받기
    • 8.8 메모리 바이트 풀 제거
    • 8.9 메모리 바이트 풀 정보 얻기
    • 8.10 메모리 바이트 풀 중지 목록에 우선순위 적용하기
    • 8.11 바이트 풀에 메모리 돌려주기
    • 8.12 메모리 바이트 풀 예제-스레드 스택 할당
    • 8.13 메모리 바이트 풀 내부
    • 8.14 메모리 블록 풀 요약
    • 8.15 메모리 블록 풀 제어 블록
    • 8.16 메모리 블록 풀 서비스 요약
    • 8.17 메모리 블록 풀 생성
    • 8.18 메모리 블록 할당
    • 8.19 메모리 블록 풀 제거
    • 8.20 메모리 블록 풀 정보 얻기
    • 8.21 메모리 블록 풀 중지 목록에 우선순위 적용
    • 8.22 메모리 블록 돌려주기
    • 8.23 메모리 블록 풀 예제-스레드 스택 할당
    • 8.24 메모리 블록 풀 내부
    • 8.25 요약 및 비교
    • 8.27 생각해볼 문제
  • 9장 내부 시스템 클럭과 응용 프로그램 타이머
    • 9.1 소개
    • 9.2 내부 시스템 클럭 서비스
    • 9.3 응용 프로그램 타이머 제어 블록
    • 9.4 응용 프로그램 타이머 서비스 요약
    • 9.5 응용 프로그램 타이머 생성
    • 9.6 응용프로그램 타이머 활성화
    • 9.7 응용프로그램 타이머 변경
    • 9.8 응용프로그램 타이머 비활성화
    • 9.9 응용프로그램 타이머 제거
    • 9.10 응용프로그램 타이머 정보얻기
    • 9.11 타이머로 스레드 성능 측정하는 예제 시스템
    • 9.12 09samplesystem.c 예제
    • 9.13 응용프로그램 타이머 내부
    • 9.14 요약
    • 9.15 생각해볼 문제
  • 10장 이벤트 알림과 카운팅 세마포어를 이용한 동기화
    • 10.1 소개
    • 10.2 카운팅 세마포어 제어 블록
    • 10.3 교착 상태 피하기
    • 10.4 우선순위 역전현상 피하기
    • 10.5 카운팅 세마포어 관련 서비스 요약
    • 10.6 카운팅 세마포어 생성
    • 10.7 카운팅 세마포어 제거
    • 10.8 카운팅 세마포어 인스턴스 얻기
    • 10.9 카운팅 세마포어 정보 얻기
    • 10.10 카운팅 세마포어 중지 목록에 우선순위 적용
    • 10.11 카운팅 세마포어 인스턴스 추가
    • 10.12 카운팅 세마포어와 뮤텍스간 비교
    • 10.13 뮤텍스 대신 바이너리 세마포어를 사용하는 예제 시스템
    • 10.14 10asamplesystem.c 예제
    • 10.15 카운팅 세마포어를 사용하는 생산자-소비자 응용프로그램 예제
    • 10.16 10bsamplesystem.c 예제
    • 10.17 카운팅 세마포어 내부
    • 10.18 요약
    • 10.19 생각해볼 문제
  • 11장 이벤트 플래그 그룹으로 스레드 동기화 하기
    • 11.1 소개
    • 11.2 이벤트 플래그 그룹 제어 블록
    • 11.3 이벤트 플래그 그룹 제어 서비스 요약
    • 11.4 이벤트 플래그 그룹 생성
    • 11.5 이벤트 플래그 그룹 제거
    • 11.6 이벤트 플래그 그룹에서 플래그 얻기
    • 11.7 이벤트 플래그 그룹 정보 얻기
    • 11.8 이벤트 플래그 그룹 내 이벤트 플래그 세트하기
    • 11.9 스레드 2개를 동기화하기 위해 이벤트 플래그 그룹을 쓰는 예제 시스템
    • 11.10 11samplesystem.c 예제
    • 11.11 이벤트 플래그 그룹 내부
    • 11.12 요약
    • 11.13 생각해볼 문제
  • 12장 메시지 큐를 통한 스레드간 통신
    • 12.1 소개
    • 12.2 메시지 큐 제어 블록
    • 12.3 메시지 큐 서비스 요약
    • 12.4 메시지 큐 생성
    • 12.5 메시지 큐에 메시지 발신
    • 12.6 메시지 큐에서 메시지 수신
    • 12.7 메시지 큐 제거
    • 12.8 메시지 큐 내용 버리기
    • 12.9 메시지 큐 선두로 메시지 송신
    • 12.10 메시지 큐 정보 얻기
    • 12.11 메시지 큐 중지 목록에 우선순위 적용
    • 12.12 스레드 간 통신에 메시지 큐를 사용하는 예제 시스템
    • 12.13 12samplesystem.c 예제
    • 12.14 메시지 큐 내부
    • 12.15 요약
    • 12.16 생각해볼 문제
  • 13장 ARM 예외 처리
    • 13.1 소개
    • 13.2 스레드X의 ARM 예외 처리 구현
      • 13.2.1 리셋 벡터 초기화
      • 13.2.2 스레드 스케줄링
      • 13.2.3 스레드X 인터럽트 처리
      • 13.2.4 내부 인터럽트 처리
  • 14장 사례 연구: 멀티스레드 시스템 설계
    • 14.1 소개
    • 14.2 문제 정의
    • 14.3 문제 분석
    • 14.4 시스템 설계
      • 14.4.1 스레드 설계
      • 14.4.2 공개 자원 설계
    • 14.5 구현
    • 14.6 VAM 시스템 예제
    • 14.7 요약
  • 부록 소개
  • 부록 A 메모리 블록 풀 서비스
  • A.1 txblockallocate
    • A.2 txblockpool_create
    • A.3 txblockpool_delete
    • A.4 txblockpoolinfoget
    • A.5 txblockpool_prioritize
    • A.6 txblockrelease
  • 부록 B 메모리 바이트 풀 서비스
  • B.1 txbyteallocate
    • B.2 txbytepool_create
    • B.3 txbytepool_delete
    • B.4 txbytepoolinfoget
    • B.5 txbytepool_prioritize
    • B.6 txbytepool_release
  • 부록 C 이벤트 플래그 그룹 서비스
    • C.1 txeventflags_create
    • C.2 txeventflags_delete
    • C.3 txeventflags_get
    • C.4 txeventflagsinfoget
    • C.5 txeventflags_set
  • 부록 D 인터럽트 제어 서비스
    • D.1 txinterruptcontrol
  • 부록 E 뮤텍스 서비스
  • E.1 txmutexcreate
    • E.2 txmutexdelete
    • E.3 txmutexget
    • E.4 txmutexinfo_get
    • E.5 txmutexprioritize
    • E.6 txmutexput
  • 부록 F 메시지 큐 서비스
    • F.1 txqueuecreate
    • F.2 txqueuedelete
    • F.3 txqueueflush
    • F.4 txqueuefront_send
    • F.5 txqueueinfo_get
    • F.6 txqueueprioritize
    • F.7 txqueuereceive
    • F.8 txqueuesend
  • 부록 G 카운팅 세마포어 서비스
    • G.1 txsemaphorecreate
    • G.2 txsemaphoredelete
    • G.3 txsemaphoreget
    • G.4 txsemaphoreinfo_get
    • G.5 txsemaphoreprioritize
    • G.6 txsemaphoreput
  • 부록 H 스레드 서비스
    • H.1 txthreadcreate
    • H.2 txthreaddelete
    • H.3 txthreadidentify
    • H.4 txthreadinfo_get
    • H.5 txthreadpreemption_change
    • H.6 txthreadpriority_change
    • H.7 txthreadrelinquish
    • H.8 txthreadresume
    • H.9 txthreadsleep
    • H.10 txthreadsuspend
    • H.11 txthreadterminate
    • H.12 txthreadtimeslicechange
    • H.13 txthreadwait_abort
  • 부록 I 내부 시스템 클럭 서비스
    • I.1 txtimeget
    • I.2 txtimeset
  • 부록 J 응용프로그램 타이머 서비스
    • J.1 txtimeractivate
    • J.2 txtimerchange
    • J.3 txtimercreate
    • J.4 txtimerdeactivate
    • J.5 txtimerdelete
    • J.6 txtimerinfo_get
  • 부록 K 스레드X API
    • K.1 스레드X 진입
    • K.2 바이트 풀 메모리 서비스
    • K.3 블록 풀 메모리 서비스
    • K.4 이벤트 플래그 그룹 서비스
    • K.5 인터럽트 제어 서비스
    • K.6 메시지 큐 서비스
    • K.7 카운팅 세마포어 서비스
    • K.8 뮤텍스 서비스
    • K.9 스레드 서비스
    • K.10 시각 서비스
    • K.11 응용프로그램 타이머 서비스
  • 찾아보기

관련 블로그 글

스페셜 이슈 12호: 멀티코어 세상, 병렬 프로그래밍

사용자 삽입 이미지

[##_1L|1252311642.jpg|width="110" height="175" alt="사용자 삽입 이미지"|_##]IBM 디벨로퍼 웍스에도 글을 꾸준히 기고해오시고, 저희 에이콘에서 펴낸 『실시간 임베디드 멀티스레딩: 누구나 쉽게 이해할 수 있는 RTOS 멀티스레드 프로그래밍』을 번역하기도 하신 김도형님께서 멀티코어 시대의 개발자 생존전략, 병렬 프로그래밍이라는 밀도 높은 스페셜 이슈 글을 써주셨습니다.
사람이 생각하기 어렵고 자동검증수단도 없는 멀티스레드 프로그래밍. 그리고 내 상식과 다르게 동작하는 컴퓨터. 멀티스레드 프로그래밍은 순차적 사고를 하는 프로그래머에게 상당한 정신적 부담을 줍니다. 멀티코어 프로세서를 장착한 하드웨어가 저렴하게 널리 보급되기 시작한 요즘, 이젠 멀티스레드나 병렬 프로그래밍을 어렵다고 무작정 피할 수만도 없게 됐습니다.
아울러 『멀티코어를 100% 활용하는 자바 병렬 프로그래밍』에 대한 간략한 설명도 덧붙여주셨습니다. 과연 멀티스레드 프로그래밍은 왜 난점은 무엇이며, 난국을 타개하는 해결책은 무엇일지 관심있는 분들께서는 이번 스페셜 이슈 글을 주목해보세요.
사용자 삽입 이미지

이 책이 좋은 이유는 우선 프로그래머의 직관이 아닌 체계적인 절차에 의해 스레드에 안전한 클래스를 작성할 수 있는 방법을 제시한다는 점이다. 체계적이라는 것은 기본 규칙만 서로 공유하면 쉽게 코드의 동기화 구조를 이해하고 검증할 수 있으며 남이 작성한 코드를 수정할 때에도 지켜야 하는 규칙을 쉽게 파악할 수 있다는 뜻이다. 이런 방법을 제시하는데 있어 객체 지향적인 설계를 강력한 도구로 활용한다는 점도 바람직한 점이자 이전의 책들과 다른 점이다.
▷▶ 스페셜 이슈 제12호 글 보러가기
CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

[ p55 아래에서 3행 ]
만약 여러 스레드에서 호출되면 잘못된 포인터를 돌려줄 수도 높다.
→ 만약 여러 스레드에서 호출되면 잘못된 포인터를 돌려줄 수도 있다.

[ p64 6.14절 코드 부분 ]
status = tx_thread_suspend (&some_thread);
→ status = tx_thread_terminate (&some_thread);