비전공자, 국비지원으로 수업을 듣지만 코드를 작성하고 돌아가는 원리에 대해 궁금할 때가 많다.
특히 자바라는 언어에서 메모리구조에 관련해 나올때가 그렇다.
그 메모리리는 또 어디에 있고 어떻게 작동되는것인가. 궁금하기도 하다. 학원에서는 아무래도 당장 취업을하고 현업에 가서 쓸 수 있는 기술을 이런걸 알려주지 않는다. 그리고 국비지원 6개월이라는 시간동안 컴퓨터공학 기초 지식 부터 하나하나 쌓아주기에 양이 방대해 어렵다는 것이다. 그런데 컴퓨터 공학은 It기술을 쓰며 꼭 필요한 것이라고 한다.
최근들어서도 하나의 기술을 써도 컴퓨터 공학과 연관성이 있다고 느껴서 오늘부터는 하루에 하나씩 컴퓨터 공학 지식을 쌓아 나가고자 한다. 그러면 아무리 비전공자여도 꾸준히 하다보면 it로 나아가려는 사람답게 지식이 쌓여있길 바래본다.
컴퓨터 구조(Computer Science)
컴퓨터가 동작하는 방식을 기반으로 프로그래밍이 동작한다.
컴퓨터 동작과 프로그래밍은 긴밀히 연결되어 있으므로, 효과적인 프로그래밍을 위해,
컴퓨터 동작 방식 이해가 필요하다. 컴퓨터 구조는 컴퓨터 공학 핵심 과목인 운영체제 이해의 기반 지식이 된다.
컴퓨터 시스템은 하드웨어와 소프트웨어로 구성되어있다.
- 주요 소프트웨어 : 운영체제(리눅스, macos, window 등)와 응용 프로그램(운영체제 위에서 돌아가는 여러가지 프로그램, 혹은 우리가 만드는 프로그램들 )으로 구분이 될 수 있다.
- 주요 하드웨어 : CPU(중앙처리장치), Memory, Storage, Network 등
폰노이만 구조(현 컴퓨터 구조)
컴퓨터 구조는 대부분 폰노이만 구조를 따르고 있다.
폰노이만은 현대컴퓨터의 아버지 느낌이다.
기존에는 어떤 프로그램을 만들기 위해 동작을 하는
부품을 하드웨어(로직)로 만들어 써야 했었다.
그러면 여러가지 프로그램을 매번 하드웨어에 따로따로 만들기 위해 비용도 많이들고,
프로그램이 잘못되었을때 수정하기가 어렵다.
하드웨어는 하나로 만들고 그 안에서 여러가지 프로그램을 하나로 만들 수 있을 것이다 라고 얘기했다.
CPU에 명령을 하는 코드를 Memory에 순차적으로 올려놓고
CPU가 코드를 한줄 한줄 읽어서 그 코드에 쓰여져 있는 명령대로 실행만 하면
그리고 그 메모리에 있는 코드를 프로그램에 따라서 바꿔주기만 하면
CPU라는 하드웨어 하나에 메모리 하나를 넣고 그림과 같은
구조로 여러가지 프로그램을 돌릴 수 있을 것이다 제안한 것이다.
지금 같은 컴퓨터들은 모두 다 CPU가 있고 메모리와 저장매체가 있다.
폰노이만 구조는 CPU, 메모리, 프로그램으로 구성
폰노이만 구조 이전에는 컴퓨터들은 다른 작업을 하려고 할 때 스위치 설치, 전선 재배치하여 데이터전송 그리고 신호처리를 하였다. 폰노이만 구조로된 컴퓨터가 보급이 된 이후로는 소프트웨어만 교체하면 된다. 이후에 프로그래머라는 직업이 생기게 되었다.
컴퓨터 주요 구성 요소
CPU (중앙처리장치, Central Processer Unit)
1. 연산 : ALU(Arithmetic Logic Unit)
- 산술 연산 (Arithmetic Operation): 덧셈 뺄셈 등
- 논리 연산(Logic Operation) : if문 조건 연산문 같은 것
2. 제어 : Control Device
CPU 밖의 여러 장치들을 제어 해주는 역할을 한다.
→ IO Device(입출력장치), Memory, ALU 동작 제어
Memory(코드와 데이터를 저장하는 장치)
프로그램과 프로그램 수행에 필요한 데이터를 저장한다.
1. 내부 기억장치(주기억장치) :
속도가 빠르고 이곳에 있는 데이터는 날아간다.
-CPU 안에 레지스터(register)라는 아주 작은 공간이 또 있다.
변수 선언, CPU가 동작을 하는데 필요한 임시적인 데이터 등을
임시로 저장할 수 있는 역할을 한다.
레지스터에서 가져오는 것은
생각보다 시간이 많이 걸리기 때문에 예전에 한번 가져온적이 있다면,
일정 기간 동안 더 가까이에 있는 CPU안에 있는 별도의 메모리 공간
캐쉬(cashe memory)에 쌓아둔다. 그러면 성능이 좀 더 빨라지게된다.
-DRAM 등 메모리(램, RAM, DDR4)
폰노만에서 말한 메모리를 디램이라고 한다.
2. 외부기억장치(보조기억장치) :
속도가 주기억장치보다 느리지만 컴퓨터가 꺼져도 보존된다.
- SSD, HDD
IO Devices(입출력 장치 - INPUT/OUTPUT)
- 입력 장치 : 컴퓨터에 입력을 해주는것. 마우스 키보드 터치패드 등
- 출력장치 : 컴퓨터가 연산한 내용을 보여주는 것. 모니터, 프린터, 스피커 등
컴퓨터 주요 구성요소를 연결해주는 것을 BUS(버스)라고 한다.
CPU, Memory, IO Devices를 연결해주는 장치이고,
개별적인 IO Devices들을 연결해주고 데이터를 송수신해주는 장치이다.
System Bus는 메인보드 칩셋에서 지원한다.
댓글