컴퓨터의 동작 원리

1. 컴퓨터는 어떤 부품으로 구성되어 있으며, 각 부품은 무슨 역할을 할까?

컴퓨터는 크게 하드웨어와 소프트웨어로 나뉜다. 그 중 하드웨어는 손으로 만질 수 있는 형태가 있는 장치들을 말하며 CPU,모니터,스피커 등이 하드웨어라고 볼 수 있다.

반면 소프트웨어는 손으로 만질수는 없지만 하드웨어를 움직이게 하는 명령어들의 모임이다. 한글,알집,곰플레이어나 윈도우같은 운영체제 등이 이런 소프트웨어에 속한다.

하드웨어
그렇다면 컴퓨터를 구성하는 보여지는 부품이라함은 하드웨어를 뜻한다고 생각한다. 하드웨어는 크게 메모리, 입출력장치, CPU 로 나눌 수 있다.

메모리
메모리에는 우리가 흔히 알고 부르는 RAM이 있다. RAM 은 정보에 빠르게 액세스 할 수 있도록 컴퓨터가 사용하는 정보를 저장하고, 일상적인 여러 작업을 수행하는 데 필요하다.

컴퓨터가 사용하는 모든 데이터는 비트로 저장된다. 비트는 2가지의 상태만을 나타낼 수 있기 때문에 많은 데이터를 저장 할 수 없다. 그래서 컴퓨터는 비트 8개를 하나의 바이트라는것으로 묶어서 사용한다.

엔디안은 비트를 저장하는 방식이다. 엔디안에는 리틀 엔디안과 빅 엔디안이 있는데, 빅 엔디안은 사람이 숫자를 읽고 쓰는 방식과 같기 때문에 소프트웨어의 디버그를 편하게 해 주는 경향이 있다. 리틀 엔디안은 빅 엔디안의 반대이기 때문에 사람이 다루기는 불편하다고 느낄 수 있지만, 기계와 가까운 방식이기에 계산연산에 있어서 빅 엔디안보다 속도가 빠르다.

전에 배웠던 프로그래밍 언어의 고급언어와, 저급언어의 차이와 유사하다고 생각함

일반적으로 메모리의 용량을 클수록 좋다.

입출력장치
컴퓨터는 외부 데이터를 중앙처리장치나 기억장치로 읽어들이기도 하고, 외부로 출력하기도 하는데 이러한 과정들이 입출력 시스템에 의해서 처리된다.입출력장치는 <입출력장치, 입출력장치 제어기, 입출력장치 인터페이스, 입출력 버스, 입출력 제어기> 로 구성되어 있다.

입출력장치를 입력장치와 출력장치로 나누어 보면 입력장치에는 키보드,마우스,스캐너 등이 있으며 키보드는 주로 문자를 입력하는데 사용되고, 마우스는 영역을 지정하거나 아이콘을 선택하는데 사용되고, 스캐너는 사진이나 문서를 빛을 이용하여 디지털화하여 입력한다.

입출력장치 제어기는 입출력에 필요한 입출력장치 고유의 기능만 다루는 입출력 제어기로, 입출력장치 내에 있는 기계적인 요소를 이동시키는 작업을 수행하고 입출력 제어기와 비슷하지만 기능에 따라 이름이 달리 불린다.

입출력장치 제어기는 입출력에 필요한 입출력장치 고유의 기능만 다루는 입출력 제어기이고, 입출력 제어기는 입출력장치의 공통적인 기능을 다루는 제어기라는 차이점이 있음

입출력장치 인터페이스의 특징으로는 입출력장치와 주기억장치는 여러 가지 동작의 차이점이 있기 때문에 입출력장치 제어기를 직업 주기억장치 버스 또는 입출력 버스에 접속하는것이 불가능한데, 입출력장치 제어기는 입출력 인터페이스를 통하여 버스에 접속을 할 수 있다는 특징을 가지고 있다.

여기서 여러가지 동작의 차이점이란, 데이터 전송 속도의 차이, 데이터 처리 단위의 차이를 뜻하고, 입출력포트라고도 함

입출력 버스는 입출력장치 인터페이스와 컴퓨터 시스템 사이에 위치하여 데이터를 전달하는 경로의 역할을 한다. 입출력 버스의 한쪽에는 입출력장치 인터페이스가 연결되어 있고, 다른 한 쪽에는 입출력 제어기가 연결되어 있다.

입출력 제어기는 입출력장치와 주기억장치 사이의 정보 전달을 하게 되는데, 정보 전달 시 동작속도, 정보의 단위 등 여러 측면에서 다양한 특성을 가지게 된다. 이런 특성의 차이를 보완해 줄 수 있는 장치가 입출력 제어기다.

CPU
CPU(중앙처리장치)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하고 처리하는 가장 핵심적인 컴퓨터의 제어장치라고 볼 수 있다. CPU는 크게 산술 논리 장치와 레지스터 및 제어 장치로 구성된다.

산술 논리 장치(ALU)는 CPU로 들어온 모든 데이터들을 연산한다. 연산은 크게 두 종류인데, 수를 연산하는 산술연산과 논리를 따지는 논리연산이 있다. 기본적으로 ALU에서 연산을 하기위해선, 피연산자들이 레지스터에 입력되어야 한다.

레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치 즉, 메모리의 역할을 한다. 실제로 컴퓨터에서 데이터를 영구적으로 저장하려면 하드디스크를 이용해야 하고, 임시적으로 저장하는 장소가 RAM이다. 하지만 메모리로 연산의 결과를 보내고 영구적으로 저장할 데이터를 하드디스크에 저장해야 하는 등의 명령을 처리하기 위해서는 이들에 대한 명령의 종류를 저장할 수 있는 장소가 하나 더 필요하다. 그리고 이 장소는 무리 없이 명령을 수행하기 위해서 메모리보다 빨라야 하는데, 이런 역할을 수행해주는 것이 CPU옆에 붙어 있는 레지스터다.

소프트웨어
소프트웨어란 하드웨어를 효율적으로 이용하기 위한 운영체제(OS), 워드프로세서 등과 같이 컴퓨터를 효율적으로 사용하는 기술을 소프트웨어라고 한다.
소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 나눌 수 있다.

시스템 소프트웨어
컴퓨터를 동작시키는 일을 하는 운영체제 등 하드웨어에 접근하여 운영을 하기위해 만들어진 것이다.

응용 소프트웨어
워드프로세서, 웹브라우저 등 운영체제위에 사용자가 사용하게 되는 프로그램을 응용 소프트웨어라고 한다. 이를 애플리케이션이라고도 부른다.

운영체제
모든 프로그램은 실행을 위해 *자원을 필요로 한다.
운영체제는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램이다.

*자원 : 자원은 프로그램 실행에 있어 마땅히 필요한 요소

운영체제의 종류에는 Windows 시리즈, UNIX, LINUX, MS-DOS 등이 있다.

2. 수업에 나온 부품 외에 또 어떤 부품이 있을까?

메인보드, 하드디스크 (HDD/SSD), 그래픽카드, 파워서플라이, 케이스 등이 있다.

메인보드
메인보드는 각 부품의 연결체 역할을 하고 있다. CPU, 램, 그래픽카드, SSD 등과 같은 부품들이 메인보드를 통해 서로 정보를 주고 받게 된다. 즉, 메인보드는 모든 부품과 연결된 만큼 안정성이 중요한 부품이며 좋은 메인보드를 사용할수록 보드의 구성요소들이 고품질 제품으로 만들어져 PC의 수명 연장에 도움이 된다.

하드디스크
하드디스크는 데이터를 저장하는 저장 장치다. 주로 사용되는 하드디스크는 크게 HDD와 SSD로 나뉘는데 둘의 역할은 동일하지만 성능에서 큰 차이점이 있다.

SSD가 소음이 더 적고 소비 전력 역시 적으며 속도도 더 빠르고, HDD가 물리적 충격에 약한 것에 비해 SSD는 그런 단점이 없는데다가 더 튼튼하기까지 하다.

대부분의 면에서 SSD가 더 뛰어난 성능을 발휘하지만, 아직 HDD도 사용되는 이유는 가격이 더 저렴하며 데이터의 장기 보존에 더 적합하기 때문이다. 다른 장단점을 제외하더라도 가격면에서의 차이가 많이 나기 때문에 HDD와 SSD를 동시에 사용하거나, HDD를 사용하는 사람들도 많이 있다.

그래픽카드
그래픽카드는 CPU에서 생성한 디지털 신호를 영상 신호로 바꾸고, 모니터로 출력하는 장치다. 고화질 동영상을 시청하거나 3D게임을 할 때 필요한 영상 신호를 만들기 위한 작업을 CPU와 함께 처리해 CPU의 부담을 덜어주는 기능도 한다.
그래픽카드는 사실 필수 부품은 아니다. 그 이유는 대부분의 상용화된 CPU에 내장 그래픽이 탑재되어 있기 때문인데 고사양 게임을 플레이하거나 3D 작업을 할 때에는 CPU의 내장 그래픽만으로는 한계가 있기 때문에 많은 사람들이 그래픽카드를 장착한다.

파워서플라이
파워서플라이는 컴퓨터에 안정적인 전원을 공급하는 전원 공급장치를 말한다. PC의 동력은 바로 전기다. 파워는 콘센트에서 보내주는 전기를 PC에 알맞게 조절하여 전달해 주는 역할을 한다. 220V나 되는 전압을 그대로 PC에 보낸다면 과부하가 올것이므로 파워를 통해 필요한 만큼만 전력을 배분하여 전달해준다. 그리고 파워의 내부에는 축전기가 있어 전력을 저장하여 파워로 전달되는 전력이 일시적으로 감소해도 축전지에 저장된 전력을 사용해 항상 일정한 전력을 공급할 수 있도록 해준다.

케이스
케이스는 컴퓨터 부품을 고정시키고 물리적인 충격으로부터 보호해줌으로써 시스템이 안정적으로 구동할 수 있도록 하고, 각각의 부품들로부터 발열 해소를 위해 쿨링역할도 한다.

3. 컴퓨터 아키텍처엔 무엇이 있을까

컴퓨터 아키텍처에는 폰 노이만 아키텍처, 하버드 아키텍처, CISC 아키텍처, RISC 아키텍처 등이 있다.

폰 노이만 아키텍처와 하버드 아키텍처의 차이는 메모리의 수와 배열의 차이다. 폰 노이만 구조는 하나의 메모리를 가지고 있고, 하버드 구조는 2개의 메모리를 가지고 있다.

하버드 구조가 1개의 메모리를 더 가지고 있기 때문에 속도가 더 빠르지만 버스도 더 필요하므로 CPU코어에서 폰 노이만 구조보다 많은 공간을 차지하게 된다.

4. 테어링과 스터터링의 차이점

테어링과 스터터링은 둘다 화면에 이상이 생기는 현상이다. 테어링 현상은 찢어지듯이 화면이 나뉘는 현상이며, 스터터링은 버벅거리거나 뚝뚝 끊기는 현상이다. 두 현상은 게임의 프레임과 모니터의 리프레시 레이트가 일치하지 않을 때 발생한다.

그래픽카드의 성능이 게임의 요구 성능보다 높다면 테어링 현상이, 더 낮다면 스터터링 현상이 일어날 확률이 높다.

5. 운영체제

운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있게 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.

운영체제는 Windows, Linux, Mac OSX, iOS, Unix, MS-DOS 등이 있다.

주로 Windows는 개인용으로, Unix와 Linux는 서버용 운영체제로 사용된다.

6. 프로세스와 스레드의 차이

프로그램이 실행된 상태를 프로세스라고 한다. 프로세스는 code, data, stack, heap 으로 4가지 영역이 존재한다. 코드 영역과 데이터 영역은 크기가 결정되어 있는 정적 영역이지만, 스택 영역과 힙 영역은 프로세스가 실행되는 동안 크기가 늘어나기도 하고 줄어들기도 하는 동적 영역이다.

사실 CPU는 한번에 한가지 명령어밖에 처리하지 못한다. 즉, 동시가 아닌 매우빠른속도로 프로세스들을 번갈아가며 실행하는것이다. CPU가 상상이상으로 빨라서 프로세스들을 번갈아가며 실행하는것이 마치 동시에 실행하는것처럼 보인다.

스레드는 프로세스 내에서 실행되는 흐름의 단위이다. 일반적으로 하나의 프로그램은 하나 이상의 프로세스를 가지고 있고, 하나의 프로세스는 반드시 하나 이상의 스레드를 갖게된다.

스레드는 프로세스 내에서 각각 스택만 따로 할당받고 코드, 데이터, 힙 영역은 공유한다.

프로세스와 스레드의 차이는 프로세스는 자원을 공유하지 않지만, 스레드는 자원을 공유한다.

운영체제의 입장에서 작업의 최소 단위는 프로세스이고, CPU의 입장에서 작업의 최소단위는 스레드다.

7. 레지스터의 종류

레지스터의 종류에는 데이터 레지스터(DR), 주소 레지스터(AR), 프로그램 카운터(PC), 명령어 레지스터(IR), 메모리 버퍼 레지스터(MBR) 등이 있다.

데이터 레지스터(DR) : 메모리에서 전달되는 데이터를 저장하는데 사용한다.

주소 레지스터(AR) : 특정 입출력 장치의 주소를 지정하는데 사용한다.

프로그램 카운터(PC) : 프로세서가 수행할 다음 명령의 주소를 일시적으로 저장하는데 사용한다.
이 레지스터는 항상 가져올 다음 명령의 주소나 현재 명령의 주소만을 가르킨다.

명령어 레지스터(IR) : 주기억장치에서 가져온, 수행할 명령을 저장한다.

메모리 버퍼 레지스터(MBR) : 메모리에 읽거나 쓰려는 데이터 또는 명령을 일시적으로 저장한다.

8. 엔디안

엔디안은 비트를 저장하는 방식으로, 엔디안에는 리틀 엔디안과 빅 엔디안이 있는데, 빅 엔디안은 사람이 숫자를 읽고 쓰는 방식과 같기 때문에 소프트웨어의 디버그를 편하게 해 주는 경향이 있다. 리틀 엔디안은 빅 엔디안의 반대이기 때문에 사람이 다루기는 불편하다고 느낄 수 있지만, 기계와 가까운 방식이기에 계산연산에 있어서 빅 엔디안보다 속도가 빠르다.

> 전에 배웠던 프로그래밍 언어의 고급언어와, 저급언어의 차이와 유사하다고 생각

9. CISC와 RISC의 차이점

CISC와 RISC는 CPU를 설계하는 방식을 뜻한다. CPU가 작동하려면 프로그램이 있어야 하고 명령어로 설계를 한다. 그 과정에서 명령어가 소프트웨어적인 방식이 CISC 하드웨어적인 방식이 RISC다.

CISC는 하나의 명령어당 최대한 많은 작업을 하게 하는것, RISC는 명령어 하나당 하나의 연산만을 수행한다.

CISC의 경우 적은 수의 명령어로 많은 일을 할 수 있으므로 프로그램을 작성하거나 컴파일러 코드생성이 쉽다

참고자료
자료 1 링크텍스트
자료 2 링크텍스트
자료 3 링크텍스트
자료 4 링크텍스트
자료 5 링크텍스트
자료 6 링크텍스트
자료 7 링크텍스트
자료 8 링크텍스트
자료 9 링크텍스트
자료 10 링크텍스트
자료 11 링크텍스트
자료 12 링크텍스트
자료 13 링크텍스트
자료 14 링크텍스트
자료 15 링크텍스트
자료 16 링크텍스트
자료 17 링크텍스트
자료 18 링크텍스트

profile
프로그래머 지망생

0개의 댓글