CS/컴퓨터구조

컴퓨터 구조 이해하기

삶_ 2023. 2. 20. 10:42

 

컴퓨터 구조를 알아야하는이유

  • 성능을 고려한 개발을 할수있어서

 

컴퓨터 구조 이해하기

 

CPU

  • 컴퓨터의 두뇌
  • 메모리에 저장된 값(명령어)을 읽고 해석하고 실행
  • 내부 구성 부품
    • ALU
      • 계산하는 회로들의 모임
      • 메모리에서 불러온 명령어의 수식을 계산
    • 제어장치
      • 제어 신호(명령)라는 전기 신호를 내보내고 명령어를 해석하는 장치
      • 메모리 읽기 : 명령을 해석
      • 메모리 쓰기
    • 레지스터
      • CPU 내부의 작은 저장 장치
      • 메모리에서 명령어를 불러와 저장함

 

메모리

  • 보통 램을 의미함
    • 전원이 꺼지면 저장된 내용을 잃는다
    • 따라서 보조기억장치에 보관할 정보를 저장함
  • 실행할 정보를 저장함
  • 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품
    • 프로그램이 실행되기 위해서 메모리에 저장되어 있어야 함
  • 메모리는 실행되는 프로그램의 명령어나 데이터를 저장
  • 메모리에 저장된 값의 위치는 주소로 알수있음

 

보조 기억장치

  • SSD 등 백업용으로 쓸수있는 장치
  • 전원이 꺼져도 저장할수있고 보관할 정보를 저장함

 

입출력 장치

  • 컴퓨터와 정보를 주고받는 장치. (메모리를 보조하는 용도라고 생각하기)
  • 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품

 

마더보드(메인보드)

  • 네가지 핵심 부품을 연결해줄 수 있는 판

 

시스템 버스

  • 컴퓨터의 핵심 부품을 연결하는 버스
  • 내부구성
    • 주소 버스 : 주소를 주고받는 통로
    • 데이터 버스 : 명령어와 데이터를 주고받는 통로
    • 제어 버스 : 제어 신호를 주고받는 통로

0과 1로 숫자를 표현하는 법

정보 단위

  • 비트 : 0과 1을 표현하는 가장 작은 정보 단위
  • 프로그램은 수많은 비트로 이루어짐
  • 비트보다 큰 단위 : 바이트, 킬로바이트, 메가바이트 …
    • 1byte(8bit), 1kB(1000byte), 1MB(1000kB), 1GB(1000MB)
  • 워드
    • CPU가 한 번에 처리할 수 있는 정보의 크기 단위
    • 하프 워드 : 워드의 절반 크기
    • 풀 워드 : 워드 크기
    • 더블워드 : 워드의 두 배 크기
  • 이진법 (binary) : 0과 1로 수를 표현하는 법
    • 표기 : 1000(2), 0b
  • 십육진법 : 이진법으로는 숫자의 길이가 길기 때문에 사용
    • 이진수 ↔ 십육진수 변환 방식이 편리해서 잘 쓰임
    • 10~15가 A~F로 표현됨
    • 표기 : 1000(16), 0x

 

0과 1로 문자를 표현하는 법

문자집합과 인코딩

  • 문자집합 : 컴퓨터가 이해할 수 있는 문자의 모음
  • 인코딩 : 코드화하는 과정. (문자 → 0과 1로 이루어진 문자 코드)
  • 디코딩 : 코드를 해석하는 과정 (0과 1로 이루어진 문자 코드 → 문자)

 

아스키코드

  • 알파벳, 일부 특수문자 및 제어문자
  • 7비트로 하나의 문자 표현, 1비트는 오류검출을 위한 비트

 

한글 인코딩

  • 초성, 중성, 종성의 조합으로 이루어진 한글.
  • 아직은 모든 한글을 표현하기엔 턱없이 부족
  • 완성형 인코딩 방식
    • 초성, 중성, 종성을 다 합쳐 완성된 형태에 코드를 부여
    • ex) 홍,길,동…
    • EUC-KR
  • 조합형 인코딩 방식
    • 초성, 중성, 종성 따로 나뉘어진 형태에 코드를 부여
    • ex) ㅎ,ㅗ,ㅇ…

 

유니코드 문자집합

  • 유니코드
    • 모든 언어, 특수문자, 이모티콘까지 통일된 문자 집합
  • 유니코드 인코딩 방식
    • utf-8
      • 가변길이 인코딩 : 인코딩 결과가 1바이트~4바이트
      • utf : 유니코드 인코딩 방법

 

컴파일 언어 및 고급 언어

 

고급언어와 저급언어

  • 고급언어 : 개발자가 이해하기 쉬운 언어 (ex. 파이썬, 자바 소스 코드)
  • 저급언어 : 컴퓨터가 이해하고 실행하기 위해 만들어진 언어 (= 명령어)
    • 고급언어에서 저급언어로 변환되어 컴퓨터로 전달됨
    • 기계어 : 이진수로 표현.
    • 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 저급언어 (고급 언어와 기계어 사이)

 

컴파일 언어와 인터프리트 언어

  • 고급언어가 저급언어로 변환되는 대표적인 두 방식
  • 컴파일 언어
    • 컴파일 : 컴파일러에 의해 한번에 전체를 스캔하고 실행파일을 만들어서 실행 후 저급언어로 변환하는 과정
      • 컴파일 결과로 저급 언어인 목적코드가 생성됨
      • 훑고 중간에 오류가 있으면 실행하지 않고 컴파일이 알려줌
    • 초기 스캔 과정이 오래 걸리고 메모리가 많이 듬
  • 인터프리터 언어
    • 인터프리터에 의해 위에서 아래로 한 줄씩 읽어 번역 후 실행함
      • 오류가 나올때까지 실행함
    • 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음
    • 효율적인 메모리 사용

 

명령어의 구조

  • 연산 코드
    • 수행할 연산
    • 연산 코드의 종류
      • 데이터 전송 : 데이터를 옮기거나 메모리를 저장하라 등의 명령어들 전송
      • 산술/논리 연산 : 나눗셈/뺄셈/더하기
      • 제어 흐름 변경 : 실행 순서를 옮기거나 멈추는
  • 오퍼랜드
    • 연산에 사용될 데이터
    • 연산에 사용될 데이터가 저장된 위치 (=주소 필드)
    • 없을 수도 있고 하나 이상일 수도 있음