웹개발

스터디 : 컴퓨터 구조

업무 중 2021. 1. 6. 16:44

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

 

하드웨어(Hardware)

 

하드웨어는 인간으로 비유하자면 눈, 코, 입, 뼈, 장기, 혈관과 같은 신체 기관과 같으며 가정용 PC의 각종 본체 부품(하드디스크, CPU, 그래픽카드 등등)과 모니터, 키보드 등이 모두 하드웨어에 속한다. 이는 컴퓨터의 기능을 수행하기 위해 전기적인 신호로 구성된 정보, 즉 데이터를 이동하거나 처리하는 물리적인 실체를 의미한다. 하드웨어의 품질은 컴퓨터의 정보처리 능력을 결정한다. (CPU의 클락이 몇 Hz이냐, 코어가 몇 개냐, RAM이 몇 GB냐, 하드디스크의 용량이 몇 TB냐 등등)

 

당연하지만 여기서 컴퓨터의 뇌에 해당하는 부분인 중앙처리장치(CPU)의 성능이 좋을수록 사람으로 치자면 머리가 좋은 것과 같이 볼 수 있다. 이에 대한 개념은 아래에 나와있다.

 

중앙 처리 장치(CPU)

 

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

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

- 마이크로프로세서는 CPU를 집적회로 형태로 만든 물리적인 구성 요소 (그러나 일반적으로는 CPU와 마이크로프로세서를 구분하지 않고 사용)

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

 

 

소프트웨어 

 

소프트웨어는 인간의 정신, 혹은 생각에 해당하며, 물리적인 형태가 없는 0과 1의 조합이라 할 수 있다. 각종 프로그램이나 데이터 등이 소프트웨어다. 흔히들 하드웨어의 반대말이 소프트웨어라 생각하기 쉽지만, 이 둘은 컴퓨터를 구성하는 상호 보완적인 요소지 서로 대비되는 개념은 아니다. ('육체'와 '정신'을 이원화해서 바라보는 관점과 같이 이해하기 십상이지만 컴퓨터의 구성요소는 이와 달리 단지 물리적 실체가 있냐 없냐로 두 개념이 반대말이 되지는 않는다.)

 

즉 소프트웨어란 명령의 집합으로 구성된 컴퓨터 프로그램 및 그와 관련된 문서를 총칭하는 개념이며, 소프트웨어의 품질은 컴퓨터 하드웨어의 사용 효율과 사용 환경을 결정한다.

 

이 중에서 시스템 소프트웨어는 컴퓨터 하드웨어의 기능을 실행하기 위해 필수적인 작업을 하거나 응용 소프트웨어의 실행을 지원하는 소프트웨어를 말한다. 우리 주변에서 흔히 볼 수 있는 운영 체제는 Windows, Linux, Android, MacOS, iOS와 같은 것들로, 컴퓨터의 자원을 관리하고 응용 프로그램의 실행 환경을 제공하는 소프트웨어를 뜻한다. 이와 비슷하게 디바이스 드라이버라는 개념이 있는데, 이는 컴퓨터에 온라인으로 연결된 주변 기기를 제어하는 운영체제 모듈을 뜻한다. (PC에 연결한 프린터기를 제어할 수 있게 해주는 프린터 드라이버 등)

 

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

 

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

 

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

 

펌웨어는 컴퓨터의 기본적인 제어 및 구동을 맡는 운영 체제의 일종이다. 소프트웨어를 통해 전달된 데이터를 받아들인 하드웨어는 내부의 논리 회로를 거쳐 사용자가 원하는 형태의 결과물로 이를 표현하고, 사용자는 출력장치를 통해 인간이 이해할 수 있는 형태로 바뀐 데이터를 인식한다. 그런데 여기서 말하는 '사용자가 원하는 형태의 결과물'이라는 것은 계산 결과의 출력이나 특정 기기의 동작 등을 의미하는데, 컴퓨터 시스템의 활용 범위가 점점 더 넓어지고 데이터량 또한 커지다 보니 하드웨어 내의 제한된 종류의 논리 회로만으로는 이러한 상황에 대응하기 어렵게 되었다. 그래서 하드웨어 내부의 제어 부분에 저장공간(ROM)을 만들어, 여기에 논리 회로의 기능을 보강하거나 대신할 수 있는 프로그램을 넣게 하였는데, 이것을 바로 펌웨어라 부른다.

따라서 같은 종류의 하드웨어라고 해도, 내부의 펌웨어에 따라 기능이나 성능, 소프트웨어의 종류가 달라진다. 펌웨어는 프로그램의 형태를 갖추고 있으므로 우선은 소프트웨어의 일종이라 할 수 있지만, 하드웨어 내부에 위치하면서 사용자의 접근이 어렵다는 점에서 하드웨어의 특성 또한 가지고 있다.

 

​그렇다면 컴퓨터 구조라는 것은 어떤 것을 의미할까? 컴퓨터 구조는 하드웨어와 소프트웨어의 인터페이스에 대한 설명을 의미하는 명령어들의 집합 구조를 뜻한다. 이는 컴퓨터 아키텍처, 혹은 CPU 아키텍처로 볼 수 있으며, 동시에 프로그래머에게 보이는 시스템의 속성과 같다. 명령어들의 집합이나, 다양한 데이터 형식을 표현하는데 사용되는 비트의 수, 레지스터의 개수나 형식 등 다양한 것들을 컴퓨터 구조의 일부로 본다.

'웹개발' 카테고리의 다른 글

트랜잭션(Transaction)이란?  (0) 2021.01.11
중앙처리장치 CPU  (0) 2021.01.07
스터디 : node JS 기초  (0) 2020.12.22
스프링 웹개발 용어정리:: Spring Interceptor  (0) 2020.10.24
스프링 웹개발 용어정리:: Web Service?  (0) 2020.10.06