장바구니 담기 close

장바구니에 상품을 담았습니다.

유닉스 시스템 프로그래밍

유닉스 시스템 프로그래밍

  • 아담 후버
  • |
  • 비팬북스
  • |
  • 2011-09-30 출간
  • |
  • 377페이지
  • |
  • 180 X 235 X 30 mm /710g
  • |
  • ISBN 9788994797021
판매가

25,000원

즉시할인가

22,500

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
22,500

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

이 책은 유닉스와 리눅스 환경에서 시스템 프로그래밍을 배우려는 이들을 위한 책이다. 사용 언어는 C이며, 독자들이 최소한 C 기본 문법은 안다는 가정 하에서 내용을 전개하고 있다. 난이도는 아주 어렵지도 않고 아주 쉽지도 않다. 그래서 강의를 한다면 한 학기 교재로 사용하기 적절하고, 독학을 한다면 시스템 프로그램 전반에 대해서 알 수 있는 책이다. 책의 전반부에서는 시스템 프로그래밍을 익힐 때 가장 많이 활용되는 배열, 스트링, 포인터, 구조체 등을 전체적으로 다시 짚어준다. 그리고 시스템 프로그래밍의 핵심 요소인 입출력, 시스템 호출, 프로그램 관리 방법, 라이브러리를 설명한다. 마지막으로 시스템 프로그램을 강화할 수 있는 스크립트 언어에 대해 설명한다. 각 장의 마지막에는 연습문제가 수록되어 있어서 개인별/팀별 프로젝트에 활용할 수 있다.

본 책은 독자가 시스템 프로그래밍의 도구와 리소스를 보다 효과적으로 다루어 프로그램을 작성케 하는 것이 목표다. 라이브러리는 무엇이고 어떻게 쓰는가? 디버거는 무엇이고 개발 때 어떤 도움을 주나? 스크립트 언어란 무엇이고 언제 유용한가? 시스템 콜이란 무엇이고 언제 유용한가? 혹자는 GUI 환경보다 쉘 환경을 더 좋아하는데 그 이유는 무엇일까? 본 책으로 시스템 프로그램을 공부하면 질문에 답할 수 있을 것이다.
시스템 프로그램과 함께 이 책은 저수준 데이터 타입에 대해서도 다룬다. 비트, 바이트, 비트 연산, 배열, 스트링, 구조체와 포인터를 다룬다. 이런 류는 메모리에 대해 논할 때 살펴보고 언제 어떻게 사용되는지도 알아볼 것이다. 메모리 레벨에서 코드를 이해하는 것이 보다 고급 주제의 프로그래밍 개념을 잡을 때 도움이 된다. 저수준 데이터 타입을 다루면서 이전에 배웠던 내용을 보다 확실히 이해할 것이다. 점점 수준을 높여가며 프로그램을 익히게 하여 책에서 다룬 주제를 확실히 알고 사용할 수 있게 하였다. (저자 서문 중에서)

시스템을 이해해야 이를 활용할 수 있다. 이는 당연한 말입니다. 하지만 이 당연한 말을 잊고 사는 것 같다는 생각이 듭니다. 취업을 위해서 C를 해야 하나요 자바를 해야 하나요라고 묻는 후배들을 볼 때 C나 자바보다 시스템을 아는 것이 중요하다고 얘기해 줍니다. C나 자바라는 언어는 시스템의 자원을 가져다가 쓰게 해 주는 방법입니다. 프로세스를 만들고 쓰레드를 만들고 네트워크를 통한 데이터를 전송하는 것은 결국 시스템의 자원을 활용하는 것입니다. 프로그램을 처음 만들 때는 시스템에 대해 별 고민 없이 만들지 모르지만 점점 더 대규모의 프로그램을 만들어야 하는 상황이 오게 되면 가장 효과적인 방법을 고민해야 하고 한계가 무엇인지 알아야 합니다. 이것은 시스템을 이해할 때 가능한 것입니다. 기본을 잘 해야 깊이 있는 프로그래머가 될 수 있습니다. 본 책은 시스템 프로그램에 대해 쉽고 체계적으로 설명하고 있습니다. 개념과 필요성 그리고 간결한 예제로 설명하고 있습니다. 특히 처음 시작하는 사람들이 어려워하는 포인터나 메모리 개념을 메모리 맵을 활용하여 잘 설명하고 있는 것이 인상적입니다. 본 책을 통해 시스템을 보는 눈의 폭이 넓어질 뿐 아니라 구현을 할 때도 도움이 되리라 생각합니다. (역자 서문 중에서)

목차

1장 소개
1.1 시스템 프로그래밍
1.1.1. 필요한 배경 지식
1.1.2 왜 Unix인가?
1.1.3 왜 C인가?
1.2 세 가지 툴
1.2.1 쉘
1.2.2 텍스트 에디터
1.2.3 디버거
1.2.4 통합 개발 환경(IDE)
1.3 디버깅 방법
1.3.1 프로그램 크래시
1.3.2 무한 루프에 빠졌을 때
1.3.3 프로그램의 부분 실행
1.3.4 루프가 오동작할 때
1.4 프로그램 개발
1.5 C의 리뷰
1.5.1 기본 데이터 타입
1.5.2 기본 수치 연산
1.5.3 루프
1.5.4 조건문과 블록
1.5.5. 흐름 제어
연습 문제

2장 비트, 바이트, 데이터 타입
2.1 비트 모델
2.1.1 magnitude-only 비트 모델
2.1.2 sign-magnitude 비트 모델
2.1.3 2의 보수 비트 모델
2.1.4 부동 소수점 비트 모델
2.1.5 ASCII와 유니코드 비트 모델
2.1.6. 비트 모델 요약
2.2 비트 연산
2.2.1 이진 논리 연산
2.2.2 비트 연산자
2.2.3 비트마스크 연산7
2.3 메모리 맵
연습 문제

3장 배열과 스트링
3.1 배열
3.1.1 다차원 배열
3.2 스트링2
3.2.1 다차원 스트링
3.3 스트링 라이브러리 함수
3.3.1 스트링 길이: strlen()
3.3.2 스트링 비교: strcmp()
3.2.3 스트링 복사: strcpy()
3.3.4 스트링 연결하기: strcat()
3.3.5 스트링 출력: sprint()
3.3.6 스트링 함수 예제
3.3.7 라이브러리로 해결할 수 없는 문제들
3.4 커맨드 라인 인자
연습 문제

4장 포인터와 구조체
4.1 포인터
4.1.1. 포인터 연산
4.2 포인터 사용
4.2.1 함수의 값을 되돌려 주기
4.2.2 포인터와 배열
4.2.3 동적 메모리 할당
4.2.4 이중 포인터
4.3 구조체
4.4 구조체 사용
4.4.1 배열과 구조체
4.4.2 정의와 스코프
4.4.3 중첩 구조체
4.4.4 포인터와 구조체
연습 문제

5장 입출력
5.1 스트림
5.1.1 스트림을 통한 바이트 이동
5.1.2 시스템 입출력 함수
5.1.3 표준 스트림
5.2. 버퍼
5.3 파이프
5.3.1 파이프라인 체인
5.3.2 프로그램 테스트
5.4 파일
5.4.1 파일 포인터
5.4.2 파일 속성
5.4.3 디렉토리
5.5 디바이스
5.5.1 디바이스 드라이버
연습 문제

6장 프로그램 관리
6.1 프로그램 빌딩
6.1.1 목적 코드와 링크
6.1.2 컴파일
6.1.3 Makefiles
6.1.4 기타 빌드 툴
6.2 코드 구성
6.2.1 함수
6.2.2 다중 파일
6.2.3 변수 스코프
6.2.4 주석, 들여쓰기, 변수 이름
6.2.5 전처리
6.2.6 typedef
6.2.7 토론
6.3 프로그램 배포 방법
6.3.1 아카이브
6.3.2 패키지
연습 문제

7장 시스템 콜
7.1 오퍼레이션 패밀리
7.2 라이브러리와 시스템 콜
7.3 프로세스 시스템 콜
7.3.1 프로세스
7.3.2 fork()
7.3.3 exec() 류
7.3.4 wait()
7.4 시그널 시스템 콜
7.4.1 signal()
7.4.2 kill()
7.5 소켓 시스템 콜
7.5.1 네트워크 개념과 시스템 명령
7.5.2 클라이언트 서버 모델
7.5.3 예제
연습 문제

8장 라이브러리
8.1 라이브러리 사용
8.1.1 헤더 파일
8.1.2 라이브러리 파일
8.2 라이브러리의 목적
8.3 C 표준 라이브러리
8.4 Curses 라이브러리
8.4.1 I/O 콘트롤
8.4.2 동적 그래픽
8.5 X 라이브러리
8.5.1 윈도우
8.5.2 2차원 그래픽
8.5.3 그래픽 속성
8.5.4 사용자 입력
8.5.5 폰트
8.6 라이브러리 만들기
8.7 라이브러리의 함정
연습 문제

9장 스크립트 언어
9.1 스크립트 언어를 시작하며
9.2 쉘 스크립트
9.2.1 입력/출력
9.2.2 변수
9.2.3 루프
9.2.4 조건문
9.2.5 쉘 외부 프로그램
9.2.6 기타 기능
9.3 펄
9.3.1 입/출력
9.3.2 변수
9.3.3 루프와 조건문
9.3.4 패턴 대체
9.3.5 기타
9.4 MATLAB
9.4.1 입출력
9.4.2 변수
9.4.3 반복문과 조건문
9.4.4 내장 수학 함수
9.4.5 그리기
9.4.6 기타 기능
9.5 토론
연습 문제
부록 A ASCII 표
부록 B 공통 쉘 명령어
부록 C 시스템 프로그램
찾아보기

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.