본문 바로가기
내 꿈은 개발자 그렇지만 난 지금...

[컴퓨터구조] 밑 바닥 개발자의 시작, 컴맹소리는 지긋해!

by hyun's life_developer 2019. 9. 11.

 

 

지긋지긋한 컴맹소리, 탈출시작하자!

 

컴퓨터의 구조 알고나면 어려울게 하나없다.

컴퓨터의 구조

컴퓨터 시스템은 개념적으로는 이렇게 하드웨어, 소프트웨어, 그리고 펌웨어의 결합으로 이루어진다.

 

#하드웨어(Hardware)

- 하드웨어는 사람에 비유하자면 눈, 코, 입, 손, 발처럼 컴퓨터의 신체기관과 같다.

하드웨어는 다들 이해를 비교적 쉽게한다. 컴퓨터의 만져지는 것들, 부품들은 다 하드웨어라고 볼 수 있다. 

각종 본체 부품(하드디스크, *CPU, 그래픽카드 등등)과 모니터, 키보드 등이 이에 속한다. (만질수 있다)

이 하드웨어의 품질이 컴퓨터의 정보처리 능력을 결정한다.

즉, 하드웨어가 좋을수록 컴퓨터가 좋다! (300만원짜리 컴퓨터가 100만원짜리 컴퓨터보다 좋듯이 당연하게!)

 

* CPU => 중앙처리장치

 - 머리 좋은 사람일수록 계산속도던 처리던 기억력이던 다~ 좋다. 

   이 CPU는 컴퓨터의 뇌에 해당하는데 윗줄에서 말한 것처럼 성능이 좋을수록 머리 좋은 사람! 과 같은 이치이다.

 

 CPU에 대한 개념은 다음과 같다.

 1) 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치 (제어기능, 연산기능, 기억기능)

 2) CPU는 컴퓨터 시스템의 논리적 구성요소

 3) 마이크로프로세서는 CPU를 집적회로 형태로 물리적인 구성 요소 ( 그러나 일반적으로는 구분X )

 4) CPU는 크게 제어장치와 연산장치, 레지스터(register)와 CPU 내부 버스로 구성됨.

  

발로그린 그림1.    이해를 돕기위한                                                                                                      은 도움 하나도 안되는 허접한 그림

+중앙처리장치의 구성으로 제어장치, 연산장치, 레지스터가 있다.

구성 설명
제어장치  프로그램 명령어를 해석, 해석된 명령의 의미에 따라                           연산장치, 주기억장치, 입출력장치 등에게 동작을 지시
연산장치  4칙연산 등의 산술 연산 + AND, OR, NOT, XOR과 같은                    논리연산을 하는 장치이며 제어장치에 따라 연산을 수행
레지스터  주기억장치로부터 읽어온 명령어나 데이터를 저장하거나                   연산된 결과를 저장하는 공간

발로그린 그림2. 하드웨어 중 기억장치의 종류

* 주변장치

- 주변장치는 크게 입력장치와 출력장치, 저장장치로 나눌 수 있다.

 모니터, 마우스, 키보드, 스피커, USB 등등과 같은 것들이 이에 해당된다.

 

*기타 하드웨어

- CPU가 처리한 데이터들은 용도에 맞게 모니터에 출력되거나 메모리에 저장되는 등 여러 처리 방식을 거치게 되는데, 이러한 행위가 이루어지기 위해서는 이 데이터를 주고받기 위해서 각 컴포넌트 간의 통신이 이루어져야 한다.

이러한 통신을 가능하게 해주는 서브시스템을 컴퓨터 버스라고 부른다.

 

이 중에서 CPU와 메모리를 연결하는 서브시스템을 시스템 버스라고 부른다.  (메모리와 다른 입출력 장치와 통신을 하는 서브시스템은 I/O 버스( Input/Output Bus), 즉 입출력버스라고 부른다.)

 

시스템 버스가 전송할 수 있는 정보의 타입은 크게 3가지로, 각각 데이터의 위치를 나타내는 주소(Address)와 정보 그 자체의 값(Data), 그리고 데이터의 흐름 관리를 위한 제어(Control)이 있다.

 

 

#소프트웨어(Software)

- 소프트웨어는 사람에 비유하자면 정신 혹은 생각에 해당하며,

  하드웨어와는 다르게 물리적인 형태가 없는 0과 1의 조합이라 할 수 있다. (쉽게말해 만질 수 없다.)

  각종 프로그램이나 데이터 등이 이에 속한다. 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어가 있다.

  즉, 소프트웨어란 명령의 집합으로 구성된 컴퓨터 프로그램 및 그와 관련된 문서를 총칭하는 개념!

 

                                                          발로그린 그림3. 시스템 소프트웨어의 실행 구조                                                                                                         (개발 공부 끝나고 시간 남으면 포토샵 공부할겁니다 ㅡ.ㅡ)                                                      

- 시스템 소프트웨어와 응용 소프트웨어 중 시스템 소프트웨어는 컴퓨터 하드웨어의 기능을 실행하기 위해 필수적인 작업을 하거나 응용 소프트웨어의 실행을 지원하는 소프트웨어를 말한다. 

Windows, Linux, Android, MacOS, IOS와 같은 것들이 이에 속한다.

 

컴파일러와 인터프리터C++, Java, Python 등 고급 언어(high-level language)로 작성된 원시 프로그램을 컴퓨터가 이해할 수 있는 기계어, 즉 저급언어(low-level language)로 변환하는 소프트웨어로서 사람과 컴퓨터 사이의 서로 다른 언어를 통역해주는 번역기와 같다.

 

즉, 개발자가 개발할 때 쓰는 언어( 고급언어 )를 컴퓨터가 이해할 수 있도록 컴퓨터만의 언어 ( 저급언어 )로

번역해주는 것이 컴파일러인터프리터이다.

 

링커는 다수로 분할하여 작성된 프로그램에 의해 생성된 목적 프로그램 또는 라이브러리 루틴을 결합하여 실행 가능한 하나의 프로그램으로 연결해주는 소프트웨어를 말한다.

 

로더는 디스크와 같은 저장 장치에 보관된 프로그램을 읽어 메인 메모리에 적재한 후, 이를 실행 가능한 상태로 만드는 소프트웨어이다.

 

펌웨어는 컴퓨터의 기본적인 제어 및 구동을 맡는 운영 체제의 일종이다.

소프트웨어를 통해 전달된 데이터를 받아들인 하드웨어는 내부의 논리 회로를 거쳐 사용자가 원하는 형태의 결과물로 이를 표현하고, 사용자는 출력장치를 통해 사람이 이해할 수 있는 형태로 바뀐 데이터를 인식한다.

이러한 데이터의 활용 범위가 넓어지고 데이터량이 많아지다보니 하드웨어 내의 제한된 논리회로만으로는 대응하기 

어려웠다. 그래서 하드웨어 내부의 제어 부분에 저장공간(ROM)을 만들어, 여기에 논리회로의 기능을 보강하거나 대신할 수 있는 프로그램을 넣게 하였다. 이것을 펌웨어라 부른다.

 

펌웨어는 프로그램의 형태이므로 소프트웨어라고 볼 수 있지만, 하드웨어 내부에 위치하면서 사용자의 접근이 어렵다는 점에서 하드웨어의 특성 또한 가지고 있다.

 

 

이게 다 무슨 소리인지 모르겠나요?

삐빅! 정상입니다.

2~3번 정독 4~5번 정독하면서 저도 겨우 조금 이해가 가는데요. 

결국 개발하는데에 필요한 필수 지식은 아닙니다만

적어도 하드웨어, 소프트웨어, 고급언어로 짠 프로그램이 실행되는 구조 정도는 알고 계시면 되겠습니다.

 

 

댓글