본문 바로가기
selfstudy/컴퓨터구조+운영체제

chapter 01 ~ 03. 컴퓨터 구조, 데이터, 명령어

by Lacuna028 2023. 7. 4.

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

- 문제 상황을 빠르게 진단 가능

- 문제 해결 실마리를 다양하게 찾을 수 있음

- 프로그램을 위한 최적의 컴퓨터 환경을 세팅할 수 있음

 

2. 컴퓨터 구조 

- 크게 아래와 같이 두가지로 기본 컴퓨터 구조 지식을 나눌 수 있음

1) 컴퓨터가 이해하는 정보

  • 데이터(data)
  • 명령어(instruction)

2) 컴퓨터의 네 가지 핵심 부품

  • 중앙처리장치(CPU; central processing unit)
  • 주기억장치(메모리, main memory)
  • 보조기억장치(secondary storage)
  • 입출력장치(I/O device)

 

3. 컴퓨터의 핵심 부품

1) 주기억장치(메모리)

- 현재 실행되는프로그램의 명령어와 데이터를 저장하는 부품

- 메모리에 빠르고 효율적으로 접근하기 위해 주소(address)를 사용

 

2) 중앙처리장치(CPU)

- 컴퓨터의 두뇌

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

- CPU 내부 구성 요소

  1. 산술논리연산장치(ALU; arithmetic logic unit)
    : 계산기. 
  2. 레지스터(register)
    : CPU 내부 임시 저장 장치
  3. 제어장치(CU; control unit)
    : 제어 신호를 내보내고 명령어를 해석하는 장치
    ex) cpu가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 "메모리 읽기" 제어 신호를 보냄

 

3) 보조기억장치

- 비휘발성 저장장치

- 메모리는 현재 실행되는 프로그램을 저장, 보조기억장치는 보관할 프로그램을 저장

 

4) 입출력장치

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

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

 

5) 메인보드와 시스템 버스

- 메인보드(마더보드; mother board)

: 여러 컴퓨터 부품을 연결함.

메인보드 내부에 버스라는 통로가 있어 이 시스템 버스를 통해 네가지 핵심 부품(cpu, 메모리, 보조기억장치, 입출력장치)을 연결함

 

- 시스템버스

: 주소 버스, 데이터 버스, 제어 버스가 있음

cpu가 시스템 버스를 통해 메모리의 값을 불러들이거나 저장함.

 

 

4. 데이터

1) 정보 단위

- 비트(bit): 0과 1을 나타내는 가장 작은 정보 단위

- 바이트(byte): 여덟 개의 비트를 묶은 단위(8bite)

- 1킬로바이트(1kB): 1,000 바이트(1,000byte)

- 1메가바이트(1MB): 1,000 킬로바이트(1,000kB) 

- 1기가바이트(1GB): 1,000 메가바이트(1,000MB)

- 1 테라바이트(1TB): 1,000 기가바이트(1,000GB)

 

cf) 워드(word): cpu가 한 번에 처리할 수 있는 데이터 크기

- cpu가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고, 한 번에 32 비트를 처리할 수 잇다면 1워드는 32비트가 됨.

 

2) 숫자 표현 방법: 이진법, 십진법, 십육진법

- 이진법: 0과 1로 모든 숫자를 표현하는 방법

- 십진법: 0 ~ 9까지의 숫자로 표현하는 방법

- 십육진법: 0 ~ 9, A,B,C,D,E,F로 숫자를 표현하는 방법. 

- 일반적으로 이진법과 십육진법을 많이 사용하는데, 그 이유는 이진법은 십육진법으로 표현이 쉽고, 반대의 경우도 마찬가지이기 때문.

 

 

3) 문자 집합 종류: 아스키 코드, EUC-KR, UTF-8

- 문자 집합: 컴퓨터가 인식하고 표현할 수 있는 문자 모음

- 아스키 코드(ASCII; american standard code for information interchange): 초창기 문자 집합 중 하나. 영어 알파벳, 아라비아 숫자, 일부 특수 문자 포함하여 총 128개 문자 표현.

- EUC-KR: 완성형 인코딩과 조합형 인코딩 중 대표적인 완성형 인코딩 방식. 초성, 중성, 종성이 모두 결합된 한글 단어에 2바이트 크기의 코드를 부여.

- CP949(code page 949): EUC-KR의 확장 버전

 유니코드(unicode): EUC-KR보다 훨씬 더 다양한 한글 포함.

- UTF-8: 가장 대표적인 문자 집합. 1바이트부터 4바이트가지의 인코딩 결과를 만들어냄.

 

 

5. 명령어  

  1) 프로그래밍 언어 종류: 고급 언어, 저급 언어

- 고급 언어(high-level programming language)

: 사람을 위한 언어

- 저급 언어(low-level programming language)

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

  • 기계어(machine code)
    : 0과 1의 명령어 비트로 이루어진 저급 언어
  • 어셈블리어(assembly language)
    : 기계어를 읽기 편한 형태로 번역한 저급 언어

2) 번역 방식에 따른 언어 구분: 컴파일 언어, 인터프리터 언어

- 고급언어로 작성된 소스 코드는 저급 언어로 변환되어 실행

- 번역방식에 따라 컴파일 방식과 인터프리터 방식으로 구분 

- 컴파일 언어(compile language):

  • 컴파일(compile): 컴파일 언어로 작성된 전체 소스 코드가 저급 언어로 변환되는 과정. (고급언어 → 저급언어)
  • 컴파일러(compiler): 컴파일을 수행해 주는 도구
  • 컴파일 언어: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
  • 대표적인 컴파일 언어: C
  • 컴파일 과정에서 오류를 하나라도 발견하면 해당 소스 코드는 컴파일에 실패함
  • 목적 코드(object code): 컴파일러를 통해 저급 언어로 변환된 코드

- 인터프리터 언어(interpreter language):

  • 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
  • 대표 인터프리터 언어: python
  • 인터프리터(interpreter): 소스 코드를 한 줄씩 저급 언어로 변환하여 실행해 주는 도구
  • 인터프리터 언어는 소스 코드를 한 줄씩 실행하기 때문에 문법 오류가 있는 N줄 이전까지는 정상 실행.
  • 일반적으로 인터프리터 언어는 한 줄씩 저급 언어로 해석해서 실행해야 하기 때문에 목적 코드(저급언어)를 실행하는 컴파일 언어보다 느림.

cf) 링킹(linking): 목적 파일이 실행 파일이 되는 작업

- 목적 파일과 실행 코드를 연결해주는 작업

- 링킹 작업을 해줘야 목적 파일이 실행 파일이 됨

 

 

3) 명령어 구조

- 명령어 구조: 연산코드(operation code) + 오퍼랜드(operand)

  • 연산코드(operation code): 명령어가 수행할 연산
    • 기본적인 연산 코드 유형(4가지)
      1. 데이터 전송
      2. 산술/논리 연산
      3. 제어 흐름 변경
      4. 입출력 제어
  • 오퍼랜드(operand, = 주소필드): 연산에 사용할 데이터 또는 데이터 저장 위치
    • 주로 연산에 사용할 데이터를 직접 명시하기 보다는 메모리 주소나 레지스터 이름이 담김
    • 0-주소 명령어: 오퍼랜드가 하나도 없는 명령어
    • 1-주소 명령어:오퍼랜드가 한 개인 명령어
    • 2-주소 명령어: 오퍼랜드가 두 개인 명령어
    • 3-주소 명령어: 오퍼랜드가 세 개인 명령어

- 주소 지정 방식(addressing mode): 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치 찾는 방법

  • 즉시 주소 지정 방식: 오퍼랜드 필드에 직접 연산에 사용할 데이터를 명시
  • 직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접 명시하는 방식
  • 간접 주소 지정 방식: 오퍼랜드 필드에 유효 주소의 주소를 명시
  • 레지스터 주소 지정 방식: 오퍼랜드 필드에 연산에 사용할 데이터를 저장한 레지스터를 명시
  • 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장, 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

- 스택과 큐

  • 스택(stack):한 쪽 끝이 막혀있는 통과 같은 저장 공간. 후입선출(LIFO; last in first out)로 데이터 관리
    • 명령어:
      • PUSH: 데이터 저장
      • POP: 데이터 출력
  • (queue): 양쪽으로 뚫려있는 통과 같은 저장 공간. 선입선출(FIFO; first in first out)로 데이터 관리

 


p.51

 다음 설명의 빈칸에 들어갈 알맞은 내용을 써보세요

프로그램이 실행되려면 반드시 (      )에 저장되어 있어야 합니다.

정답: 메모리

 

p.65

 1101(2)의 음수를 2의 보수 표현법으로 구해 보세요.

1101 → 0010 → 0011

1101(2)를 음수로 표현한 값은    입니다.

정답: 0011(2)

'selfstudy > 컴퓨터구조+운영체제' 카테고리의 다른 글

4주차 기본 미션  (0) 2023.07.25
3주차 기본미션  (0) 2023.07.20
2주차 기본 미션  (0) 2023.07.16
1주차 미션  (0) 2023.07.09