혼자 공부하는 컴퓨터 구조 + 운영제제; Chap1. 컴퓨터 구조 시작하기
컴퓨터 구조 시작하기
1. 컴퓨터 구조를 알아야 하는 이유
INTRO
좋은 개발자가 되기 위해서는?
프로그래밍 언어의 문법과 함께 컴퓨터의 근간을 알아야 한다!
문제해결
e.g. 분명 코드를 제대로 작성했는데 왜 동작하지 않는거지?(;´д `)ゞ
➡ 프로그래밍 문법 상의 오류가 아니라 근원적 문제가 있을 수 있음!
즉, 컴퓨터를 미지의 대상에서 분석의 대상으로! 볼 수 있음!
- 컴퓨터를 관조할 수 있는 능력 배양
- 문법에 맞는 소스 코드를 컴퓨터에 입력만 하는 개발자가 아닌, 컴퓨터를 내려다보며 문제를 해결할 수 있는 개발자로 성장 가능!
성능, 용량, 비용
e.g. 무조건 저렴한 컴퓨터 vs. 무조건 최신 컴퓨터
➡ 과연 서버에 적합한 성능, 용량, 비용은?
cf. 클라우드 서비스(e.g. AWS)에서도 어떤 종류의 CPU, 메모리, 저장 용량을 사용할지 직접 선택해야함!
- 컴퓨터 구조는 결국 성능, 용량, 비용에 대한 이야기
- 프로그래밍 언어의 문법만으로는 해결하기 어려운 문제들을 고려할 수 있음
2. 컴퓨터 구조의 큰 그림
컴퓨터가 이해하는 두 가지 정보: 데이터
- 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
- 컴퓨터와 주고받는/내부에 저장된 정보를 데이터라 통칭하기도 함
- 0과 1로 숫자를 표현하는 방법
- 0과 1로 문자를 표현하는 방법
컴퓨터가 이해하는 두 가지 정보: 명령어
- 컴퓨터는 결국 명령어를 처리하는 기계
- 명령어
- 컴퓨터를 실질적으로 움직이는 정보
- 데이터는 명령어를 위한 일종의 재료
- e.g. 1과 2를 더하라, ‘안녕하세요’를 출력하라
- 명령어
컴퓨터의 네 가지 핵심 부품
메모리
- 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품
- 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 함
- 메모리는 실행되는 프로그램의 명령어와 데이터를 저장
- 메모리에 저장된 값의 위치는 주소로 알 수 있음
- 주소: 메모리 내에 어디에 저장되어 있는지 알 수 있게 해줌
CPU
- 메모리에 저장된 값을 읽어 들이고, 해석하고 실행하는 장치
- CPU 내부에는 ALU, 레지스터, 제어장치가 있음
- ALU: 계산하는 장치
- 레지스터: 임시 저장 장치
- 제어장치: 제어 신호를 발생 시키고 명령어를 해석하는 장치
보조기억장치
- 메모리
- 보조기억장치에 비해 비쌈
- 휘발성 저장장치로 전원이 꺼지면 저장된 내용을 잃음
- 실행할 정보를 저장
- 보조기억장치
- 전원이 꺼져도 보관될 저장장치가 필요
- 보관할 정보를 저장
입출력장치
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
보조기억장치 vs. 입출력장치
딱 잘라 구분되는 개념은 아님
→ 주변장치(peripheral device)라 통칭하기도…
보조기억장치: 메모리를 보조하는 특별한 입출력장치
메인보드
- 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
- 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로
- 다양한 종류의 버스 존재
- 시스템 버스: 컴퓨터의 핵심 부품을 연결하는 버스
시스템버스
- 주소 버스: 주소를 주고받는 통로
- 데이터 버스: 명령어와 데이터를 주고받는 통로
- 제어버스: 제어 신호를 주고받는 통로