컴퓨터와 컴퓨팅

2021. 7. 18. 09:46카테고리 없음

1. 하드웨어

핵심 키워드

  • 하드웨어
  • 중앙처리장치
  • 기억장치
  • 입출력장치

컴퓨터를 물리적으로 구성하는 요소로 컴퓨터에 연결되어 추가적인 기능을 수행

  • 중앙처리장치
  • 기억장치
  • 입출력장치

중앙처리장치

입력장치(키보드, 마우스, 스캐너 등) 에서 받은 명령을 실제로 처리하는 장치

GHz(기가헤르츠)는 1초에 처리할 수 있는 연산의 속도를 측정하는 단위 (1GHz = 10억번)


기억장치

입력된 명령이나 데이터가 저장되는 공간으로 주 (RAM) · 보조 (HDD, SSD 등)로 구분

1. 주기억장치는 기억된 정보를 읽어내기도, 다른 정보를 기억시킬 수도 있는 메모리

응용 프로그램을 일시적으로 불러오거나 데이터를 일시적으로 저장하는 임의 접근 기억장치

2. 보조기억장치는 주기억장치와는 다르게 데이터를 영구적으로 저장

원판 모양의 플래터를 회전시켜 데이터를 읽고 쓰는 HDD, 움직이는 부품 없이 더 빠른 속도를 지원하는 SSD, 기타 등이 있다


입출력장치

입력장치로는 대표적으로 키보드, 마우스, 스캐너 등이 있고 출력장치로는 모니터, 프린터 등이 있다

입력장치는 사람이 사용하는 데이터를 컴퓨터가 이해할 수 있는 형태로 변환하는 역할


주변기기

이 외에도 컴퓨팅(계산을 위한 동작을 의미)에 사용되는 하드웨어로 내부가 아닌 외부에서 연결하여 사용하는 장치

키보드와 같은 입력장치가 포함되며 스피커와 같은 출력장치 또한 포함

(이와 관련된 범용 직렬 버스(USB) 관련 내용 찾아볼 것)


추가 자료

  1. USB의 보편화, 일부 기업에서 표준 포트 사용을 피하는 이유
  2. SSD가 아닌 HDD를 사용하는 이유


2. 기억장치

핵심 키워드

  • 기억장치
  • RAM
  • 캐시
  • 가상 기억장치

컴퓨터가 계산을 수행하기 위해 비트와 바이트의 형태로 기억장치에 저장할 수 있어야 한다

나중에 데이터를 검색할 수 있도록 보관하는 것

그 종류마다 속도의 차이가 있고 저장의 양에 차이가 있어, 서로 다른 장단점이 존재


CPU 캐시

컴퓨터는 용량이 큰 파일 or 데이터를 처리해야 하는 반면, CPU는 한번에 32 or 64bit의 블록 단위의 적은 양의 데이터만 조작, 계산 (물론 굉장히 빠른 속도로 처리)


보조기억장치 (하드디스크)

엄청난 양의 데이터를 저장, 양이 많은 만큼 데이터를 읽고 쓰는데 많은 시간이 소요


주기억장치 (RAM)

보조기억장치보다 훨씬 빠른 데이터 처리가 가능, 실행중인 프로그램 or 파일에 더 빨리 접근될 수 있도록 메모리를 저장


L1, L2, L3 캐시

주기억장치보다 용량은 더욱 작아졌지만, 처리속도가 더욱 빨라진 기억장치

숫자가 낮을 수록 빠르며, CPU가 빠르게 처리할 수 있도록 아주 작은 단위(KB)의 데이터만 저장

숫자가 커질 수록 용량이 조금씩 커지지만 반대로 속도는 저하



추가 정리

컴퓨터로 들어오는 모든 데이터는 비트 단위로 CPU를 통과

실제로 CPU에는 아주 작은 단위의 공간만 있고, 한 번에 64bit 블록 단위의 계산만 처리

가령 두 수를 더하는 작업이 들어온다면 64bit data + 64bit data 방식으로 나누어서 처리되는 것


입력장치로 들어오는 모든 데이터는 CPU를 거쳐서 저장장치에 저장

이 때, 주기억장치(RAM)에 순차적으로 모든 데이터가 적재되고 이 데이터들은 보조기억장치에 복사(저장)


여기서 생각해볼 점, 처리속도가 빠른 RAM을 두고 굳이 느린 보조기억장치를 사용하는 이유

사용자는 컴퓨터에 비해 한없이 느린 속도로 처리 진행

즉, 아무리 많은 데이터가 저장되어 있어도 그 모든 데이터를 단 시간내에 열람 또는 실행시킬 수 없고, 그 때문에 모든 데이터가 처리속도가 빠른 RAM에 저장되어 있을 필요가 없다

(그거보다도 큰 이유는 그냥 비싸기 때문)


위 내용들을 정리해보면 크기는 크지만 느린 보조기억장치를 시작으로 주기억장치 → CPU 순으로 점점 좁아지는 라인을 거쳐서 넘어오게 되는데, 이 때의 병목현상을 방지하기 위해 빠르게 처리를 도와줄 수 있는 L3 → L2 → L1 캐시를 사용

(CPU가 항상 일할 수 있게 중간에서 점차 작은 단위로 데이터를 쪼개면서 빠른 속도로 처리)



3. 정보량을 표현하는 기본 단위 - 비트(bit)

핵심 키워드

  • 비트 (bit)
  • 바이트 (byte)

정보를 저장하고 연산을 수행하기 위해 사용하는 측정 단위

Binary digit의 줄임말로 이진 숫자라는 의미를 가지는데 0과 1, 두 가지 값만 가질 수 있기 때문

저장되어 있는 데이터를 수정하기 위해 비트에 직접적으로 수학적 연산을 수행


비트열 - 바이트(Byte)

하나의 비트는 0과 1로 이루어진 두 가지 데이터 값만 저장

내부에서 물리적으로 표현할 때는, 켜고 끌 수 있는 스위치라고 생각(끄기 = 0, 켜기 = 1)

한 개의 비트는 많은 양의 데이터를 나타내기에 부족하기 때문에, 여러 숫자 조합, 문자열을 나타내기 위해서는 비트열을 사용

이 때 여덟 개의 비트가 모여 만들어지는 비트열이 바이트(Byte)

1byte = 8bit, 1bit = 0 or 1 이기 때문에 2^8 = 256 개의 서로 다른 바이트가 존재



추가 정리

KB, MB, GB, TB ··· 데이터의 측정단위가 1024를 기준으로 오르는 것은 2진수이기 때문

위에서 살펴봤듯 컴퓨터는 전기가 꺼지면 0, 켜지면 1과 같은 전기적 신호로 연산을 수행하는데 해당 방식의 연산에서 가장 적합한 수 표현은 2진수이기 때문에 2의 제곱 단위로 끊어서 단위를 측정

여담으로 컴퓨터의 저장장치를 구매할 때 500GB를 샀지만 480490GB와 같이 저장공간이 줄어든 것 처럼 보이는 이유는 제조사에서는 2진수 표기법이 아닌 미터법을 적용하여 1000KB를 1MB와 같이 적용하기 때문이다(쌓이고 쌓여서 1020GB씩 차이가 발생)



4. 2진수

핵심 키워드

  • 2진수
  • 10진수

bit란 이진법의 최소단위로, 숫자 0,1을 이용해 신호를 나타내는 최소의 단위

두 가지의 수 체계로 이루어진 비트만으로 수학적 연산을 하기 위해 컴퓨터는 2진수를 사용


수체계

인간이 사용하는 수의 체계는 10진수, 0~9까지 10개의 숫자를 이용하여 값을 표현

10진수의 각 자리는 10의 거듭제곱을 표현

위와 같은 이유로 인간은 1 2 3 이라는 수를 보여주었을 때, 3개의 숫자로 끊어서 볼 수도 있지만 123과 같은 백의 자리 수로 보기도 한다

(1 × 10^2) + (2 × 10^2) + (8 × 10^0) = 100 + 20 + 3 = 123

이와는 다르게 컴퓨터는 전기적 신호 0, 1을 이용하여 2진수를 사용

0~1 2개의 숫자를 이용하기 때문에 동일한 123을 표현한다면 위와 같은 방법으로는 표현할 수 없으며 정보를 담을 수 있는 1byte 기준, 아래와 같이 표현할 수 있다

128:0 + 64:1 + 32:1 + 16:1 + 8:1 + 4:0 + 2:1 + 1:1 = 0111 1011 = 123
 2^7    2^6     2^5    2^4   2^3   2^2   2^1   2^0

8bit는 각 자리별로 128, 64, 32, 16, 8, 4, 2, 1을 나타내며, 각 자리에 전기신호가 꺼지면 0, 켜지면 1로 수를 계산한다



추가 정리

API (Application Programming Interface)

운영체제와 응용프로그램 사이의 통신을 위해 사용되는 언어나 메시지 형식의 함수 집합체

쉽게 말해서 프로그램이 동작하는데 필요한 함수들을 모아놓은 도서관이며, 이 함수들은 프로그램을 사용하는 사용자 관점의 최소한의 필수 기능이다


ASCII, American Standard Code for Information Interchange

  • (이름에서 알 수 있듯) 1960년 미국에서 제시한 표준 코드 체계

초창기 컴퓨터에는 다양한 방법으로 문자를 표현했고, 호환 등 여러 문제가 발생

이에 ANSI (American National Standards Institute), 표준 협회에서 표준 코드 체계라는 것을 제안하게 되었고 그것이 현재의 ASCII Code로 사용

초기 ASCII는 7비트만 활용하여 1비트는 데이터 표현 목적으로 사용하지 않았는데, 통신 에러 검출을 위한 Parity Bit 사용을 위해 사용했다고 한다

(또한, 영어는 26개의 문자로 대문자, 숫자, 특수문자 등을 표현해도 128개로 표현 가능)

Unicode

하지만 시간이 흘러 한글, 한자 기타 다른 언어들까지 표현을 하기 위해서는 턱없이 부족하게 되었고, 이와 같은 이유로 용량을 확장 2byte(2^16 = 65536) 체계가 갖추어진 것

(고어 또는 토속어 등의 모든 문자를 담기 위해서는 이 또한 부족하여 보충언어판을 정의)


프로그래밍 언어 타입의 char형이 2byte인 이유가 위 내용을 기준으로 언어의 표현 체계를 조정하였기 때문



5. ASCII 코드

  • 문자를 컴퓨터가 이해할 수 있는 이진 데이터, 또는 이진 데이터를 컴퓨터가 이해할 수 있는 문자로 변환하는 표준 방법

ASCII 인코딩 표준

텍스트 데이터를 저장하기 위해 사용하는 표준코드체계

ASCII에서 알파벳 소문자는 같은 대문자 글자보다 항상 2^5만큼 크기 때문에 소문자와 대문자 간의 변환이 쉽다

예) 'A' = 65 → 64:1, 1:1
    'a' = 96 → 64:1, [32:1], 1:1

    'F' = 70 → 64:1, 4:1, 2:1
    'f' = 101 → 64:1, 32:1, 4:1, 2:1

위 예시와 같이 대문자에서 2^5 자릿수인 32를 표현하는 부분이 1이 되면 소문자 표현이 가능


ASCII의 한계

2진수 추가 정리 부분에서 짧게 정리해보았던 내용으로, 결국 전 세계의 수 많은 고유 언어들과 수학 기호 등의 문자를 표기하기 위해서는 8bit = 256 체계로는 부족했고 더 많은 문자들을 표현할 수 있는 유니코드가 탄생

유니코드 : 100만개 이상의 문자들을 나타낼 수 있는 문자 인코딩 표준

​ (ASCII의 첫 128개 문자와 유니코드의 첫 128개 문자는 동일하여 서로 호환)



6. 16진수

인간이 사용하는 10진수와 비교했을 때 16진수는 2진수에 완벽히 대응하는 수체계

8bit를 반으로 나누어 4bit 4bit 형태로 대응시켰을 때 09 and AF 총 15개로 4bit를 온전히 표현

(반면에 10진수는 8bit를 완벽히 대응할 수 없다)

컴퓨터 또한 데이터를 처리하는데 있어서 위와 같은 장점으로 인해 16진수 수체계로 표현하는 경우가 많다

255:11111111 → 4bit형태 1111 1111 → 16진수 형태 f f → 0xff

여기서 0x는 16진수라는 것을 표현하기 위해 0x를 붙인 것일 뿐, 특별한 쓰임새는 없다


16진수의 유용성

컴퓨터가 이해할 수 있는 2진수로 수를 표현하다보면 어쩔 수 없이 길이가 길어진다

하지만 16진수는2진수로 표현했을 때 보다 간결해지며, 8개의 비트가 모인 바이트 단위로 정보를 표현

2개의 16진수 0x16은 1byte의 2진수로 변환



7. 이미지

핵심 키워드

  • 이미지 파일 형식
  • 확장자
  • JPG
  • BMP

일반적으로 흔히 알려진 이미지 파일 형식으로 비트맵(.bmp), JPG(.jpg), PNG(.png), GIF(.gif) 등이 있다

유형들간에는 이미지 파일의 크기나 선명도 등의 장단점이 있을 수 있다


사진 파일에 들어있는 정보

이미지 별로 다양한 파일 형식으로 저장되는데, 저장 형식에 따라 파일 안에 들어가는 비트 데이터의 구조가 변경

각 형식을 구분할 수 있도록 구분자라는 것을 넣어두어, 파일을 들여다보면 해당 파일의 정보를 알 수 있다

JPEG bitstream 구조 참조 : JPEG 이미지 포맷 (velog.io)(https://velog.io/@nurungg/JPEG-image-format)

출처 : nurungg.log


파일 형식

BMP : 비트맵 이미지라고 불리며, 파일의 압축을 하지 않는 대신 크기가 큰 단점이 있다

JPEG : 이미지를 압축하는 장점, 1600만 색상을 표현하여 고해상도를 나타내기에 적합

GIF : 빠른 전송을 위한 압축저장 방식으로 JPEG보다 압축률은 낮지만 원본의 손상이 적다

PNG : JPEG와 GIF의 장점만을 합쳐 놓은 방식, 압축률이 좋고 원본의 손상이 적다



8. 가상 현실과 증강 현실

핵심 키워드

  • 가상 현실
  • 증강 현실

Virtual Reality, Augmented Reality 접해보지 못한 사람들에게도 이제는 친숙한 단어

가상 현실은 말 그대로 가상의 현실에 내가 옮겨가는 반면, 증강 현실은 기존의 나의 주변환경은 그대로고 그 위에 영상, 게임 등의 효과를 입히는 기술


가상 현실의 원리

가상현실(VR)은 가상의 환경 또는 상황을 컴퓨터로 만들어 마치 실제로 그 상황에 내가 있는 것 처럼 상호 작용을 할 수 있는 인터페이스

인간의 눈은 서로 떨어져 보는 각도가 달라지며, 양안시차가 발생한다고 하는데 이 때문에 원근감을 느끼고 물체를 입체적으로 인식할 수 있다고 한다

이와 같은 원리를 이용, VR기기의 렌즈에 인간의 양안 시차만큼의 다른 각도로 촬영된 영상이 재생되며 이를 사용시 현실과 같은 느낌의 입체감을 느낄 수 있는 것이다

이 때 바라보는 방향에 따른 영상 변환을 위해 모션 트래킹 센서라는 것을 사용

가로, 세로, 높이를 측정하는 센서가 착용자의 움직임을 읽고 영상 화면을 조정


증강 현실의 원리

가상 현실과는 다르게 가상의 물체와 직접적인 상호작용을 체험 불가

현실의 환경에 가상의 이미지가 겹쳐서 보여지는 것

이 점을 제외하고 나머지 구동에 필요한 요소나 방식들은 가상 현실과 동일


가상 현실과 증강 현실의 활용 범위

가상 현실은 시간, 장소, 위험부담에서 벗어나 사실적인 체험이 가능하기 때문에 여러 장점이 있다

여러 분야에서도 그 장점들을 잘 활용할 수 있는 부분이 많기 때문에 효과적인 기술 (몰입감은 덤)

증강 현실은 사용자에 있어서 주변의 사물 정보를 더욱 빠르게 받아들일 수 있게 만든다

현실에서 표현이 제한되어있던 부분을 증강 현실을 통해 더욱 자세하게 제공해주는 것이 가능