source file ("hello.c") 은 sequence of bits, 바이트의 집합. 각 바이트는 text 를 나타냄. 각 바이트는 ASCII에 맞는 Integer 값을 표현. 이러한 ASCII 캐릭터로 구성된 파일을 text file 이라고 함.
같은 sequence 의 bit 값의 data object 타입을 구분하는 방법은 해당 bit를 해석하는 context 를 다르게 하는것이다.

Preprocessing phase: '#' 로 시작하는 라인 처리
Compilation phase: C 언어 text 를 Assembly 언어 text 로 컴파일. 이 과정에서 최적화 등이 이루어짐.
Assembly phase: Assembler 는 .s 파일을 machine-language instruction 으로 이루어진 relocatable object program인 .o 으로 해석
Linking phase: Linker (ld)는 여러 object file 과의 merging 을 수행하여 최종 Executable Object Program을 생성.
Buses: fixed-size chunks of byte(words, 일반적으로 4byte 혹은 8byte) 를 운반하는 시스템의 conduit
I/O Devices: 외부와 연결됨. Controller 혹은 Adapter 를 통해 I/O Bus 와 연결.
Controller 는 일반적으로 마더보드 내장 칩셋을 일컫고, Adapter는 마더보드에 꽂힌 카드를 말함.
Main Memory: DRAM 혹은 Linear Array of bytes, 프로그램 실행 중에 데이터와 프로그램 보관.
Processor: main memory 에 있는 instruction 들을 interpret 함. PC(Program Counter) 는 항상 메인 메모리내의 machine-language instruction 을 가르킴. 켜질때부터 꺼질때까지 CPU는 PC의 instruction 실행.
CPU의 몇가지 간단한 Operation, 주로 Main memory, Register(word-size 파일), ALU unit(Aritchmetic/Logic Unit) 을 기반해서 동작함.
너무 많은 load 와 copy -> 지연 발생
memory <-> processor 속도 차이 심화
-> Cache 사용하여 해결
processor 와 main memory 사이에 cache memory 를 집어넣는 개념.
Memory Hierarchy
한 계층은 다음 lower level 의 계층 storage 를 위한 cache 개념으로 동작한다.

시스템의 한부분을 성능 향상시켰을때 전체에 미치는 정도를 계산하는 수식

T_old = 한 프로그램을 실행하는데 걸리는 시간 old
α = 시스템의 한 부분이 요구하는 시간, 분수로 나타내짐
k = α 의 부분을 향상 시킨 정도