본문 바로가기

CS/CS Book

[컴퓨터 시스템 딥다이브] ch00, 01 시작하며, C 프로그래밍 기초

이 글은 컴퓨터 시스템 딥다이브(수잰 J. 매슈스, 한빛미디어 2024)를 읽고 적은 글입니다.

ch00 시작하며

컴퓨터 시스템이 무엇인지 소개하고 시작한다.

컴퓨터 구조, 컴퓨터 시스템, 시스템 프로그래밍, 운영체제

컴퓨터 구조와 운영체제는 확실하게 구분되었었지만

컴퓨터 구조, 컴퓨터 시스템, 시스템 프로그래밍의 경우 개인적으로 구분이 모호했었다.

책에서는 컴퓨터 시스템

하드웨어(CPU, RAM, DISK) + 운영체제라며 확실하게 범위를 명시해 준다.

 

범용성에 중점을 둔다 하며 그 의미는 재사용이 가능하다는 의미라 한다.

하드웨어와 시스템 소프트웨어(운영체제)에 바뀌더라도 프로그램의 실행을 지원한다.

 

현대 컴퓨터 소개에 데스크탑, 랩탑을 넘어서 라즈베리파이까지 소개해주어 좋았다.

라즈베리파이의 경우 SBC(SIngle Board Computer), SoC(system-on-a-chip)이라 부른다거나 모르던 용어들을 소개해주어 배울 수 있었다.

ch01 C 프로그래밍 기초

여러 고수준 프로그래밍 언어들 C, python, ruby 등을 언급하면서 C언어의 차이점을 알려준다.

C는 프로그램이 메모리를 관리하는 방법을 더 많이 제어할 수 있어 성능에 더 영향을 미치게 한다는 점과

 

이러한 특성으로 C는 사실상 저수준의 제어와 효율성이 중요한 컴퓨터 시스템 프로그램을 위한 언어라는 점이다.

책에서는 같은 동작을 하는 파이썬 코드와 C언어 코드를 같이 비교하며 동작에 관한 이미지와 함께 소개해주어 C에 좀 더 쉽게 접근할 수 있게 도와준다.

 

C언어 문법과 call by value, call by reference에 관해 전반적인 부분과 내부에서는 어떻게 동작하는지 설명해 준다.

스택 프레임이라거나 lvalue의 의미와 에러가 날 수 있는 경우까지 알려주어서 문법 책 보다 더 깊이 알 수 있어 좋다.

 

함수가 메모리 스택에 담긴다는 것은 알았지만 스택에 담기는 함수나 변수가 쌓일 때 틀을 스택 프레임이라 하는지는 잘 몰랐었는데 책을 읽으며 확실히 알 수 있어 좋았다.

스택이 프링글스 1 통이라 치면 스택에 올라가는 스택 프레임은 프링글스 칩 1개로 볼 수 있을 거 같다.

아래 그림의 경우 stack이 거꾸로 쌓인다.

함수 호출이 어떻게 되는지 이미지로 보며 시뮬레이션해볼 수 있는 https://pythontutor.com/visualize.html라는 사이트이다.