27.08.2015 Views

리눅스 시스템 프로그래밍-미리보기

커널과 C 라이브러리로 풀어가는(개정2판) 로버트 러브 저/김영근 역 | 한빛미디어 | 2015년 01월 35,000원

커널과 C 라이브러리로 풀어가는(개정2판)
로버트 러브 저/김영근 역 | 한빛미디어 | 2015년 01월
35,000원

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

나은 성능을 이끌어 낼 수 있다.<br />

애플리케이션 <strong>프로그래밍</strong>에서는 트렌드가 변화하고 있음에도 유닉스와 <strong>리눅스</strong> 코드의 대부분<br />

은 <strong>시스템</strong> 레벨에서 작성된다. 이 코드들은 대부분 C와 C++이며 C 라이브러리와 커널에서 제<br />

공하는 인터페이스를 사용하고 있다. 이런 전통적인 <strong>시스템</strong> <strong>프로그래밍</strong>의 대표적인 예는 아파<br />

치 웹 서버, 이맥스 Emacs 편집기, vim 편집기, bash 셸, X 윈도우 <strong>시스템</strong>, cp, init, gcc, gdb,<br />

glibc, ls, mv가 있으며 단기간 안에 사라지지 않을 것들이다.<br />

<strong>시스템</strong> <strong>프로그래밍</strong> 범주에는 커널이나 디바이스 드라이버 개발이 포함된다. 이 책은 다른 대부<br />

분의 <strong>시스템</strong> <strong>프로그래밍</strong> 서적과 마찬가지로 커널 개발을 다루지 않는다. 대신, 커널 위에 존재<br />

하는 사용자 영역에서의 <strong>시스템</strong> <strong>프로그래밍</strong>에 중점을 두고 있다. (물론 커널 내부에 대한 지식<br />

은 이 책에서 다루는 내용을 보완하기에 훌륭한 주제다.) 디바이스 드라이버 개발에 대한 내용<br />

은 무척 방대하므로 해당 주제를 전문으로 다루는 서적을 참고하자.<br />

<strong>시스템</strong> 레벨 인터페이스란 무엇이며 <strong>리눅스</strong>에서 어떻게 <strong>시스템</strong> 레벨 애플리케이션을 작성할<br />

수 있을까? 커널과 C 라이브러리는 정확히 무엇을 제공하나? 최적의 코드를 작성하려면 어떻<br />

게 해야 하고 <strong>리눅스</strong>에서는 어떤 방법을 제공하나? 다른 유닉스 <strong>시스템</strong>과 비교했을 때 <strong>리눅스</strong><br />

에서만 제공하는 <strong>시스템</strong> 콜은 무엇인가? 이 모든 것은 어떤 방식으로 동작하나? 이 책에서는<br />

이 모든 질문에 대한 답을 다루고 있다.<br />

1.1.2 <strong>시스템</strong> <strong>프로그래밍</strong>의 주춧돌<br />

<strong>리눅스</strong> <strong>시스템</strong> <strong>프로그래밍</strong>을 떠받치고 있는 주춧돌은 <strong>시스템</strong> 콜, C 라이브러리, C 컴파일러 이<br />

세 가지다. 각각에 대해서 간략히 알아보자.<br />

1.1.3 <strong>시스템</strong> 콜<br />

<strong>시스템</strong> <strong>프로그래밍</strong>은 <strong>시스템</strong> 콜에서 시작해서 <strong>시스템</strong> 콜로 끝난다. <strong>시스템</strong> 콜**이란 운영체제<br />

에 리소스나 서비스를 요청하려고 사용자 영역(텍스트 편집기나 게임 같은)에서 시작해서 커널<br />

내부로 들어가는 함수 호출이다. <strong>시스템</strong> 콜에는 read(), write() 같은 익숙한 함수에서부터<br />

** System Call. 줄여서 syscall이라고도 한다<br />

1장 핵심 개념 소개<br />

33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!