컴퓨터의 구성 요소 및 작동 원리

이승혜·2021년 11월 7일
10

컴퓨터구조

목록 보기
1/1

💻 컴퓨터의 구성 요소

컴퓨터를 크게 두 부분으로 나눈다면 하드웨어소프트웨어로 구분할 수 있다
쉽게 생각해 우리가 손으로 만질 수 있는 물리적인 장치를 하드웨어라고 하며
이런 하드워드에 기록된 순수한 정보(information)를 소프트웨어(정보화기기)라고 한다
하드웨어와 소프트웨어가 함께 상호작용을 하며 원하는 일을 수행하게 된다

컴퓨터가 어떻게 일을 하는지 아주 간략하게 설명해보자면,
유저가 게임을 할 때 입력장치(키보드와 마우스 등)을 사용해
컴퓨터에게 어떤 정보를 제공한다
"내가 로그인을 할거야", "내가 게임 캐릭터를 만들거야", "내가 이쪽으로 이동할거야"
우리가 의도한 기능을 컴퓨터가 수행한 다음
출력장치(모니터, 스피커 등)을 통해 수행한 결과를 내보내게 된다
이러한 과정은 아래에서 더 다루기로하고, 본체 내부에 대해 조금 더 자세히 알아보자

본체 주요 요소

메인보드(mainboard)

  • 마더보드(matherboard)라고도 불리며 주회로가 내장된 보드
  • CPU나 램과 같은 시스템이 작동되기 위한 주요 부품 장착과 주변 장치를 연결할 수 있는 인터페이스를 제공하는 인쇄회로기판(PCB)을 의미
  • 컴퓨터 전원 공급 장치로부터 전기를 받아 CPU, 칩셋, 메인 메모리, 확장 카드에 이를 내보내는 전원 커넥터 및 회로를 포함

전원 공급 장치(power supply)

  • 우리가 흔히 말하는 파워를 의미한다
  • 구동에 필요한 전력을 공급해 주는 전기장치
  • 외부에서 들어오는 교류 전압을 직류로 변환해 각각의 시스템에 맞게 전원을 공급하는 역할

중앙 처리 장치(CPU)

  • 명령어의 해석과 자료의 연산, 비교 등의 처리를 제어하는 컴퓨터 시스템의 핵심 장치
  • 다양한 입력 장치로부터 명령을 받아 처리한 후, 그 결과를 출력 장치로 보내는 일련의 과정을 제어하고 조정하는 일을 수행
  • 제어장치, 연산장치, 레지스터 세 부분으로 구성됨
  • 사람의 뇌와 같은 역할을 함 = 모든 컴퓨터의 작동 과정은 CPU의 제어를 받아야만 이루어질 수 있음

입출력 장치

  • 컴퓨터와 사용자 사이의 정보를 교환할 수 있는 장치
  • 대표적인 장치로 키보드,마우스(입력장치)와 모니터(출력장치)가 있음

주기억장치(Primary Storage - Computer Memory)

  • 컴퓨터 내부에서 현재 CPU가 처리하고 있는 내용을 저장하고 있는 기억장치
  • 대표적으로 ROMRAM으로 나누어진다
  • 오직 기억된 정보만 읽을 수 있는 ROM과 휘발성 메모리인 RAM의 특성 때문에 데이터를 읽는 속도가 보조기억장치에 비해 상대적으로 빠름

ROM(Read Only Memory)

  • 전원이 끊어져도 기록된 데이터들이 소멸되지 않는 비휘발성 메모리
  • 오직 기억된 데이터를 읽기만 가능한 장치
  • 시스템에 기억시키고 변화시키면 안 되는 BIOS와 같은 주요 데이터가 저장됨

RAM(Random Access Memory)

  • 읽고 쓰기가 가능
  • 응용 프로그램, 운영체제 등을 불러와 CPU가 작업할 수 있도록 하는 기억장치
  • 임의 접근이 가능한 메모리
  • 전원을 끄면 데이터가 사라지는 휘발성 메모리 > 그럼에도 쓰는 이유는 속도가 빠르기 때문

보조 기억 장치(Secondary Memory)

  • 물리적인 디스크가 연결되어 있는 기억장치
  • 주기억장치보다는 느리지만 컴퓨터의 전원을 꺼도 데이터가 사라지지 않음
  • 대표적인 보조기억장치는 HDDSSD가 있음

HDD(Hard Disk Driver)

  • 이름 그대로 물리적인 디스크를 고속으로 회전시켜 데이터를 저장하는 장치
  • 충격에 약하며 소음이 다소 발생함
  • SSD가 나오면서 최근에 많이 소멸되는 추세

SSD(Solid-state drive)

  • 우리가 흔히 쓰는 USB가 발전한 형태
  • 물리적으로 회전하거나 움직이는 요소가 없음 > 전기적으로 데이터를 저장
  • 속도가 HDD에 비해 훨씬 빠름
  • 가격이 비싼 단점이 있음

컴퓨터 전원을 켤 때 일어나는 일

부팅 절차

  1. 전원 공급
  2. 부트 프로그램 실행
  3. 하드웨어 검사
  4. 운영체제 로드
  5. 운영체제 실행


가장 먼저 전원을 누르면 전원 공급장치(power supply)가 메인보드에 전기를 공급하게 되고, 그 안에 있는 부품들까지 쭉 전기가 공급된다
제일 먼저 보게 되는 것은 메인보드 제조사의 로고이며, 그 후 처음으로 작동하는게 ROM BIOS이다
BIOS는 운영체제 중 가장 기본적인 소프트웨어이자 컴퓨터의 입출력을 관리하는 펌웨어로, 주변 장치(하드웨어)와 컴퓨터 운영체제(소프트웨어) 사이의 데이터 흐름을 관리한다
즉, 메인보드가 처음 시작될 때의 절차들을 담고 있는 것이다.
이 때 하드웨어가 정상적인지? 그래픽 카드를 업그레이드 하지 않았는가 등등을 검사한다.
그 다음 단계에서는 운영체제가 실행이 되는데 이 운영체제도 하나의 프로그램이며, 데이터 형태로 존재하기 때문에 보조기억장치에 저장이 된다

CPU는 보조기억장치에 직접 접근할 수 없다
운영체제는 보조기억장치에 저장되어 있는데, 그렇다면 CPU가 운영체제를 어떻게 실행시킬까?
밑에서 자세히 설명하겠지만 간단하게 설명하자면, 보조기억장치에 있는 운영체제를 주기억장치로 복사를 하여 CPU가 주기억장치와 교류하며 작동을 하게된다

운영체제가 하는 일

Operating System(OS)

부팅을 시킨다는 것은 운영체제를 주 기억장치로 옮기고,
CPU는 주기억장치와 교류하며 운영체제를 실행시키는 것을 의미한다
운영체제가 없으면 우리가 기능을 수행하는데 매우 어려움을 겪는다
운영체제가 어떤 일을 해주는지 간단하게 알아보자

예를 들어 우리가 포토샵으로 작업을 하고싶다고 가정해보자
우리는 하드웨어로 입력을 하고 출력을 받게되는데
과거에는 하드웨어를 다루는 장치를 각각 따로 만들었다
그래서 프로그래머가 프로그램을 만드는 데 있어서 해야할 일이 엄청나게 많았다
어떤 프로그램을 실행시키기 위해선 카드를 집어넣고, 카드의 구멍에 따라 명령을 받고 계산하여 출력하는 식이었다
이러한 배경이 OS의 개발로 이어지게 된 것이다
예전의 컴퓨터는 용도에 따라 기기를 다르게 쓰고, 카드도 다르게 써야했다면
지금의 컴퓨터는 컴퓨터 한 대로 모든 프로그램을 실행시킬 수 있다
즉, 운영체제가 수많은 하드웨어와 소프트웨어를 제어하는 기능을 하게된 것이

이 때 커널이라는 부분이 중요한데, 운영체제에서 가장 중요한 부분이다
커널은 응용프로그램과 하드웨어를 중재해주는 일을 한다

우리가 컴퓨터를 사용할 때 프로그램을 하나만 실행시키는 것이 아니라,
여러 프로그램을 실행시키며 작업을 하게되는데
이 때 여러개의 프로그램이 작동하고, 단 하나의 CPU를 사용한다면
어떤 일을 먼저 수행할지에 대한 경쟁을 하게된다
이 때 CPU와 메모리 자원들을 관리해 주는 것도 운영체제가 하는 일이다

현대적 컴퓨터의 기본 구조


여기서 말하는 bus는 우리가 생각하는 그 bus와 같은 의미이다
이 bus들은 데이터를 싣고 다니는데, 더 구체적으로 말해서 이진수를 싣고 다니는 bus이다

  • control bus : 제어 신호를 싣고 다님
  • address bus : CPU/Memory 사이의 주소값을 싣고 다니며, Data bus의 데이터가 어디서 또는 어디로 이동해야하는지 결정한다
  • data bus : Memory에서 데이터를 전송하거나 전달 받음

CPU와 메모리가 직접적으로 왔다갔다 할 수 없기때문에
이 bus를 통해 교류를 한다

컴퓨터 메모리의 기본 구조


앞에서 보았듯 연산은 CPU가, 정보저장은 메모리가 한다는 것을 알았다
여기서 캐시 메모리는 무엇일까
메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼역할을 하는 메모리이다
이를 통해 전체 시스템의 성능 개선을 시킬 수 있다
실제 메모리와 CPU 사이에서 빠르게 데이터 전달을 하기 위해 미리 데이터들을 저장해두는 메모리이다
메모리에서 CPU에서 정보를 보낼 때 자주 보내는 것들을 미리 저장해 두었다가 캐시 메모리에서 바로 들고온다고 이해하면 쉽다

순차접근

자기테이프 같이 데이터를 순차적으로 접근하는 방식이다
데이터의 위치에 따라 시간이 달라진다
예를 들어 데이터가 살고 있는 집 주소를 1번지 2번지 3번지.. 라고 가정하자
원하는 데이터를 찾아가고 싶은데 집 주소를 모른다면
우리는 순차적으로 모든 집을 다 방문하게 될 것이다
이렇듯 순차적으로 데이터에 접근하는 것이 순차접근의 개념이다

임의접근

우리가 데이터가 살고 있는 집 주소를 알면 바로 가서 찾을 수 있다
어디든 접근할 수 있다고 해서 임의접근, 랜덤접근이라고도 불린다
기억 장소에 관계없이 동일한 접근 시간이 걸리는 접근방식이다
임의접근이 잘 되도록 만든 장치가 위에서 말한 RAM이다


CPU와 메모리가 어떻게 정보를 주고받을까?
임의 접근이 가능하도록 구조가 만들어졌기 때문에,
data bus와 address bus가 나누어 져있는 것이 핵심이다
몇 번지에 데이터가 존재하는지 주소를 싣고다니고(address bus)
그 번지수의 데이터를 받아 싣고다닌다(data bus)
그리고 이 데이터를 보낼건지 받을건지의 신호를 싣고 다닌다(control bus)

C언어에 포인트가 있는 이유가 address bus 때문이다
더 자세한 내용은 공부를 해봐야하겠지만...
하드웨어 제어는 포인터가 더 유리할 수 있으며,
속도가 다른 언어에 비해 훨씬 빠른 이유가 여기에 있다

CPU의 기본 구조

CPU의 언어

CPU가 사용하는 언어는 기계어(2진수)이다
머신코드라고도 불리고, 머신랭귀지라고도 불린다
우리는 기계어를 이해하지 못한다
기계어로 프로그래밍한다는 것은 현실적으로 불가능한 이야기다
사람에게 조금 더 가까운 언어가 어셈블리 언어인데,
우리는 load, add, store와 같은 언어는 이해할 수 있다
이렇듯 기계어로 되어있는 언어를 인간이 인식할 수 있는 것으로 바꾸어 주는 것이 니모닉이라 한다

CPU가 기본적으로 수행하는 명령은 그렇게 많지 않다
숫자를 더하고, 비교하고, 저장하고, 받아오는 등의
기본적인 작업들을 조합해서 복잡한 기능을 수행하는 것이다

CPU의 구성 요소들


제어 장치는 프로세서의 조작을 지시하는 역할을 해준다
산술 논리장치는 우리가 생각하는 연산작업을 하고 논리를 따지는 부분 즉 계산을 하는 역할을 해 준다
레지스터는 CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치를 말한다

  • 주소 레지스터 : 주소 버스에 주소를 출력하기 전에 임시 저장하는 레지스터
  • 프로그램 카운터 : 다음 인출할 명령어 주소를 임시 저장하는 레지스터
  • 데이터 레지스터 : 데이터 버스에 데이터를 읽고 쓰기 위해 잠시 저장해두는 버퍼 레지스터
  • 명령어 레지스터 : 가장 최근에 인출된 명령어를 임시 저장하는 레지스터
  • 어큐뮬레이터 : 중간 산술 논리 장치 결과를 임시 저장하는 레지스터

CPU가 일하는 방법

https://youtu.be/rTaNNQhwmt0

profile
더 높이

2개의 댓글

comment-user-thumbnail
2023년 5월 8일

너무 유익해요

답글 달기
comment-user-thumbnail
2023년 9월 23일

감사해요

답글 달기