CSAPP 9

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.9 마지막

해당 단윈을 마무리 하면서, 컴퓨터 시스템 전반에 걸쳐 적용되는 핵심적인 주제들을 다뤄봤습니다. 시스템은 단순히 하드웨어의 집합이 아니라, 애플리케이션 프로그램을 실행하기 위해 하드웨어와 시스템 소프트웨어가 긴밀하게 협력하는 집합체라는 것을 알 수 있었습니다.이 장을 마무리하면서 컴퓨터 시스템의 모든 측면에 걸쳐 공통적으로 중요한 몇 가지 개념을 강조하고자 합니다. 1. 암달의 법칙 (Amdahl's Law)초기 컴퓨팅의 선구자인 진 암달(Gene Amdahl)이 제안한 원리로, 시스템의 특정 부분의 성능을 향상시켰을 때 전체 시스템 성능에 미치는 영향은 그 부분이 전체에서 차지하는 비중(α)과 속도 향상 비율(k)에 따라 결정된다는 법칙입니다. 이 법칙이 주는 가장 중요한 통찰은 전체 시스템의 속도를 ..

CSAPP 2026.04.20

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.8 Systems Communicate with Other Systems Using Networks

1.8 Systems Communicate with Other Systems Using Networks 1.8 시스템은 네트워크를 사용하여 다른 시스템과 통신한다 지금까지 시스템 투어에서 우리는 시스템을 하드웨어와 소프트웨어의 독립적인 집합체로 다루었습니다. 하지만 실제로 현대 시스템들은 종종 네트워크를 통해 다른 시스템들과 연결됩니다. 네트워크는 또 하나의 I/O 장치 개별 시스템의 관점에서 볼 때, 네트워크는 그림 1.14에서 보여지듯이 또 다른 I/O 장치로 볼 수 있습니다. 시스템이 메인 메모리에서 네트워크 어댑터( 랜 카드 )로 일련의 바이트를 복사할 때, 데이터는 예를 들어 로컬 디스크 드라이브가 아닌 네트워크를 통해 다른 기계로 전송됩니다. ..

CSAPP 2025.09.24

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.7 The Operating System Manages the Hardware

1.7 The Operating System Manages the Hardware1.7 운영 체제가 하드웨어를 관리한다 우리의 hello 예시로 돌아가 보겠습니다.쉘이 hello 프로그램을 로드하고 실행했을 때, 그리고 hello 프로그램이 실행하여 메시지를 출력했을 때, 두 프로그램(쉘 프로그램과 hello 프로그램) 모두 키보드, 디스플레이, 디스크, 메인 메모리에 직접 접근하지 않았습니다. ▶ hello 프로그램이 운영 체제의 서비스를 이용하여 하드웨어 자원에 접근하고 있습니다. 1. 프로세서가 메모리에서 명령어를 읽고, 명령어를 실행하는 과정이 이루어집니다.2. 프로그램 카운터(PC)는 메모리 내에서 첫 번째 명령어의 위치를 가리키며, 프로세서는 차례대로 명령어를 실행합니다.3. hello 프로그..

CSAPP 2025.04.21

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.6 Storage Devices Form a Hierarchy

1.6 Storage Devices Form a Hierarchy1.6 저장 장치는 계층 구조를 이룬다 캐시 메모리를 프로세서와 메인 메모리 사이에 배치하여, 프로세서가 자주 사용하는 데이터를 빠르게 접근할 수 있게 만든다는 아이디어 즉, 캐시 메모리를 프로세서와 메인 메모리 사이에 두는 방식이 많은 시스템에서 사용되는 표준적인 방법입니다.이 방식은 많은 컴퓨터 시스템에서 성능을 향상시키기 위해 일반적으로 채택되는 설계방식입니다.사실, 모든 컴퓨터 시스템에서 저장 장치들은 그림 1.9와 유사한 메모리 계층 구조로 조직됩니다.계층 구조의 위에서 아래로 내려갈수록, 장치들은 느려지고, 더 커지며, 바이트당 비용은 저렴해집니다.레지스터 파일은 계층 구조의 최상위 레벨, 즉 레벨 0(L0)을 차지합니다.우리는 ..

CSAPP 2025.04.21

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.5 Caches Matter

1.5 Caches Matter1.5 캐시 문제 우리가 전 포스트에서 봤던 코드 한 줄 아래 어떤식으로 컴퓨터가 돌아가, 화면으로 결과를 출력해주는지 관찰한 결과는, 결국 시스템이 정보를 한 장소에서 다른 장소로 이동시키는 데 많은 시간을 소비한다는 것입니다. 결국 “우리는 프로그램의 계산이나 로직만 중요하다고 생각하지만, 실제 시스템에서는 데이터를 어디서 어디로 얼마나 빠르게 옮기느냐가 성능에 매우 큰 영향을 준다는 사실"입니다.예를 들어, hello 프로그램의 명령어는 처음에 디스크에 저장되어 있습니다.프로그램이 메모리로 로드되면, 이 명령어들이 메인 메모리로 복사됩니다.그 후, 프로세서가 프로그램을 실행하면서, 메인 메모리에서 프로세서로 명령어를 복사해 사용합니다. 또한, 프로그램이 사용하는 ..

CSAPP 2025.04.21

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.4 Processors Read and Interpret Instructions Stored in Memory

1.4 Processors Read and Interpret Instructions Stored in Memory1.4 프로세서가 메모리에 저장된 명령어를 읽고 해석한다 이 시점에서, 우리의 hello.c 소스 프로그램은 컴파일 시스템에 의해 실행 가능한 객체 파일인 hello로 변환되어 디스크에 저장됩니다. 이 실행 파일을 유닉스 시스템에서 실행하려면, 쉘(shell)이라는 애플리케이션 프로그램에 파일 이름을 입력합니다.linux> ./hellohello, worldlinux> 쉘(shell)은 명령어를 해석하는 프로그램으로, 프롬프트를 출력하고, 사용자가 명령어를 입력할 때까지 기다린 후, 해당 명령어를 실행합니다. 만약 명령어의 첫 번째 단어가 쉘의 내장 명령어에 해당하지 않는다면, 쉘은 그것이 실..

CSAPP 2025.04.18

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.3 It Pays to Understand How Compilation Systems Work

1.3 It Pays to Understand How Compilation Systems Work컴파일 시스템이 어떻게 작동하는지 이해하는 것이 중요하다. 간단한 프로그램인 hello.c에서는 컴파일 시스템이 올바르고 효율적인 기계어 코드를 생성한다고 믿고 사용할 수 있습니다.하지만 프로그래머가 컴파일 시스템이 어떻게 작동하는지 이해해야 하는 중요한 이유들이 있습니다.프로그램 성능 최적화현대의 컴파일러는 보통 좋은 코드를 생성하는 고도화된 도구들입니다.프로그래머로서 우리는 효율적인 코드를 작성하기 위해 컴파일러의 내부 작동 방식을 세세하게 알 필요는 없습니다.하지만 우리의 C 프로그램에서 좋은 코딩 결정을 내리기 위해서는, 기계 수준의 코드와 컴파일러가 다양한 C 문장을 어떻게 머신 코드로 변환하는지에..

CSAPP 2025.04.18

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.2 Programs Are Translated by Other Programs into Different Forms

1.2 Programs Are Translated by Other Programs into Different Forms1.2 프로그램은 다른 프로그램에 의해 다양한 형태로 변환된다 hello 프로그램은 사람들에게 읽고 이해할 수 있는 형태이기 때문에 고수준 C 프로그램으로 시작됩니다.하지만 시스템에서 hello.c를 실행하려면, 각 C 문장이 다른 프로그램들에 의해 저수준 머신 언어 명령어들의 순서(0,1의 이진코드 형식)로 변환되어야 합니다. 이 명령어들은 실행 가능한 객체 프로그램(오브젝트 파일)이라는 형태로 포장되어 이진 파일로 저장됩니다.오브젝트 프로그램은 실행 가능한 객체 파일(링커가 여러 오브젝트 파일을 결합하여 만든 최종 실행 파일)이라고도 불립니다.유닉스 시스템에서 소스 파일을 오브젝트 파..

CSAPP 2025.04.18

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.1 Information Is Bits + Context

서론컴퓨터 시스템은 애플리케이션 프로그램을 실행하기 위해 함께 작동하는 하드웨어와 시스템 소프트웨어로 구성됩니다.시스템의 구체적인 구현은 시간이 지남에 따라 변화하지만, 그 기본적인 개념은 변하지 않습니다.모든 컴퓨터 시스템은 비슷한 기능을 수행하는 유사한 하드웨어와 소프트웨어 구성 요소를 가지고 있습니다.이 책은 이 구성 요소들이 어떻게 작동하는지, 그리고 그것들이 프로그램의 정확성과 성능에 어떻게 영향을 미치는지 이해함으로써 자신의 프로그래밍 기술을 향상시키고자 하는 프로그래머들을 위해 쓰였습니다. 저는 현재 이 책을 정리하고자, 저의 정리 내용과, 해당 책의 내용들을 공유하기 위해서, 이 글을 적습니다.그럼 Section 1.1 부터 차근차근 보도록 하겠습니다. 1. A Tour of Comput..

CSAPP 2025.04.18