4 분 소요

  • 컴퓨터가 이해하는 정보
    • 데이터 - 컴퓨터가 이해하는 숫자, 문자, 동영상과 같은 정적인 정보
    • 명령어 - 데이터를 움직이고 컴퓨터를 작동시키는 정
  • 컴퓨터의 핵심 부품 4가지
    • 중앙처리장치 CPU
    • 주기억장치 메모리 → 보통 RAM을 지칭
      • RAM, ROM으로 나뉨
    • 보조기억장치
    • 입출력장치

전체적 구조

  • 메인보드
    • 시스템 버스
    • CPU - 시스템 버스와 연결
      • ALU - 산술논리연산장치
      • 제어장치
      • 레지스터
    • 메모리 - 시스템 버스와 연결
    • 보조기억장치 - 시스템 버스와 연결
    • 모니터, 키보드, 마우스 등의 입출력장치 - 시스템 버스와 연결

메모리

  • 실행되고 있는 명령어, 데이터를 저장함
  • 저장된 명령어와 데이터의 위치는 정리되어 있어야 함 - 주소를 이용
<프로그램의 실행을="" 위해서는="" 메모리에="" 저장되어="" 있어야="" 함=""> <메모리는 현재 실행중인 프로그램의 명령어, 데이터를 저장> <메모리에 저장된="" 값은="" 주소로="" 알="" 수="" 있음=""> #### CPU 메모리에 저장된 명령어를 읽고 해석하며 실행함 - 산술논리연산장치 ALU - 계산기, 대부분의 계산 수행 - 레지스터 - 임시 저장장치, 프로그램 실행시 필요한 값을 저장함 - 제어장치 - 전기 신호를 내보내며 명령어를 해석함 - 제어 신호 : 컴퓨터 부품을 관리하고 작동시키기 위한 전기 신 #### 보조기억장치 메모리는 가격이 비싸 용량이 작으며, 전원이 꺼지면 저장된 내용을 잃으므로 메모리보다 크기가 크며 전원이 꺼져도 내용을 저장하는 저장장치 - 하드디스크, SSD, USB, DVD, CD-ROM - 실행되는 프로그램의 저장이 아닌 보관할 프로그램을 저장 #### 입출력장치 컴퓨터 외부에 연결되어 내부와 정보를 교환함 - 보조기억장치는 관점에 따라 입출력장치가 될 수 있음 → 보조기억장치와 입출력장치를 주변장치라고 통칭하기도 함 - 보조기억장치는 모니터, 마우스, 키보드와 같은 입출력장치와 비교하여 메모리를 보조한다는 특별한 기능을 수행하게 됨 #### 메인보드, 시스템버스 메인보드 = 마더보드 - 부품을 부착할 수 있는 슬롯과 단자가 있으며 - 메인보드에 연결된 부품들은 서로 정보를 주고받는데, 메인보드 내부의 버스라는 통로가 있기 때문 - 여러 버스 가운데 컴퓨터의 네 가지 핵심 부품을 연결하는 가장 중요한 버스 = 시스템 버스 - 시스템버스 - 주소 버스 - 주소를 주고받음 - 데이터 버스 - 명령어와 데이터를 주고받음 - 제어 버스 - 제어 신호를 주고받음 #### 0과 1로 숫자 표현하기 `비트` ; 0과 1을 나타내는 가장 작은 정보의 단위 - 2비트는 2^2 상태를 표현할 수 있음 `바이트` ; 여덟 개의 비트를 묶은 단위 1바이트 = 8비트 = 2^8개의 정보 1바이트 * 1000 = 1킬로바이트 1킬로바이트 * 1000 = 1메가바이트 1메가바이트 * 1000 = 1기가바이트 1기가바이트 * 1000 = 1테라바이트 `워드` ; CPU가 한번에 처리 가능한 데이터의 크기 - CPU가 16비트를 한번에 처리가능하다면 1워드 = 16비트 - 하프워드, 풀워드, 더블워드라고 부를 수 있음 - 현대 컴퓨터의 워드 크기는 32 또는 64비트 `이진법` ; 0과 1만으로 모든 숫자를 표기할 수 있음 숫자가 1을 넘어가는 순간 자리올림을 하면 됨 - 십진수인지, 이진수인지 구분하기 위하여 1. 이진수 앞에 아래첨자(2)를 붙이기 - 이진수를 수학적으로 표기할 때 1. 이진수 앞에 0b를 붙임 - 코드 상에서 이진수를 표기할 때 사용 `이진수의 음수 표현` - 2의 보수를 구하기 - 어떤 수를 그보다 큰 2^n에서 뺀 값을 의미 11(2)의 2의 보수는 100(2)에서 11(2)를 뺀 01(2)가 되는 것 - 모든 0과 1을 뒤집고, 거기에 1을 더한값으로 이해하면 됨 → 실제로 이진수만 봐서는 음/양수 구분 어려우므로 `플래그를 사용함` `플래그` : 부가 정보 - 4장에서 자세히 - 2의 보수 표현의 한계 - 0을 음수로 표현하기 위해서 - 0000을 뒤집고 1을 더하면 - 10000이 되므로 문제가 발생 → 이를 해결하기 위해서 자리 올림이 발생한 비트의 1을 버려서 해결할 수 있음 - 근데 2^3을 음수로 표현하기 위해서 - 1000을 뒤집고 1을 더하면 - 1000, 양수로 표현한 값과 같아지므로 - n비트로는 -2^n과 2^n을 동시에 표현할 수 없다는 한계가 존재함 - 십육진법 - 이진법을 이용해 모든 숫자를 표현할 수 있으나, 숫자의 길이가 너무 길어진다는 단점이 존재함 - 데이터를 표현하기 위해서 십육진법을 자주 사용하는데, 수가 15를 넘어가는 시점에 자리올림을 하게 됨 - 10, 11, 12, 13, 14, 15를 A, B, C, D, E, F - 이진수와 마찬가지로 숫자 아래 아래첨자를 붙이거나_(16) 숫자 앞에 0x를 붙여 구분함 - 십육진수를 이진수로 변환하는 법 - 십육진수를 이루는 숫자 하나를 이진수로 표현하려면 4비트가 필요함 - 이를 위해서 십육진수 한 글자를 4비트의 이진수로 간주한다 - 1A2B_(16) → 1(16), A(16), 2(16), B(16) → 0001(2), 1010(2), 0010(2), 1011(2) ⇒ 0001101000101011(2)가 이진수로 표현한 값이 됨 - 이진수를 십육진수로 변환하는 법 - 이진수 숫자를 네 개씩 끊어 하나의 십육진수로 변환한 뒤에 이어 붙이면 됨 - 하드웨어 관련 개발 분야에서는 코드에 십육진수를 직접 쓰는 경우도 많음 ### 0과 1로 문자 표현하기 #### 문자 집합, 인코딩 문자 집합 ; 컴퓨터가 인식하고 표현할 수 있는 문자의 모음, 문자 집합에 속해있는 문자만 이해할 수 있음 문자 인코딩 ; 문자 집합에 속한 문자를 0과 1로 변환하여 컴퓨터가 이해할 수 있도록 하는 과정 문자 디코딩 ; 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있도록 변환하는 과정 #### 아스키 코드 ASCII ; 초창기의 문자 집합, 영어 알파벳, 아라비아 숫자, 특수 문자 - 7비트로 표현됨 → 128개의 문자를 표현할 수 있음 - 실제로는 8비트지만 1비트는 패리티비트이며 오류 검출을 위해서 사용함 - 간단하게 인코딩된다는 장점이 있으나 단점도 존재함 → 한글 표현 X - 이후 확장 아스키가 등장하였으나, 개선할 수 없었음 #### EUC-KR - 위의 단점을 개선하기 위한 한글 인코딩 방식 - 한글은 각 음절 하나하나가 초성, 중성, 종성으로 이루어져 있으므로 한글 인코딩에는 두 가지 방식이 존재함 1. 완성형 인코딩 - 초, 중, 종성의 조합으로 이루어진 하나의 글자에 고유한 코드를 부여 1. 조합형 인코딩 - 초, 중, 종성 각각을 위한 비트열을 할당하여 조합으로 글자 코드를 완성함 → EUC-KR은 대표적인 완성형 인코딩으로 초+중+종성이 모두 결합된 한글 단어에 2바이트 크기의 코드를 부여함 → 16비트가 필요함(한 글자) → 네 자리 십육진수로 표현할 수 있음 - 총 2,350개의 한글 단어를 표현할 수 있지만, 실질적으로 모든 한글 조합을 표현할 수 있을 정도로 많은 양은 아님 - 모든 한글을 표현할 수 없다는 사실은 웹사이트의 한글 깨짐, 은행 거래등에서 피해를 입는 사람이 생긴다거나 등의 문제가 발생함 → CP949를 이용하여 EUC-KR의 문제점을 조금이나마 개선할 수 있지만, 여전히 한계가 존재함 #### 유니코드(!)와 UTF-8 언어별로 인코딩을 해야한다면 다국어 지원 프로그램을 제작할 때 각 나라 언어의 인코딩을 모두 알아야 함 → 모든 언어를 아우르는 문자집합, 표준 인코딩이 존재한다면 언어별로 인코딩하지 않아도 됨 → 이를 위한 유니코드 문자 집합 - 현대 문자를 표현할 때 가장 많이 사용됨 -

댓글