Introduction

Park Choong Ho·2021년 8월 9일
0

Introduction

컴퓨터 시스템은 어플리케이션 프로그램을 동작하기 위해 함께 작용하는 하드웨어와 시스템으로 이루어져 있습니다. 특정한 시스템 실행은 변화했기도 하지만, 기초적인 개념은 변하지 않았습니다. 모든 컴퓨터 시스템들은 유사한 기능을 수행하는 하드웨어와 소프트웨어 구성요소를 가지고 있습니다. 이 책은 그러한 구성요소들이 어떻게 동작하는지 그리고 그들이 프로그램의 정확성과 퍼포먼스에 어떤 영향을 끼치는지를 이해함으로써 프로그래머들을 공학적으로 더 성장할 수 있게 합니다.

긴 여행을 떠날 준비가 되었습니다. 만약 이 책을 읽는데 최선을 다한다면, 정말 실력있는 파워 프로그래머가 될 수 있습니다.

여기서 우리는 여러가지를 배우게 될 것입니다. 예시를 몇가지 들자면

  1. 컴퓨터가 숫자를 표현하는 방법으로 인해 발생하는 이상한 오류들을 피할 실제적인 기술
  2. 현대 프로세서와 메모리 시스템 디자인을 활용한 영리한 트릭을 통해 C 코드를 최적화 하는 법
  3. 컴파일러가 프로시저 콜을 실행하는 방법, 그리고 그 방법을 활영해 네트워크와 인터넷 소프트웨어에서 발생하는 버퍼 오버플로우 같은 보안 취약성을 회피하는 방법
  4. 평균적인 프로그래머들을 괴롭히는 링킹 에러를 인지하고 피하는 방법
  5. 자기 자신만의 유닉스 쉘, 동적 메모리 패키지, 웹서버등을 작성하는 법
  6. 최근 여러 프로세서들이 하나의 칩으로 통합됨으로써 중요시되는 concurrency의 promises와 pitfalls

커니건과 리치는 독자들에게 hello program을 통해 C언어를 소개합니다. hello program이 매우 단순해 보이지만, 시스템의 모든 주요 요소들은 이를 완성시키기 위해 협력해야만 합니다. 이 책의 목표는 hello 프로그램을 언제왜 동작시키고 무엇이 일어나는지를 이해하는 것을 돕는 것입니다.

우리는 hello 프로그램의 수명을 따라감으로써 시스템 공부를 시작해 보려고 합니다. hello 프로그램은 프로그래머에 의해 생성되고 시스템에서 동작하고 간단한 메시지를 출력한 후 종료됩니다. 이 프로그램의 여정을 따라감으로써 우리는 주요 콘셉트와 용어들을 소개해보도록 하겠습니다. 향후 장들은 이 개념들을 확장할 것입니다.

#include <stdio.h>

int main() {
	printf("hello, world\n");
	return 0;
}
profile
백엔드 개발자 디디라고합니다.

0개의 댓글