Skip to content

학습 기록 | w1 지현

Jihyun Lim edited this page Feb 5, 2025 · 2 revisions

1. 컴퓨터 구조 시작하기

01-1. 컴퓨터 구조를 알아야 하는 이유

#문제해결 #성능/용량/비용

성능, 용량, 비용을 고려한 개발

01-2. 컴퓨터 구조의 큰 그림

#데이터 #명령어 #메모리 #CPU #보조기억장치 #입출력장치 #시스템버스

컴퓨터가 이해하는 정보

0과 1로 표현된 정보

  • 데이터 data
    • 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
  • 명령어 instruction
    • 컴퓨터를 실질적으로 작동시키는 정보

컴퓨터의 네가지 핵심 부품

  • 중앙처리장치 (CPU, Central Procession Unit)
  • 주기억장치 (메모리, main memory)
    • RAM (Random Access Memory)
    • ROM (Read Only Memory)
  • 보조기억장치 (secondary storage)
  • 입출력장치 (input/ouput[I/O] device)
  1. 메모리

    • 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
    • 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
    • 메모리에 저장된 값의 위치는 주소로 알 수 있다.
  2. CPU

    • 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 부품

    내부 구성 요소

    • 산술논리연산장치 ALU;Arithmetic Logic Unit
      • 계산기
    • 레지스터register
      • 임시 저장 장치
    • 제어장치 CU;ControlUnit
      • 제어신호라는 전기 신호를 내보내고 명령어를 해석
  3. 보조기억장치

    메모리보다 크기가 크고 전원이 꺼져도 내용을 잃지 않는 저장 장치

    • 하드 디스크, SSD, USB 메모리, DVD, CD-ROM
  4. 입출력장치

    컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치

    • 마이크, 스피커, 프린터, 마우스, 키보드

메인보드와 시스템 버스

  • 메인보드; 마더보드
  • 시스템버스
    • 컴퓨터의 네가지 핵심 부품을 연결하는 버스
    • 주소 버스, 데이터 버스, 제어 버스

2. 데이터

02-1. 0과 1로 숫자를 표현하는 방법

#비트 #바이트 #이진법 #2의 보수 #십육진법

비트bit

  • 0과 1을 나타내는 가장 작은 정보 단위
  • 2가지 정보 표현 가능
1바이트(1byte) 8비트(8bit)
1킬로바이트(1kB) 1,000바이트(1,000byte)
1메가바이트(1MB) 1,000킬로바이트(1,000kB)
1기가바이트(1GB) 1,000메가바이트(1,000MB)
1테라바이트(1TB) 1,000기가바이트(1,000GB)

이진법

1000₍₂₎

0b1000

2의 보수

어떤 수를 그보다 큰 2ⁿ에서 뺀 값

= 모든 0과 1을 뒤집고, 거기에 1을 더한 값

💡 0이나 2ⁿ 형태의 이진수에 2의 보수를 취하면 원하는 음수값을 얻을 수 없음

십육진법

15₍₁₆₎

0x15

십육진수와 이진수의 변환

십육진수 → 이진수

  • 십육진수 중 한 글자를 4비트의 이진수로 간주

이진수 → 십육진수

  • 이진수 숫자 4개씩 끊어 변환

02-2. 0과 1로 문자를 표현하는 방법

#문자집합 #아스키코드 #EUC-KR #유니코드

문자 집합

  • 컴퓨터가 인식하고 표현할 수 있는 문자의 모음

문자 인코딩

  • 문자를 0과 1로 변환하는 과정

문자 디코딩

  • 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정

아스키코드 ASCII

; American Standard Code for Information Interchange

  • 128개의 문자 표현

확장 아스키 Extended ASCII

  • 1비트를 추가한 8비트의 아스키 코드
  • 256개 표현 가능

한글 인코딩

  • 완성형 인코딩

    • 가 - 1, 나 - 2, 다 - 3
    • 초성, 중성, 종성이 결합된 단어에 2바이트 크기의 코드를 부여

    EUC-KR

    • 완성형 인코딩

    CP949

    • EUC-KR의 확장 버전
  • 조합형 인코딩

    • 초성, 중성, 종성 각각을 위한 비트열 할당 후 조합

유니코드 unicode

  • 다양한 한글 및 대부분 나라의 문자, 특수문자, 화살표, 이모티콘까지도 코드로 표현할 수 있는 통일된 문자 집합
  • 인코딩 방법에 따라 UTF-8, UTF-16, UTF-32 등으로 구분

3. 명령어

03-1. 소스 코드와 명령어

#고급 언어 #저급 언어 #기계어 #어셈블리어 #컴파일 언어 #인터프리터 언어

고급 언어와 저급 언어

고급언어 high-level programming language

  • 사람을 위한 언어

저급언어 low-level programming language

  • 컴퓨터가 직접 이해하고 실행할 수 있는 언어

  • 기계어, 어셈블리어

    기계어 machine code

    • 0과 1로 이루어진 명령어 모음

    어셈블리어 assembly language

    • 0과 1로 표현된 명령어(기계어)를 읽기 편하게 번역한 언어

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

  • 고급언어 (컴파일 언어) — (컴파일) —> 저급언어

  • 고급언어 (인터프리터 언어) — (인터프리트) —> 저급언어

컴파일 언어

  • 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어

  • C

    컴파일 compile

    • 컴파일 언어로 작성된 코드 전체가 저급 언어로 변환되는 과정

    컴파일러 compiler

    • 컴파일을 수행해주는 도구
    • 문법적 오류, 실행가능성, 불필요한 코드를 판단하여 컴파일
    • 오류를 하나라도 발견하면 실패

인터프리터 언어

  • 인터프리터에 의해 소스 코드가 한 줄 씩 실행되는 고급언어
  • Python

인터프리터

  • 소스 코드를 한 줄 씩 저급 언어로 변환하여 실행해 주는 도구
  • 소스 코드 전체를 변환하는 시간을 기다리지 않아도 됨
  • 문제가 있는 코드 전까지 수행
  • 컴파일 언어보다 느림

목적 파일 vs 실행 파일

목적 코드 object code

  • 컴파일 수행 후 변환된 컴퓨터가 이해할 수 있는 저급언어

목적 파일

  • 목적 코드로 이루어진 파일
  • .exe

목적 파일 — (링킹 linking) —> 실행파일

.c → .o → .exe

링킹

  • 저급 언어를 기능과 연결하는 과정

03-2. 명령어의 구조

#명령어 #연산 코드 #오퍼랜드 #주소 지정 방식

연산 코드와 오퍼랜드

명령어 = 연산 코드 + 오퍼랜드

연산 코드 operation code

  • 연산자
  • 명령어가 수행할 연산

오퍼랜드 operand

  • 피연산자
  • 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치

주소 필드

  • 오퍼랜드 필드
  • 메모리 주소나 레지스터 이름

오퍼랜드의 개수에 따른 명령어의 구분

  • 0-주소 명령어
  • 1-주소 명령어
  • 2-주소 명령어
  • 3-주소 명령어

연산 코드

  1. 데이터 전송
    • MOVE
    • STORE
    • LOAD(FETCH)
    • PUSH
    • POP
  2. 산술/논리 연산
    • ADD / SUBTRACT / MULTIPLY / DIVIDE
    • INCREMENT / DECREMENT
    • AND / OR / NOT
    • COMPARE
  3. 제어 흐름 변경
    • JUMP
    • CONDITIONAL JUMP
    • HALT
    • CALL
    • RETURN
  4. 입출력 제어
    • READ(INPUT)
    • WRITE(OUTPUT)
    • START IO
    • TEST IO

주소 지정 방식

하나의 오퍼랜드 필드로 표현할 수 있는 정보가 한정되어 있으므로 데이터의 주소를 넘김

유효 주소 effective address

  • 연산의 대상이 되는 데이터가 저장된 위치

주소지정 방식 addressing mode

  • 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법
주소 지정 방식 오퍼랜드 필드 내용 장점 단점
즉시 주소 지정 방식 연산에 사용할 데이터 빠름 데이터 크기 작음
직접 주소 지정 방식 유효 주소(메모리 주소) 데이터 크기 조금 큼 데이터 크기 조금 작음
간접 주소 지정 방식 유효 주소의 주소 데이터 크기 큼 느림(두 번 접근)
레지스터 주소 지정 방식 유효 주소(레지스터 이름) 메모리 접근보다 빠름 데이터 크기 작음
레지스터 간접 주소 지정 방식 유효 주소를 저장한 레지스터 간접 주소 지정 방식보다 빠름

스택과 큐

스택 stack

  • 한쪽 끝이 막혀있는 통과 같은 저장 공간
  • LIFO(Last In First Out)

큐 queue

  • 양쪽이 뚫려 있는 통과 같은 저장 공간
  • FIFO(First In First Out)

1주차 문제

  1. 컴퓨터의 4가지 핵심 부품을 그려보고 간단하게 설명해보세요. (1장)
  2. 컴파일 언어와 인터프리터 언어의 차이점 (3장)
  3. 주소 지정 방식 설명 (3장)

Clone this wiki locally