강민철님의 "혼자 공부하는 컴퓨터 구조+운영체제"을 기반으로 학습한 게시물입니다.
📕 목차
1. 컴퓨터 구조를 알아야 하는 이유
2. Overall
1. 컴퓨터 구조를 알아야 하는 이유
📌 문제 해결
프로그래밍 언어만을 이해하고 있는 사람은 정상적인 코드가 제대로 작동하지 않는 경우에 아무 일도 하지 못한다.
왜냐하면, 그들에게 컴퓨터란 '미지의 대상'이기 때문이다.
하지만 컴퓨터 구조와 운영체제를 이해하고 있는 사람에게 컴퓨터란 '분석의 대상'이고 문제 해결의 실마리를 가지고 있는 존재가 된다.
실제로 개발을 하다보면 점점 하드웨어에 대한 지식의 중요성을 알게 된다.
특히 운영체제는 두 말할 것도 없다. 여기에 대한 지식이 전무한 사람과 협업하고 싶진 않을 정도..
📌 성능, 용량, 비용
서버 컴퓨터란 마찬가지로 컴퓨터이므로, 내 서버를 24시간 가동시켜줄 장치를 골라야 한다.
그렇다면 무조건 비싼 장비가 좋을까? 그렇게 되면 예산이 감당할 수 없을 정도로 불어날 것이다.
서버 컴퓨터를 직접 구매해서 가동하지 않더라도 보통은 클라우드 시스템(Oracle, AWS 등)을 사용할 텐데, 이 또한 CPU 용량과 메모리, 인스턴스 스토리지 등을 직접 선택해야만 한다.
무엇이 가장 최선의 선택일까? 어떤 저장 장치가 필요할 것이며, 어느 정도의 용량을 갖춰야 할까?
실력있는 개발자라면 스스로 판단할 수 있어야 한다.
그리고 이를 위해 컴퓨터 구조와 운영 체제를 공부해야 하는 것이다.
2. Overall
📌 컴퓨터가 이해하는 정보
💡 컴퓨터는 0과 1로 표현된 정보만을 이해한다.
- 데이터 (data)
- 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
- 명령어 (instruction)
- 데이터를 움직이고 컴퓨터를 작동시키는 정보
- 컴퓨터를 한 마디로 정의하면 "명령어를 처리하는 기계"
📌 컴퓨터의 4가지 핵심 부품
세상에는 아두이노, 라즈베리 파이와 같은 작은 컴퓨터부터 스마트폰, 노트북, 데스크톱, 서버 컴퓨터까지 크기와 용도가 제각각이다.
하지만 그 핵심 부품은 아래 4가지이다.
- 중앙처리장치(CPU; Central Processing Unit)
- 주기억장치(main memory)
- RAM(Random Access Memory)와 ROM(Read Only Memory) 중 보통 RAM을 지칭한다.
- 보조기억장치(secondary stroage)
- 입출력장치(input/output<IO> device)
1️⃣ 메모리
- 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 함
- 주소(address) : 저장된 값에 빠르고 효율적으로 접근하기 위한 개념
- 가격이 비싸 용량이 적고, 전원이 꺼지면 저장된 내용을 모두 잃는다.
2️⃣ CPU
- 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 부품
- 내부 구성 요소
- 산술논리연산장치(ALU; Arithmetic Logic Unit) : 컴퓨터 내부 대부분의 연산을 담당하는 계산기
- 레지스터(Register) : CPU 내부 작은 임시 저장 장치. 비싸서 많아봐야 컴퓨터 한 대에 14개 정도.
- 제어장치(CU; Control Unit) : 제어 신호(control signal) 전기 신호를 내보내고 명령어 해석
- CPU가 메모리에 저장된 값을 읽고 싶을 땐, 메모리를 향해 메모리 읽기라는 제어 신호를 보낸다.
- CPU가 메모리에 어떤 값을 저장하고 싶을 땐, 메모리를 향해 메모리 쓰기라는 제어 신호를 보낸다.
👇 자세한 순서에 대해서는 아래 링크 참조!
3️⃣ 보조 기억 장치
- 영구 저장 장치, 전원이 꺼져도 프로그램을 보관한다.
- 하드 디스크, SSD, USB 메모리, DVD, CD-ROM 등
- 보조 기억 장치에 프로그램(Program)이 있고, 메모리에 올라가면 실행 중인 프로그램인 프로세스(Process)가 된다.
4️⃣ 입출력장치
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 마이크, 스피커, 프린터, 마우스, 키보드 등
✒️ 하드디스크, USB, CD-ROM도 '컴퓨터 외부에 연결되어 정보를 교환하는 장치' 아닌가요?
따지자면 맞는 말이다.
모두 Device에 해당하며, 이 안에서 세부 분류가 나뉘어진다.
• Character Device : 키보드, 스피커, 프린터와 같은 순서가 중요한 장치
• Block Device : HDD, USB, CD-ROM 같은 정확도가 중요한 장치
• Network Device : 실체가 없는 socket과 같은 장치
5️⃣ 메인보드와 시스템 버스
- 메인보드(main board)
- 마더보드(mother board)라고도 불린다.
- 컴퓨터 핵심 부품들을 모두 연결할 수 있는 슬롯과 연결 단자가 존재한다.
- 연결된 부품은 버스(bus)를 통해 통신할 수 있다.
- 시스템 버스(system bus)
- 컴퓨터 네 가지 핵심 부품을 연결하는 가장 중요한 버스
- 주소 버스, 데이터 버스, 제어 버스로 구성된다.