logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

C++ 병렬.분산 프로그래밍

C++ 병렬.분산 프로그래밍

(칠판 구조와 다중 에이전트 시스템 위주의)

Cameron Hughes, Tracey Hughes (지은이), 류광 (옮긴이)
  |  
정보문화사
2008-11-20
  |  
30,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

C++ 병렬.분산 프로그래밍

책 정보

· 제목 : C++ 병렬.분산 프로그래밍 (칠판 구조와 다중 에이전트 시스템 위주의)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > C++
· ISBN : 9788956744513
· 쪽수 : 795쪽

목차

제1장 동시적 프로그래밍의 즐거움
1.1 동시성이란 무엇인가?
1.1.1 동시성 달성을 위한 기본적인 접근방식 두 가지
1.2 병렬 프로그래밍의 이점
1.2.1 가장 단순한 병렬 모형: PRAM
1.2.2 가장 간단한 병렬 분류법
1.3 분산 프로그래밍의 이점
1.3.1 가장 단순한 분산 프로그래밍 모형
1.3.2 다중 에이전트(동위간) 분산 모형
1.4 필요한 최소의 노력
1.4.1 분해
1.4.2 통신
1.4.3 동기화
1.5 소프트웨어 동시성의 기본 계층들
1.5.1 명령 수준의 동시성
1.5.2 루틴 수준의 동시성
1.5.3 객체 수준의 동시성
1.5.4 응용프로그램의 동시성
1.6 C++은 병렬성을 위한 키워드를 제공하지 않는다
1.6.1 C++로 병렬성을 구현하는 데 사용할 수 있는 수단들
1.6.2 MPI 표준
1.6.3 PVM: 클러스터 프로그래밍의 한 표준
1.6.4 CORBA 표준
1.6.5 표준에 기초한 라이브러리 구현들
1.7 병렬 및 분산 프로그래밍을 위한 프로그래밍 환경들
요약 - 동시성을 향해

제2장 병렬 및 분산 프로그래밍의 어려움
2.1 패러다임의 대전환
2.2 중재 문제
2.3 하드웨어가 고장나거나 소프트웨어가 종료되기도 한다
2.4 과도한 병렬화나 분산이 부정적인 결과를 내기도 한다
2.5 적합한 아키텍처를 선택하려면 연구가 필요하다
2.6 다른 종류의 검사 및 디버깅 기법들이 필요하다
2.7 병렬 또는 분산 설계의 의사소통이 필요하다
요약

제3장 C++ 프로그램을 여러 개의 태스크들로 분할하기
3.1 프로세스의 정의
3.1.1 두 종류의 프로세스
3.1.2 프로세스 제어 블록
3.2 프로세스의 해부
3.3 프로세스 상태
3.4 프로세스 스케줄링
3.4.1 스케줄링 정책
3.4.2 ps 유틸리티 사용법
3.4.3 프로세스 우선순위 설정 및 조회
3.5 문맥 전환
3.6 프로세스 생성
3.6.1 프로세스들의 부모-자식 관계
3.6.1.1 pstree 유틸리티
3.6.2 시스템 함수 fork()
3.6.3 exec류 시스템 함수들
3.6.3.1 execl() 함수들
3.6.3.2 execv() 함수들
3.6.3.3 exec()류 함수들에 대한 제약 파악
3.6.3.4 환경 변수 읽고 쓰기
3.6.4 system() 함수로 프로세스 생성하기
3.6.5 POSIX 함수들로 프로세스 생성하기
3.6.6 프로세스 관리 함수들로 부모 및 자식 프로세스 식별하기
3.7 프로세스 종료하기
3.7.1 시스템 함수 exit(), kill(), abort()
3.8 프로세스 자원
3.8.1 자원의 종류
3.8.2 자원 한계를 설정하는 POSIX 함수들
3.9 비동기 프로세스와 동기 프로세스
3.9.1 fork(), exec(), system(), posix_spawn() 함수를 이용한 동기 및 비동기 프로세스 생성
3.9.2 wait() 함수 호출
3.10 프로그램을 여러 태스크들로 분할하기
3.10.1 함수 또는 객체에 의한 프로세스 생성
요약

제4장 C++ 프로그램을 여러 개의 스레드들로 분할하기
4.1 스레드의 정의
4.1.1 스레드 문맥 요구사항
4.1.2 스레드와 프로세스의 비교
4.1.2.1 주소 공간 공유
4.1.2.2 다른 스레드의 제어
4.1.3 스레드의 장점
4.1.3.1 좀 더 가벼운 문맥 전환
4.1.3.2 더 나은 산출량
4.1.3.3 동시에 수행되는 부분들 사이의 좀 더 간단한 의사소통
4.1.3.4 프로그램 구조의 단순화
4.1.4 스레드의 단점
4.1.4.1 스레드는 프로세스의 자료를 망치기 쉽다
4.1.4.2 잘못된 스레드 하나가 프로그램 전체를 죽일 수 있다
4.1.4.3 스레드는 다른 프로그램에서 재사용할 수 없다
4.2 스레드의 해부
4.2.1 스레드 특성들
4.3 스레드 스케줄링
4.3.1 스레드 상태
4.3.2 스케줄링과 스레드 경쟁 범위
4.3.3 스케줄링 정책과 우선순위
4.3.3.1 스레드 우선순위의 변경
4.4 스레드 자원
4.5 스레드 모형
4.5.1 위임 모형
4.5.2 동급간 모형
4.5.3 파이프라인 모형
4.5.4 생산자-소비자 모형
4.5.5 스레드 모형의 SPMD와 MPMD
4.6 Pthreads 라이브러리 소개
4.7 간단한 다중 스레드 프로그램의 해부
4.7.1 다중 스레드 프로그램의 컴파일과 링크
4.8 Pthreads 라이브러리로 스레드 만들기
4.8.1 스레드 ID 얻기
4.8.2 스레드 결합
4.8.3 탈착된 스레드 생성
4.8.4 Pthreads 특성 객체
4.8.4.1 Pthreads 특성 객체를 이용해서 탈착된 스레드 만들기
4.9 스레드 관리
4.9.1 스레드의 종료
4.9.1.1 취소 지점
4.9.1.2 종료 이전의 마무리 작업
4.9.2 스레드 스택 관리
4.9.3 스레드 스케줄링 정책과 우선순위 설정
4.9.3.1 스레드의 경쟁 범위 설정
4.9.4 sysconf() 함수
4.9.5 임계 영역의 관리
4.10 스레드 안전성과 라이브러리
4.11 프로그램을 여러 스레드들로 분할하기
4.11.1 위임 모형
4.11.2 동급간 모형
4.11.3 파이프라인 모형
4.11.4 생산자-소비자 모형
4.11.5 다중 스레드 객체 만들기
요약

제5장 동시에 수행되는 태스크들의 동기화
5.1 수행 순서의 중재
5.1.1 동기화되는 태스크들 사이의 관계
5.1.2 시작-시작 관계
5.1.3 완료-시작 관계
5.1.4 시작-완료 관계
5.1.5 완료-완료 관계
5.2 자료 접근의 동기화
5.2.1 PRAM 모형
5.2.1.1 동시 및 독점 메모리 접근
5.3 세마포와 동기화 메커니즘들
5.3.1 세마포 연산
5.3.2 뮤텍스 세마포
5.3.2.1 뮤텍스 특성 객체
5.3.2.2 뮤텍스 세마포를 이용한 임계 영역 보호
5.3.3 읽기-쓰기 자물쇠
5.3.3.1 읽기-쓰기 자물쇠를 이용한 접근 정책 구현
5.3.4 조건 변수
5.3.4.1 조건 변수를 이용한 동기화 관계의 관리
5.4 동기화: 객체지향적 접근
요약

제6장 PVM을 이용한 C++ 병렬 프로그래밍
6.1 PVM이 지원하는 고전적인 병렬성 모형들
6.2 C++용 PVM 라이브러리
6.2.1 C++/PVM 프로그램의 컴파일과 링크
6.2.2 PVM 프로그램을 독립적으로 실행
6.2.2.1 PVM 콘솔로 PVM 프로그램을 실행
6.2.2.2 XPVM을 이용해서 PVM 프로그램을 실행
6.2.3 PVM의 운용에 필요한 설정 사항들
6.2.4 C++ 런타임 라이브러리와 PVM 라이브러리의 결합
6.2.5 PVM 태스크들의 구성
6.2.5.1 PVM과 C++을 이용한 SPMD(SIMD) 모형의 구현
6.2.5.2 PVM과 C++을 이용한 MPMD(MIMD) 모형의 구현
6.3 PVM의 기본적인 작동 방식
6.3.1 프로세스 관리 및 제어 함수들
6.3.2 메시지 포장과 전송
6.4 PVM 태스크에서 표준 입력(stdin)과 표준 출력(stdout) 사용하기
6.4.1 자식 태스크의 표준 출력 가로채기
요약

제7장 오류 처리, 예외, 소프트웨어 신뢰성
7.1 소프트웨어 신뢰성이란?
7.2 소프트웨어 계층들과 하드웨어 구성요소들의 실패
7.3 결함의 정의는 소프트웨어 명세에 따라 다르다
7.4 결함과 예외의 구분
7.5 소프트웨어 신뢰성을 위한 간단한 계획 하나
7.5.1 계획 A: 재개 모형, 계획 B: 종료 모형
7.6 오류 처리에서 map 객체 활용하기
7.7 C++의 예외 처리 메커니즘
7.7.1 C++ 표준 예외 클래스
7.7.1.1 runtime_error 클래스들
7.7.1.2 logic_error 클래스들
7.7.1.3 새 예외 클래스의 파생
7.7.1.4 예외 클래스가 예외를 던지지 않게 하는 방법
7.8 사건 다이어그램, 논리 표현식, 논리 다이어그램
요약

제8장 C++을 이용한 분산 객체지향 프로그래밍
8.1 작업의 분해 및 캡슐화
8.1.1 분산 객체들 사이의 통신
8.1.2 지역 객체와 원격 객체의 상호작용 동기화
8.1.3 분산 환경에서의 오류 및 예외 처리
8.2 다른 주소 공간에 있는 객체에 접근하기
8.2.1 원격 객체에 대한 IOR 접근
8.2.2 ORB
8.2.3 IDL과 CORBA 객체
8.3 기본적인 CORBA 소비자 프로그램의 해부
8.4 CORBA 생산자 프로그램의 해부
8.5 CORBA 응용프로그램의 기본 청사진
8.5.1 IDL 컴파일러
8.5.2 원격 객체의 IOR 얻기
8.6 명명 서비스
8.6.1 명명 서비스 활용 및 명명 문맥의 생성
8.6.2 명명 서비스 소비자/클라이언트
8.7 객체 적응자
8.8 구현 저장소와 인터페이스 저장소
8.9 CORBA를 이용한 간단한 분산 웹 서비스
8.10 교역 서비스
8.11 클라이언트/서버 패러다임
요약

제9장 템플릿과 MPI를 이용한 SPMD와 MPMD
9.1 MPI를 위한 작업 분할 구조
9.1.1 등급에 따른 태스크 차별화
9.1.2 통신자를 기준으로 한 태스크 그룹 분류
9.1.3 MPI 태스크의 해부
9.2 템플릿 함수를 이용한 MPI 태스크 구현
9.2.1 템플릿을 이용해서 서로 다른 형식의 자료를 다루는 SPMD 구현
9.2.2 다형성을 이용한 MPMD의 구현
9.2.3 함수 객체를 이용한 MPMD 구현
9.3 MPI 통신의 단순화
9.3.1 MPI 통신을 위한 <<, >> 연산자의 중복적재
요약

제10장 동시·분산 시스템 설계의 시각화
10.1 구조의 시각화
10.1.1 클래스와 객체
10.1.1.1 특성과 서비스 명세
10.1.1.2 특성과 서비스의 순서
10.1.1.3 템플릿 클래스
10.1.2 클래스와 객체의 관계 표현
10.1.2.1 인터페이스 클래스
10.1.3 상호작용적인 객체들의 조직화
10.2 동시적 행동의 시각화
10.2.1 협동 객체
10.2.1.1 프로세스와 스레드
10.2.1.2 다수의 제어 흐름들과 통신들의 표현
10.2.2 객체들 사이의 메시지 시퀀스
10.2.3 객체의 활동
10.2.4 상태기계
10.2.4.1 동시적인 하위상태들
10.2.5 배치 다이어그램
10.3 시스템 전체의 시각화
10.3.1 시스템 배치의 시각화
10.3.2 시스템 아키텍처의 시각화
요약

제11장 동시성을 지원하는 구성요소의 설계
11.1 인터페이스 클래스의 활용
11.2 객체지향적 뮤텍스와 인터페이스 클래스
11.2.1 동시성을 지원하는 덜 두터운 인터페이스
11.3 스트림 비유의 유지
11.3.1 PVM 스트림에 대한 <<, >> 연산자의 중복적재
11.4 PVM 스트림에 사용할 사용자 정의 클래스의 설계
11.5 저수준 구축 요소로서의 객체지향적 파이프와 FIFO
11.5.1 파일 서술자를 이용해서 파이프를 iostream 객체에 붙이기
11.5.2 ostream_iterator를 이용한 익명 파이프 접근
11.5.3 FIFO(명명된 파이프), iostream, ostream_iterator 클래스들
11.5.3.1 FIFO 인터페이스 클래스
11.6 동시성을 지원하는 프레임워크 클래스 구성요소
요약

제12장 에이전트 지향적 아키텍처의 구현
12.1 에이전트란 무엇인가?
12.1.1 에이전트의 첫 번째 정의
12.1.2 에이전트의 종류
12.1.3 객체와 에이전트의 차이
12.2 에이전트 지향적 프로그래밍이란 무엇인가?
12.2.1 분산 프로그래밍에서 에이전트가 유용한 이유
12.2.2 에이전트와 병렬 프로그래밍
12.3 에이전트의 기본 구성요소
12.3.1 인지적 자료구조
12.3.1.1 추론 메서드
12.4 C++로 에이전트 구현하기
12.4.1 명제 자료형식과 믿음 자료구조
12.4.2 에이전트 클래스
12.4.2.1 에이전트 루프
12.4.2.2 에이전트의 추론 메서드
12.4.3 간단한 자율성
12.5 다중 에이전트 시스템
요약

제13장 PVM, 스레드, C++ 구성요소를 이용한 칠판 아키텍처
13.1 칠판 모형
13.2 여러 가지 칠판 구조화 방식
13.3 지식원의 해부
13.4 칠판 제어 전략
13.5 CORBA 객체를 이용한 칠판 구현
13.5.1 CORBA 칠판의 예
13.5.2 black_board 인터페이스 클래스의 구현
13.5.3 칠판 생성자에서 지식원들을 생성, 실행
13.5.3.1 PVM 태스크를 이용한 지식원 실행
13.5.3.2 칠판과 지식원들을 연결하기
13.5.3.3 posix_spawn 함수를 이용한 지식원 실행
13.6 전역 객체를 이용한 칠판 구현
13.7 Pthreads를 이용한 지식원 활성화
요약

부록 A UML 다이어그램
A.1 클래스 다이어그램과 객체 다이어그램
A.2 상호작용 다이어그램
A.2.1 협동 다이어그램
A.2.2 시퀀스 다이어그램
A.2.3 활동 다이어그램
A.3 상태 다이어그램
A.4 패키지 다이어그램

부록 B 시스템 인터페이스 레퍼런스
참고문헌
찾아보기

저자소개

류광 (옮긴이)    정보 더보기
IT 전문서를 주로 번역하는 전업 번역가로, 《컴퓨터 프로그래밍의 예술(The Art of Computer Programming)》 시리즈와 《Game Programming Gems》 시리즈, 《인공지능: 현대적 접근방식 제4판》, 《자바스크립트로 배우는 SICP》를 비롯해 80권 이상의 다양한 IT 전문서를 우리말로 옮겼다. 홈페이지 류광의 번역 이야기(http://occamsrazr.net)와 IT 및 게임 개발 정보 공유 사이트 GpgStudy(http://gpgstudy.com)를 운영한다.
펼치기
이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책