(컴퓨터공학입문) 002. 컴퓨터 시스템의 구성

컴퓨터 시스템의 구성

컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 구분할 수 있다.

하드웨어 는 컴퓨터를 구성하고 있는 물리적인 기계장치를 말하며, 소프트웨어에 의해 주어진 일을 수행한다.

하드웨어의 종류는 아래와 같다.

  • 중앙처리장치
  • 기억장치 (주기억장치 + 보조기억장치)
  • 입력장치
  • 출력장치

소프트웨어 는 하드웨어의 동작을 지시하고 제어하는 명령어들의 집합인 프로그램과, 그 프로그램에 필요한 데이터를 총칭한다.

소프트웨어는 아래의 두 종류로 구분할 수 있다.

  • 시스템 소프트웨어
  • 응용 소프트웨어

하드웨어

하드웨어를 좀 더 자세하게 알아보자.

위에서 설명했듯 하드웨어는 중앙처리장치, 주기억장치와 보조기억장치같은 기억장치, 입력장치, 출력장치로 나뉘며

아래 그림처럼 중앙처리장치의 제어 신호에 따라 다른 장치들이 동작을 하게 된다.

sequenceDiagram
    중앙처리장치 ->> 입력장치 : 제어신호
    중앙처리장치 ->> 주기억장치 : 제어신호
    중앙처리장치 ->> 보조기억장치 : 제어신호
    중앙처리장치 ->> 출력장치 : 제어신호

데이터 흐름은 아래와 같이 그릴 수 있다.

sequenceDiagram
    입력장치 ->> 주기억장치 : 데이터
    중앙처리장치 ->> 주기억장치 : 데이터
    주기억장치 ->> 중앙처리장치 : 데이터
    주기억장치 ->> 보조기억장치 : 데이터
    보조기억장치 ->> 주기억장치 : 데이터
    주기억장치 ->> 출력장치 : 데이터

중앙처리장치

중앙처리장치는 흔히들 CPU(Center Processing Unit) 라고 부르는 그 장치이다.

명령어를 해독하고 실행하는 역할을 하며 제어장치, 연산장치, 레지스터들로 구성되어 있다.

특히, 하나의 칩으로 된 중앙처리장치를 마이크로프로세서 라고 부른다.

제어장치 (Control Unit)

제어장치는 중앙처리장치에서 일어하는 모든 작업을 통제하고 관리한다.

프로그램의 명령어를 해석하고, 해석된 명령의 의믜에 따라 다른 장치들에게 동작을 지시한다.

연산장치 (ALU : Arithmetic Logic Unit)

연산장치는 제어장치의 신호에 따라 덧셈, 뺄셈, 나눗셈 등의 산술 연산과 AND, OR, NOT 등의 논리연산을 수행한다.

레지스터 (Register)

레지스터는 중앙처리장치에 위치하여 명령어나 데이터, 연산 결과 등을 저장하는 장소다.

중앙처리장치의 종류에 따라 레지스터의 크기와 개수가 달라진다.

기억장치

기억장치는 실행중인 프로그램과 프로그램에 필요한 데이터를 기억 즉, 저장하는 역할을 한다.

좋은 기억장치란 낮은 가격, 큰 용량, 빠른 속도의 3가지를 갖추어야 한다.

다만 위 세 가지를 동시에 충족하는 장치는 없다.

가격이 싸면 빠른 속도와 큰 용량으로 기억장치를 만들 수 없게되고, 반대로 빠른 속도와 큰 용량을 만족하려면 가격이 비싸지기 때문이다.

그래프로 이를 나타내보자.

graph LR
    레지스터-->캐시기억장치;
    캐시기억장치-->주기억장치;
    주기억장치-->보조기억장치;

위의 그래프에서 좌에서 우로갈수록 가격은 싸지고 속도는 느려지지만, 용량이 커진다.

반대로 우에서 좌로 갈수록 가격이 비싸지고 속도는 빨라지지만, 용량이 작아지게 된다.

따라서 대부분의 컴퓨터는 용량이 크고 가격이 싼 대신 속도가 느린 보조기억장치와 용량이 작고 가격은 비싸지만 속도가 빠른 주기억장치를 병행해서 사용한다.

즉 위의 그래프처럼 기억장치를 계층화하여, 중앙처리장치가 지금 필요로 하는 프로그램과 데이터는 빠른 속도의 레지스터, 캐시기억장치, 주기억장치에 저장하여 사용하고

중앙처리장치가 현재 필요로하지않는 많은 데이터와 프로그램들은 보조기억장치에 저장하여 사용한다.

보조기억장치

가장 우측에 위치한 보조기억장치는 속도가 느린대신 가격이 싸고 용량이 큰 특징을 가지고 있다.

중앙처리장치가 필요로 하는 경우, 보조기억장치에서 프로그램과 데이터를 주기억장치로 전송하는 방식으로 사용되며

하드디스크, 자기테이프, 플로피디스크, 광디스크 등이 이에 해당한다.

참고 보조기억장치의 일부 공간을 주기억장치처럼 사용하기도 하는데, 이를 가상 메모리라고 한다.

주기억장치

주기억장치는 실행중인 프로그램과 실행에 필요한 데이터를 저장하는 장치로 RAM과 ROM으로 구분한다.

일반적으로 주기억장치라하면 RAM(Random Access Memory) 을 뜻하며, 실행중인 프로그램과 프로그램이 필요로하는 데이터를 일시적으로 저장한다.

RAM은 전원을 차단하면 데이터가 모두 소거되는 특징을 가지고 있으며, 이러한 특징을 휘발성 이라고 한다.

ROM(Read Only Memory) 는 부팅시 동작하는 BIOS 프로그램을 저장하는 장치로 전원을 차단해도 데이터가 소거되지않는 비휘발성 의 특징을 가지고 있다.

캐시기억장치

캐시기억장치는 주기억장치의 접근 시간과 중앙처리장치와의 속도 차이를 줄이기 위해 사용된다.

캐시기억장치는 빠른 속도를 가지고 있는 기억장치로, 현재 중앙처리장치가 자주 필요로하는 프로그램과 데이터의 일부 를 저장하여

자주 쓰는 프로그램과 데이터의 처리 속도를 향상시키는 역할을 한다.

참고 캐시기억장치는 RAM처럼 휘발성이다.

입력장치

입력 장치는 문자, 소리, 그림, 동영상등의 외부 데이터를 컴퓨터로 읽어들이는 장치이다.

키보드, 마우스, 스캐너, 조이스틱 등이 이에 해당한다.

출력장치

출력장치는 컴퓨터에서 처리한 결과를 사람이 이해할 수 있는 형태로 변환하는 장치이다.

모니터, 프린터, 플로터 등이 이에 해당한다.

소프트웨어

소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 구분된다.

그래프를 통해 계층화하면 아래와 같다.

graph TD
    사용자-->응용소프트웨어;
    응용소프트웨어-->시스템소프트웨어;
    시스템소프트웨어-->하드웨어;

시스템 소프트웨어

시스템 소프트웨어는 응용 소프트웨어를 지원하는 소프트웨어이다.

대표적으로 운영체제와 언어 번역 프로그램이 해당한다.

운영체제

운영체제는 하드웨어 자원을 관리하고 다른 시스템 소프트웨어와 응용 소프트웨어의 실행에 도움을 주며, 사용자와 하드웨어 사이에서 중간다리 역할을 한다.

대표적인 운영체제로 Windows, mac os, Linux, Unix 등이 있다.

언어 번역 프로그램

언어 번역 프로그램은 프로그래머가 작성한 프로그램을 컴퓨터가 이해할 수 있는 형식으로 번역하는 프로그램이다.

크게 어셈블러, 컴파일러, 인터프리어로 구분할 수 있다.

어셈블러는 어셈블리어로 작성된 프로그램을 컴퓨터가 이해할 수 있는 형식으로 번역하고

컴파일러는 고급언어로 작성된 프로그램을 컴퓨터가 이해할 수 있는 형식으로 번역하고

인터프리터는 고급언어로 작성된 프로그램을 한 줄씩 번역하여 즉시 실행히키는 프로그램이다.

응용 소프트웨어

흔히들 애플리케이션, 줄여서 앱이라고 부르는 것들이다.

주로 특정 응용 분야에 사용하기 위해 개발된 소프트웨어로 아래와 같이 분류할 수 있다.

기능 설명
워드프로세서 문서의 작성, 편집, 인쇄 등의 기능을 수행하는 프로그램으로 한글, 워드 등이 해당한다.
스프레드시트 수식을 쉽게 계산해주고 통계 처리 등의 기능을 수행하는 프로그램으로 엑셀, Numbers 등이 해당한다.
프레젠테이션 프로그램 도표, 도형, 애니메이션 효과 등을 이용하여 발표 자료를 쉽게 작성하는 프로그램으로 파워포인트, Keynote 등이 해당한다.
데이터베이스 관리 시스템 데이터베이스를 관리하며 다른 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 프로그램이다. 오라클, 액세스 등이 해당한다.
그래픽 프로그램 원한느 그림을 그리거나 만들어진 이미지를 수정하는 기능을 가진 프로그램으로 포토샵, 페인트샵 프로, 일러스트레이터 등이 해당한다.
통신 프로그램 네트워크를 이용해서 데이터를 주고 받는 프로그램으로 웹 브라우저, FTP, 텔넷 등이 해당한다.