컴퓨터의 동작원리

이찬혁·2022년 12월 11일
0

컴퓨터는 어떤 부품으로 구성되어있는가?

컴퓨터의 부품으로는 CPU, RAM, MainBoard, 그래픽 카드, HDD, SSD, ODD 로 구성되어 있습니다.

CPU(Centeral Processing Unit)는 중앙처리장치라고도 불리며 기계어로 쓰인 명령어를 해석하는 역할을 하는 동시에 프로그램을 연산 및 처리하는 컴퓨터에서 가장 핵심적인 제어장치입니다. 대표적인 회사로는 Intel 과 AMD 가 있습니다.
RAM(Random Access Memory)은 휘발성 기억장치(주 기억장치)로 CPU와 메인보드와 함께 PC를 구성하는 핵심 부품 중 하나로 CPU가 처리할 데이터가 임시로 저장되는 곳입니다. 대표적인 회사로는 SAMSUNG과 SK하이닉스, Seagate 등이 있습니다.
MainBoard는 컴퓨터를 구성하는 부품 중 하나로써 컴퓨터의 각 부품에 전원을 공급하고 부품간에 신호를 주고받는 통로를 담당하고 있습니다. 메인보드는 PCB(Printed Circuit Board)라고 불리기도 하는데 이는 정확한 용법이 아닙니다.
그래픽 카드(Graphics Card)는 이미지를 디스플레이 장치로 출력하는 부품이다. 대부분의 그래픽 카드는 3차원 화면과 2차원 그래픽스를 위한 가속 렌더링, MPEG-2/MPEG-4 디코딩, TV 출력, 다중 모니터 연결 등 다양한 기능을 제공합니다. 그래픽 카드는 CPU에 내장이 되어 있기도 합니다. 대표적인 회사로는 엔비디아와 AMD가 있습니다.
하드 디스크 드라이브(Hard Disk Drive)는 비휘발성 기억장치(보조 기억장치)로 자기장의 원리 자성 물질이 있는 원판에 자기를 정렬하는 원리로 기록하고 지우며 내구력이 좋습니다. 대표적인 회사로는 WD와 도시바가 있습니다.
SSD(Solid State Drive)는 HDD의 고급 대체재로 인식이 되고 있습니다. HDD의 경우 원판을 통하여 저장이 되지만 SSD의 경우 메모리에 저장하는 방식입니다. 그래서 HDD보다 35배~100배 정도 빠른 속도를 가지고 있습니다.
ODD(Optical Disk Drive)는 CD를 레이저와 같은 빛을 이용하여 읽고 쓰는 부품입니다. 그러나 요즘 데스크탑에서는 USB를 주로 사용하기 때문에 보기 힘들어진 부품입니다.

테어링과 스터터링의 차이점은?

테어링 현상(Screen Tearing)은 화면이 찢어진 것처럼 보이는 현상입니다. 주로 모니터 주사율과 컴퓨터 사양간에 사이에서 발생합니다. 주사율이 144hz인 모니터는 1초에 144장의 장면을 출력하는데 컴퓨터 사양이 좋지 않아서 초당 프레임이 144미만일 경우 혹은 프로그램이 초당 프레임을 60로 설정되어 구현이 된 경우에는 화면이 찢어지는 현상인 테어링 현상이 발생합니다.

스터터링 현상(Stuttering)이란 일시적인 렉으로 인해 게임이 버벅 거리는 현상을 말합니다. 특히 오픈월드 게임에서 프리 로드할 데이터가 HDD에 있는 경우 잘 발생한다. 심할 경우 프리징라고 합니다. 프리징(Freezing)이란 순간적으로 FPS(Frames Per Second, 초당프레임) 급격하게 떨어지며 컴퓨터의 마치 얼어붙는 것처럼 멈추거나 멈춰가는 현상을 말합니다.

게임을 할 때 테어링 현상을 방지하기 위해 현재 출력되고 있는 모니터와 게임간의 프레임을 강제로 맞추고자 수직동기화를 켜게 됩니다. 수직동기화(Vertical Synchronization)란 디스플레이에서 그래픽카드의 프레임 생성과 모니터의 프레임 출력 타이밍을 맞추도록 하는 설정을 말합니다. 그런데 이 테어링 현상을 잡고자 수직동기화를 키게 되면 스터터링이 발생하게 됩니다. 수직동기화를 키게 되면 화면이 수직 동기 버퍼를 거쳐 나가는 과정에서 지연 시간이 생기기 때문입니다. 그래서 인풋렉이 발생하고 프레임이 뚝뚝 끊기게 되는 것입니다.

입출력 장치의 폴링레이트와 리프레스레이트

폴링 레이트(Polling Rate)란 입력장치와 PC간의 데이터를 교환하는 속도를 의미합니다. 폴링 레이트가 높을수록 장치가 운영체제와 더 자주 통신하여 정확한 데이트를 제공합니다. 폴링 레이트의 단위는 Hz 혹은 ms 로 표시합니다. 마우스의 경우 데이터의 위치 및 버튼 누름에 대한 정보를 통해 속도를 측정하며 키보드의 경우 입력 대기 시간으로 속도를 측정합니다. PS/2방식은 100hz ~ 200hz까지 지원을 하며 USB의 경우 125hz ~ 1000hz까지 지원합니다. PS/2 방식의 경우 지금은 없어졌지만 옛날에 메인보드 뒤쪽을 보면 보라색과 초록색으로 동그랗게 홈이 파져 있는 단자가 있었는데 보라색은 키보드를 초록색은 마우스를 연결하여 사용하였습니다. 2010년대부터 USB 포트를 자주 사용하기 시작하면서 점차 사라지기 시작하였습니다.

리프레시 레이트(Refresh rate)란 1초 동안 디스플레이 화면을 몇 번 출력할 수 있는지를 의미합니다. 화면 재생율은 화면 주사율, 화면 재생 빈도수라고도 하며 헤르츠(Hz)를 단위로 사용합니다. 헤르츠의 숫자가 높아질수록 깜빡임 현상이 덜하고 더욱 매끄럽고 연속적인 움직임의 화면을 볼 수 있습니다. 예를 들어 모니터 주사율이 60hz라면 1초 동안 화면을 60단계로 쪼개서 연속적으로 보여줍니다. 이러한 화면 재생률이 낮은 경우에는 화면에 잔상이 남는 모션블러(Motion Blur)현상이 나타나게 됩니다. 모션블러 현상이 나타나게 되면 정확한 화면을 보는데 방해가 되고 눈의 피로도가 올라가게 됩니다.

운영체제란 무엇인가

운영체제(Operating System)란 컴퓨터 시스템의 자원들을 효율적으로 관리하고 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임을 말하며 컴퓨터의 사용자와 하드웨어 간의 인터페이스로 동작을 하는 시스템 소프트웨어입니다. 운영체제는 PC용 윈도우, Mac만을 운영체제라고 하지 않고 각종 전자기기의 전원을 켜면 장치를 깨우고 사용자의 명령에 따라 동작하는 것들을 모두 운영체제라고 할 수 있습니다. 그러나 제작시 응용 프로그램 설치를 통해 기능 추가를 할 수 없는 것은 보통 펌웨어(Firmware)라고 부릅니다.

운영체제의 종류로는 임베디드, 서버, 모바일, 데스크탑으로 분류가 되며 예외적으로 특수 목적 컴퓨터가 있습니다.

임베디드(Embedded)는 실시간 운영체제 또는 리눅스가 설치되는 경우가 많습니다. 옛날에는 펌웨어를 많이 썼지만 최근에는 하드웨어 성능이 올라가면서 OS가 설치가 되어 시장에 나타났습니다.
실시간 운영체제(Real-time operating System)란 현재 시간과 정확하게 동기화되어 작동하는 시스템이 아닌 주어진 작업을 정해놓은 시간 안에 작업을 완료하는 것을 의미합니다. 즉, 임의의 정보가 입력되었을 때 주어진 시간 안에 작업을 완료하고 결과를 출력하는 것을 말합니다.

서버 운영체제(Server Operating System)은 서버를 생성할 때 필요한 운영체제로 많이 사용되고 있는 OS는 리눅스(Linux), 윈도우 서버(Window Server), MacOS가 있습니다.

윈도우 서버는 윈도우를 서버용으로 가공한 운영체제이다. 마이크로소프트에서 만든 서버 OS로, 컨테이너 기능이 강력하고 GUI 또한 편리하지만 안정적이지 못하며 리눅스 만큼의 안정성과 속도를 보장하지 못한다.

리눅스는 다중 사용자, 다중 작업을 지원하는 네트워크 운영체제로 독점되거나 배타되지 않는 프리 소프트웨어를 지향하며 탄생한 운영체제로 소스를 모두 오픈하여 기업은 물론 개인 누구나 무료로 사용할 수 있습니다.

MacOs는 과거에는 서버용 OS가 따로 있었으나 현재는 하나로 통합되었다. 그 이유는 리눅스등 다른 OS를 사용하는 것에 비해 장점이 없고 애플 특유의 권한 제한 정책으로 이해 서버관리자가 관리자 권한을 사용하는데 제한이 발생하여 서버 관리의 용이함이 없기 때문이다.

모바일 운영체제(Mobile Operating System)은 스마트폰과 태블릿, PDA등의 쓰이는 운영체제이다. 대표적으로 안드로이드와 IOS가 있습니다.

데스크탑 운영체제(Desktop Operating)는 Windows, MacOS 가 많이 쓰인다.

윈도우는 세계적으로 많이 쓰이는 운영체제로 안정적이고 표준적인 GUI를 가지고 있으며 수 많은 서드파티 프로그램의 지원을 받고 있습니다. 또한 그래픽 전문 용도에서는 MacOS보다 우수하며 전문적인 그래픽 작업성능도 많은 소프트웨어 회사들과 하드웨어 회사들의 기술 지원이 있어 매우 뛰어납니다. 커스터마이징 또한 접근하기 쉬우며 자기가 원하는 방식으로 운영체제의 개조도 가능하며 시스템 파일도 중요 파일을 제외하곤 접근 뿐만 아니라 수정도 가능하기에 자신만의 색다른 윈도우를 구축하는 것이 가능합니다.

MacOS는 Mac전용으로 탑재되는 운영체제이며 IOS를 기반으로 했습니다. GUI를 보편화시킨 회사로 그래픽적으로 윈도우나 일반적인 리눅스 계열보다 화려하고 인터페이스는 직관적이고 쓰기 쉽습니다. 서드파티 소프트웨어의 수는 윈도우에 비해 많이 부족하지만 품질면에서는 더 우수하는 평가를 받습니다.

프로세스와 스레드의 차이

프로세스(Process)란 디스크에 존재하는 프로그램 파일이 주기억장치에 적재되어 CPU에 의해서 실행되는 과정을 프로세스라고 합니다. 즉, 현재 실행 중인 프로그램을 프로세스라고 합니다.

프로세스에는 4가지 영역이 있는데 코드 영역, 데이터 영역, 힙 영역, 스택 영역이 있습니다.

코드 영역은 실행 명령을 포함하는 메모리이거나 목적 파일이 있는 프로그램 영역을 말합니다. 프로그램을 시작할때 프로세서가 디스크에서 읽어 실행하는 프로그램을 저장합니다.

데이터 영역은 프로그램의 가상 주소공간으로서 전역변수나 정적변수를 저정하거나 할당하고 실행하기 전에 초기화를 진행합니다.

힙 영역은 코드 영역과는 별도로 유지되는 자유 영역입니다. 동적으로 메모리를 할당하려고 프로그램 실행 중 시스템 호출을 사용했다가 해제하는 방법으로 활용이 됩니다.

스택 영역은 데이터를 일시적으로 저장하는 영역입니다. 데이터를 일시적으로 저장한다는 것은 함수를 호출하게 되면 함수의 반환 주소, 반환 값, 매개변수 등에 이 영역을 활용하기 때문에 함수를 호출할수록 커지며 반환할수록 줄어들게 됩니다.

스레드(Thread)란 어떠한 프로그램 내 특히 프로세스 내에서 실행되는 흐름의 단위를 말합니다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행 할 수 있습니다. 이러한 실행 방식을 멀티스레드(Multithread)라고 합니다.

프로세스와 스레드의 차이점으로는 프로세스가 메모리에 올라갈 때 운영체제로부터 시스템 자원을 할당받습니다. 이때 운영체제는 프로세스마다 각각 독립된 메모리 영역을 코드/데이터/스택/힙의 형식으로 할당해주는데 각각 독립된 메모리 영역을 할당해 주기 때문에 프로세스는 다른 프로세스의 변수나 자료에 접근할 수가 없습니다. 이와 다르게 스레드는 메모리를 서로 공유할 수 있습니다. 프로세스가 할당 받은 메모리 영역 내에서 스택 형식으로 할당된 메모리 영역은 따로 할당을 받고 나머지 영역은 할당된 메모리 영역을 공유하게 됩니다. 따라서 각각의 스레드는 별도의 스택을 가지고 있지만 힙 메모리는 서로 읽고 쓸 수 있게 됩니다.

레지스터의 종류

레지스터(Register)는 CPU의 데이터와 명령을 빠르게 허용,저장,전달하는데 사용 됩니다. 레지스터는 메모리 계층구조에서 최상위에 위치를 하며 이는 레지스터 메모리가 어떤 다른 메모리보다 데이터를 가장 빠르게 다룰 수 있다는 것을 의미합니다. 레지스터는 마이크로프로세서 MCU에서 보통 누산기(Accumulator)라고 불리는 단일 메모리로서 구성됩니다. 레지스터는 고속 다중 포트 메모리 셀(Multi-Ported Memory Cell) 구조를 가지며 레스터의 비트크기는 CPU가 한번에 처리할 수 있는 데이터 비트 크기인 1 WORD와 동일합니다.

레지스터의 종류로는 메모리 주소 레지스터, 메모리 버퍼 레지스터, I/O 주소 레지스터, 프로그램 카운터, 명령어 레지스터, 누산기 레지스터, 스택 제어 레지스터, 플래그 레지스터, 데이터 레지스터가 있습니다.

메모리 주소 레지스터(Memory Address Register, MAR)는 CPU가 데이터를 읽거나 쓰려는 메모리 주소를 일시적으로 저장합니다. CPU가 메모리에 일부 데이터를 저장하려고 하거나 메모리에서 데이터를 읽을 때 필요한 메모리 위치의 주소를 MAR에 저장합니다.

메모리 버퍼 레지스터(Memory Buffer Register, MBR)는 메모리에 읽거나 쓰려는 데이터 또는 명령을 일시적으로 저장합니다. 이 레지스터에 배치된 명령은 명령어 레지스터로 전송되고 데이터의 내용은 누산기 레지스터 또는 I/O 레지스터로 전송됩니다. 이 레지스터는 메모리를 읽거나 메모리에 쓰려는 데이터 또는 명령을 저장하는데 사용됩니다.

I/O 주소 레지스터(I/O Address Register, I/O AR)는 I/O 주소 레지스터는 특정 I/O 입출력 장치의 주소를 지정하는데 사용 됩니다.

I/O 버퍼 레지스터(I/O Buffer Register, I/O BR)은 I/O 모듈과 프로세서 간에 데이터를 교환하는데 사용됩니다.

프로그램 카운터(Program Counter, PC)는 레지스터를 명령어 포인터(Instruction Pointer)레지스터라고도 부릅니다. 이 레지스터는 프로세서가 수행할 다음 명령의 주소를 일시적으로 저장하는데 사용됩니다. 명령을 가져오면 IP의 값이 증가하며 항상 가져올 다음 명령의 주소를 가리키거나 현재의 명령의 주소를 유지합니다.

명령어 레지스터(Instruction Register, IR)은 주기억장치에서 수행할 명령을 가져오면 명령어 레지스터에 저장됩니다. 제어장치는 이 레지스터의 지시를 받아 컴퓨터의 해당 구성요소로 신호를 전송하고 명령을 해석하여 실행됩니다.

누산기 레지스터(Accumulator Register, AC)는 ALU 내부에 위치하고 있으며 ALU의 산술 및 논리 연산중에 사용이 됩니다. 제어장치는 산술 또는 논리동작을 위해 주기억장치에서 가져온 데이터를 누산기 레지스터에 저장합니다. 이 레지스터는 시스템에 사용될 초기 데이터 중간 결과 및 최종 동작 결과를 보관하며 MBR을 통해 주기억장치로 전송됩니다.

스택 제어 레지스터(Stack Control Register, SCR)은 데이터 순서대로 블록에 저장되며 검색됩니다. FILO(First in Last Out)의 방식으로 스택 제어 레지스터는 메모리의 스택을 관리합니다. 크기로는 2-4바이트 입니다.

플래그 레지스터(Flag Register, FR)는 CPU 작동 중 특정 상태가 발생했음을 나타내는데 사용 됩니다. 크기는 1바이트 또는 2바이트인 특수 목적 레지스터로 각 비트는 지정된 상황이 발생했는지 여부를 나타냅니다.

데이터 레지스터(Data Register, DR)은 MCU에서 주변 페리페럴 장치들로 전달되는 데이터를 임시 저장하는데 사용됩니다.

엔디안이란?

엔디안(Endian)이란 데이터를 메모리에 저장할 때 바이트(Byte) 단위로 나눠서 저장합니다. 따라서 연속되는 바이트를 순서대로 저장을 해야 하는데 이것을 바이트 저장 순서(Byte Order)라고 합니다. 이때 바이트가 저장된 순서에 따라 빅 엔디안(Big-endian)과 리틀 엔디안(Little-endian)으로 나눌 수 있습니다.

빅 엔디안 방식은 낮은 주소에 데이터의 높은 바이트부터 저장하는 방식입니다. 이 방식은 평소 사람이 사용하는 선형 방식과 같아 메모리에 저장된 순서 그대로 읽을 수 있으며 이해하기가 쉽습니다.

리틀 엔디안 방식은 낮은 주소에 데이터의 낮은 바이트를 저장하는 방식으로 평소 사람이 숫자를 사용하는 선형 방식과 반대로 거꾸로 읽어야 합니다.

CISC 와 RISC의 차이점

CISC(Complex Instruction Set Computer, 복잡 명령어 집합 컴퓨터)는 복잡한 명령어 집합을 갖는 CPU 아키텍처를 말합니다. 명령어가 복잡하기 때문에 명령어를 해석하는 데 시간이 오래 걸리며 명령어 해석에 필요한 회로도 복잡합니다. 보통 풍부한 어드레싱(주소 지정) 기능을 갖추고 있어 명령의 직교성이 좋으며, 어느 어드레싱 모드에서도 임의의 연산을 수행할 수 있습니다.

RISC(Reduced Instruction Set Computer, 축소 명령어 집합 컴퓨터)는 CPU 명령어의 개수를 줄여 명령어 해석시간을 줄임으로써 개별 명령어의 실행속도를 빠르게 한 컴퓨터입니다. RISC의 목표는 명령어 파이프라인을 통해 개별 명령어의 실행속도를 높여 CISC에 비해 더 많은 명령어를 처리해야하는 단점을 상쇄합니다.

CISC 와 RISC 의 차이점으로는 CISC의 경우 복잡하고 많은 종류의 명령어와 주소 지정 모드를 사용하고 가변 길이 명령어 형식입니다. 그리고 많은 명령어를 가지고 있으며 명령어가 소프트웨어적으로 호환성이 좋습니다. 컴파일 과정이 쉽고, 호환성이 좋지만 속도가 느립니다. RISC의 경우 간단하고 적은 종류의 명령어와 주소 지정 모드를 사용하며 고정 길이 명령어 형식으로 명령어 수가 적습니다. 그러나 명령어가 하드웨적으로 호환성이 낮으며 해석 속도가 빠릅니다.

0개의 댓글