☹️ 분명히 같은 코드를 작성했는데 제 컴퓨터에서는 제대로 작동이 안 됩니다!
학원 강의를 들으면서 수도 없이 발생했던 이런 문제들... 그럴 때마다 내 컴퓨터에서는 제대로 작동하길 간절하게 바라곤 했었다. 이런 문제는 실무에서도 종종 발생하곤 한다.
하지만 언제까지나 기도메타로 운 나쁘게 문제가 생기지 않기만을 바랄 수는 없다는 생각이 들었다. 문제의 원인을 파악하고, 스스로 해결할 줄 아는 사람이 되고 싶다는 생각을 자주 했고, 단순히 코드를 잘 치는 것 뿐 아니라 컴퓨터 자체에 대한 지식이 필요하다는 생각을 많이 했다. 그래서 고른 책이기도 하다.
➡️ 컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있다.
단순히 코드를 잘 작성하는 개발자가 아닌 다양한 문제를 스스로 해결할 줄 아는 개발자가 되고싶다!
웹 사이트를 개발하면, 이를 실행할 컴퓨터(서버 컴퓨터)가 필요하다
CPU와 메모리가 다르고, 그에 따른 성능, 용량, 비용이 매우 다양함
내가 개발한 프로그램이 어떤 환경에서 어떻게 작동하는지는 내가 가장 잘 이해하고 있어야 하며, 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단할 수 있어야 한다
실무를 하면서 내가 가장 약한 부분이 바로 이런 쪽이라고 생각했다. (다른데도 다 약하긴 한데...) 이런 이야기에서 언제까지나 내가 쏙 빠져있을 수만은 없는 노릇 아니겠음... 차근차근 배워보자! 나는 아직 응애 개발자니깐...
컴퓨터 구조 = { 컴퓨터가 이해하는 정보, 컴퓨터의 네 가지 핵심 부품 }
컴퓨터는 0과 1로 표현된 정보만을 이해한다. 0과 1로 표현되는 정보의 종류는 두 가지이다.
데이터와 명령어
: 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보 혹은 컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보
: 데이터를 움직이고 컴퓨터를 작동시키는 정보
컴퓨터란? "명령어를 처리하는 기계"
→ 컴퓨터를 실질적으로 작동시키는 더 중요한 정보는 명령어이다.
중앙처리장치(CPU), 주기억장치(메모리), 보조기억장치, 입출력장치
주기억장치는 RAM(Random Access Memory)과 ROM(Read Only Memory) 두 가지가 있다. 메모리라는 용어는 보통 RAM을 지칭한다.
현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
✔️ 저장된 값에 빠르고 효율적으로 접근하기 위해 주소(address)라는 개념이 사용된다
→ 주소를 통해 메모리 내 원하는 위치에 접근할 수 있다
컴퓨터의 두뇌
메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석하고, 실행하는 부품
✔️ CPU 내부에는 산술논리연산장치(ALU: Arithmetic Logic Unit), 레지스터, 제어장치가 있다
: 계산 중의 값을 임시로 저장하는 역할을 한다
: 메모리 읽기, 메모리 쓰기 → 제어 신호
제어 신호란 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호를 말한다.
전원이 꺼져도 저자오딘 내용을 잃지 않는 메모리를 보조할 저장 장치
ex. 하드 디스크, SSD, USB 메모리, DVD, CD-ROM
➡️ '보관할' 프로그램을 저장한다
메모리의 단점: 가격이 비싸 저장 용량이 적고, 전원이 꺼지면 저자오딘 내용을 잃어버린다
→ 전원이 꺼져서 작업한 내용이 날아가는 일이 발생하는 것이 이것 때문! 실행 중인 프로그램은 메모리에 저장된다
컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
ex. 마이크, 스피커, 프린터, 마우스, 키보드
➡️ 보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수있다
때문에 보조기억장치와 입출력장치를 주변장치라고 통칭하기도 함
컴퓨터의 핵심 부품들은 모두 메인보드라는 판에 연결 (마더보드)
메인보드에 연결된 부품들은 버스라는 통로를 통해 서로 정보를 주고받을 수 있다
다양한 종류의 버스(통로)가 있는데 그 중 가장 중요한 버스는 시스템 버스이다
➡️ 시스템 버스 = { 주소 버스, 데이터 버스, 제어 버스 }