당연히 기초적인 내용이라 다 알고있을거라고 생각할 수도 있지만
취업하는 중에 생각보다 기초적인 부분에서 발목을 잡힐 수도 있다고 생각하기에
이미 알고 있는 개념이라도 한번쯤 정리하고 넘어가는게 좋을 것 같다는 생각에 포스팅을 작성한다.
컴퓨터 시스템
우선 컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나뉜다.
- 소프트웨어는 운영체제(Windows, Linux, Mac OS)와 응용 프로그램(운영체제 위에서 돌아가는 여러 가지 프로그램)으로 구분이 된다.
- 하드웨어는 CPU(중앙처리장치(필수)), Memory, Storage(SSD/HDD)(외부저장매체), Network(인터넷) 등이 필요하다. 이게 4대 하드웨어 정도로 보면 될 것 같다.
폰노이만 구조
폰노이만 구조 이전에는 컴퓨터가 어떤 작업을 하려면 각 작업마다 일종의 컴퓨터(하드웨어)를 따로 만들어주거나, 스위치, 전선을 다르게 구성해야만 했다. 이 구조는 하드웨어는 하나로 만들고 위 구조처럼 가면 그 안에서 여러 가지 프로그램을 돌릴 수 있게 만드는 구조이다. 이를 통해 소프트웨어만 메모리에 교체를 해주면 CPU가 일을 순차적으로 시행하면서 내가 원하는 다양한 작업을 할 수 있게 되었다고 한다.
어떤 CPU에 명령을 하는 코드를 메모리에 순차적으로 올려두고 CPU가 그 코드를 한줄한줄 읽어서 그 코드에 쓰여져 있는 명령대로 실행만 하면, 메모리의 코드를 프로그램에 따라서 바꿔주기만 하면 CPU라는 하드웨어 하나에 메모리 하나 넣은 구조로 여러 가지 프로그램을 돌릴 수 있을 것이라는 것이다.
지금 컴퓨터 구조는 모두 CPU, 메모리, 저장매체(Storage)가 있다. 모두 반도체로 이루어져 있기에 CPU에서 저장매체에 있는걸 그대로 읽을 수 있지만 폰 노이만 구조를 따르기에 저장매체 <-> 메모리 <-> CPU의 과정을 따른다고 한다.
컴퓨터 주요 구성 요소 3가지
1. CPU(중앙처리장치, Central Processor Unit)
CPU는 크게는 연산과 제어의 기능을 담당한다.
- 연산(ALU, Arithmetic Logic Unit)
- 산술 연산(Arithmetic Operation) : 덧셈 연산같은 경우를 생각하면 된다.
- 논리 연산(Logic Operation) : if문같은 경우를 생각하면 된다. 참/거짓을 판별하는 그런 연산이다.
- 제어(Control Device) : Control Device, CPU밖의 여러 가지 메모리, 저장매체, 네트워크 등을 제어해주는 기능이다. 메모리에서 데이터를 가져와라, 계산하라 등 제어의 역할을 한다는 뜻이다.
2. Memory(메모리)
메모리는 코드와 데이터를 저장하는 장치이다. 2가지 의미로 사용된다.
1) 폰노이만 구조 그림에서 나오는 메모리(= RAM)
2) 전체적으로 CPU와 어떤 식으로든 데이터, 코드를 저장할 수 있는 장치(내/외부 기억장치)
- 내부 기억장치(주기억장치) : 속도가 빠르지만 휘발성
- CPU 내부 저장장치 :
- 레지스터(Registe) : 작은 공간의 데이터를 임시로 저장할 수 있는 저장 공간, 변수같은거
- 캐쉬(Cache Memory) : CPU가 메모리에 가서 뭔가를 가져오는데 생각보다 많은 시간이 소요되므로 가져왔던 데이터를 일정시간 쌓아둬서 재사용될 때에 빠르게 사용할 수 있게 해주는 저장 공간, 성능(속도)이 빨라진다.
- DRAM 등의 메모리(RAM, DDR4, DDR5 등), 1)에서의 메모리가 이쪽(코드와 데이터를 일시적으로 저장)
- CPU 내부 저장장치 :
- 외부 기억장치(보조기억장치) : 주기억장치에 비해 속도가 상대적으로 느리지만 비휘발성
- SSD, HD
3. IO Device(입출력장치, Input/Output Device)
- 입력장치는 컴퓨터에 뭔가 입력을 주는 것이다. 마우스도 뭔가 왔다갔다하는게 어떤 신호를 주는것이고 키보드, 터치패드도 동일하다.
- 출력장치는 프린터뿐만 아니라 모니터도 컴퓨터가 연산한 결과를 보여주는 것이고, 스피커도 일종의 출력장치라고 한다.
버스(Bus)
- System Bus : 위 3가지 구성 요소의 핵심을 연결해주는 어떤 기능을 말한다. 각 구성요소들은 구조상 물리적으로 떨어져 있어서 이 Bus를 통해서 통신, 연결을 진행하는 것이다. 즉, 주요 3가지의 장치를 연결해서 통신이 가능하도록 하는 기기를 버스라고 한다고 보면 된다.
- Internal Bus : 주요 3가지 장치들의 데이터를 주고받기 위한 버스가 아닌, CPU 내부 장치들간에 데이터를 주고받기 위한 버스를 말한다.