개요
CSAPP 스터디를 시작했다. 일요일 전까지 책을 읽고 연습문제를 풀고, 일요일 오전에 모여서 공부했던 것들 중 모르는 것을 질문하는 스터디이다👍
시스템의 하드웨어 구성
- CPU와 RAM(Main memory) : CPU와 RAM은 물리적으로 분리되어 있으며, CPU가 직접 RAM에 접근하는 것은 상대적으로 느리다. RAM의 속도는 CPU보다 훨씬 낮고, CPU는 매우 빠르게 연산을 수행하기 때문에 CPU와 RAM 사이의 속도 차이를 줄이기 위해(보완하기 위해) Cache Memory가 존재한다.(반도체 기술이 매년 발달함에 따라 CPU-Memory간 격차가 지속적으로 증가하고 있다. 메인 메모리를 더 빠르게 동작하도록 만드는 것보다 프로세서를 더 빨리 동작하도록 만드는 것이 더 쉽고 비용이 적게 든다)
- Cache Memory : CPU 내부에 있으며, 연산에 필요한 데이터를 빠르게 공급하지만, 직접 연산을 수행하지는 않는다.(L1~L3)
- Register : CPU 내부에서 가장 빠른 메모리이며, 연산을 직접 수행할 데이터를 저장하는 역할을 한다.
- ALU(수식/논리 처리기) : Arithmetic(산수
+-*/), Logic(논리 &|^), Unit -> 기본적으로 산술 연산과 논리 연산을 수행한다.

(책 참고 : "당분간은 이 복잡한 그림 때문에 걱정하지 말기 바란다. 이 책을 따라 진행하면서 각 단계별로 다양한 세부사항을 알게 될 것이다.")
Amdahl's Law(암달의 법칙)
개념
우리가 어떤 시스템의 한 부분의 성능을 개선할 때, 전체 시스템 성능에 대한 효과는 그 부분이 "얼마나 중요한가"와 이 부분이 얼마나 빨라졌는가에 관계된다.

- a : 전체 수행 시간 중 차지하는 비중
- k : k배 개선하려고 함
- S : 속도 향상률
- T old : 개선 전 속도
- T new : 개선 후 속도
공식을 통해 알 수 있는 것

👉 a가 작으면 k를 아무리 올려도 S도 낮다
👉 최적화는 a가 커야 한다.
👉 최적화를 할 때 전체 비중에서 차지하는 비중이 낮은 부분을 최적화시켜봤자 전체적인 부분에서 성능은 크게 높아지지 않는다.
연습문제
스터디 끝나고 한번씩 문제 다시 풀어봤다




동시성과 병렬성
- 동시성(Concurrency) : CPU가 몇개든 여러 유형의 작업을 동시에 하는 것
- 병렬성(Parallelism) : CPU 2개 이상을 써서 동시에 연산하는 것(개발자가 따로 시켜야지만 CPU 2개 이상을 동시에 쓴다)

2진수, 10진수, 16진수

회고
처음에 혼자 책을 읽었을 때는 모르는 부분이 대부분이었는데, 스터디에서 질문하며 많이 배웠다. (설명을 너무 잘해주심...)
그리고 스터디 끝나고 복습을 했는데, 이때 이해한 부분도 있어서 예습/복습을 철저히 해야겠다고 생각했다.
어렵지만 그동안 궁금했고 알고싶었던 부분을 알 수 있어서 너무 좋았다👍