본문 바로가기
Computer Science/Computer Architecture, Operating System

[혼공컴운] 1주차_Chapter 01~03

by 양진주 2024. 1. 7.
기본 미션
p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기

선택 미션
p. 100의 스택과 큐의 개념을 정리하기

 

 

Chapter 0️⃣1️⃣

컴퓨터 구조 시작하기

 

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

- 문제 해결 능력 향상

- 성능, 용량, 비용 고려 ➡️ 최적화 가능 

 

2) 컴퓨터 구조의 큰 그림

컴퓨터 구조

➡️컴퓨터가 이해하는 정보

      - 데이터: 정적인 정보, 2진수로 표현

      - 명령어: 동적인 정보, 데이터를 작동시킴 [Chapter 03]

 

➡️컴퓨터의 네가지 핵심 부품(그림 참조)

      - 중앙처리장치(CPU) [Chapter 04]

        : 1. 메모리에 저장된 명령어 읽어들임 → 2. 명령어 해석 → 3. 명령어 실행

             - 산술논리연산장치(ALU): 계산기 

             - 레지스터: 프로그램을 실행하는 데 필요한 값 임시 저장, CPU 內 여러 레지스터 존재

             - 제어장치: 제어 신호 송신(제어 버스 이용) + 명령어 해석

 

      - 주기억장치(메모리) - RAM, ROM [Chapter 06]

        : 현재 "실행되는" 프로그램의 명령어 + 데이터 저장

            주소 → 메모리에 저장된 값의 위치 표현

            가격 ↑, 용량 ↓ + 전원이 꺼지면 내용 잃음 

             ⬇️

      - 보조기억장치 [Chapter 07]

        : 가격 ↓ , 용량 ↑ + 전원 꺼져도 내용 잃지 않음

              "보관할" 프로그램의 명령어 + 데이터 저장

           e.g.) 하드 디스크, SSD, USB 메모리, DVD, CD - ROM

     

      - 입출력장치 [Chapter 08]

        : 컴퓨터 외부에 연결, 컴퓨터 내부와 정보 교환 

메인보드(마더보드)

 : 컴퓨터 부품 + 슬롯 + 연결 단자 

    내부 버스 → 부품 정보 교환 (시스템 버스: 네 가지 핵심 부품 연결 - 주소 버스, 데이터 버스, 제어 버스)

❓ 기본 미션
Q. 프로그램이 실행되려면 반드시 [      ]에 저장되어 있어야 합니다. 
A. 메모리

 

 

Chapter 0️⃣2️⃣

데이터

 

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

비트: 가장 작은 정보 단위(0, 1)

1비트 ➡️ 2¹ 가지 정보

2비트 ➡️ 2² 가지 정보

3비트 ➡️ 2³ 가지 정보

...

n비트 ➡️ 2ⁿ 가지 정보 

1byte 8bit
1kB 1,000byte
1MB 1,000kB
1GB 1,000MB
1TB 1,000GB

  

➕ 워드: CPU가 한 번에 처리할 수 있는 데이터 크기

       - 하프 워드: 워드 * ½

       - 풀 워드: 워드 * 1

       - 더블 워드: 워드 * 2

 

0b 이진법 ₍₂₎

   - 음수 표현: 2의 보수 = 1의 보수 + 1 (플래그로 양음 구분)

           ⬆️                            ⬇️

(4비트 → 한 글자)  (한 글자 → 4비트)

           ⬆️                            ⬇️

0x 십육진법 ₍₁₆₎

 

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

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

     e.g.) 아스키 코드(7비트 + 1비트, 2⁷ = 128개): 한글 부재 

     ➡️ EUC - KR: 완성형 인코딩, 한 글자 2바이트 = 16비트, 모든 한글 단어 표현 불가

     ➡️ 유니코드: 다양한 방법으로 인코딩 → 대부분 나라의 문자 + 특수문자 등 표현 가능

 

문자 인코딩: 문자 → 이진수(문자 코드) 생성 

 

문자 디코딩: 이진수(문자 코드)  → 문자

 

❓기본 미션
Q. 1101₍₂₎의 음수를 2의 보수 표현법으로 구해보세요. 
A. 1101₍₂₎
     ⬇️ 모든 1와 0 뒤집기(= 1의 보수 구하기)
     0010
     ⬇️1 더하기
      0011₍₂₎

 

Chapter 0️⃣3️⃣

명령어

 

1) 소스 코드와 명령어

고급 언어: 사람을 위한 언어 

    -컴파일 언어: 소스 코드 전체 → 컴파일러 → 목적 코드 (오류 하나라도 발견 시, 컴파일 실패, 속도 ⬆️)

      e.g.) C언어

    -인터프리터 언어: 소스 코드가 한 줄 → 인터프리터 → 목적 코드 (오류가 있어도 직전까지 실행, 속도 ⬇️)

       e.g.) Python

 

컴파일 ⬇️ 인터프리트 

 

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

    - 기계어: 0과 1로 구성 

    - 어셈블리어: 기계어 번역, 프로그램의 작동 절차 추적/관찰 가능 

 

➕ 목적 코드 →링킹  실행 파일  

 

2)명령어의 구조

명령어

= 연산 코드: 명령어가 수행할 연산, 연산자, CPU마다 종류/생김새 상이함 

    - 데이터 전송: MOVE, STORE, LOAD(FETCH), PUSH, POP

    - 산술/논리 연산: ADD/SUBTRACT/MULTIPLY/DIVIDE, INCREMENT/DECREMENT, AND/OR/NOT:AND/OR/MOR, COMPARE

    - 제어 흐름 변경: JUMP, CONDITIONAL JUMP, HALT, CALL, RETURN: CALL

    - 입출력 제어: READ(INPUT), WRITE(OUTPUT), START IO, TEST IO

+ 오퍼랜드 필드(주소 필드) - 주소 지정 방식: 연산에 사용할 데이터가 저장된 위치(유효 주소: 메모리 주소, 레지스터 이름), 피연산자

    - 0-주소 명령어: 오퍼랜드가 하나도 없는 명령어

    - n-주소 명령어: 오퍼랜드가 n개인 명령어 

 

주소 지정 방식 

    - 즉시 주소 지정 방식: 연산에 사용할 데이터 오퍼랜드 필드에 직접 명시 표현 데이터 크기 ⬇️, 속도⬆️

    - 집적 주소 지정 방식: 유효 주소 직접적으로 명시   표현 데이터 크기 ⬆️ 하지만 유효 주소 제한 有

    - 간접 주소 지정 방식: 유효 주소의 주소 오퍼랜드 필드에 명시 유효 주소 범위 ⬆️, 속도 ⬇️

    - 레지스터 주소 지정 방식: 레지스터를 오퍼랜드 필드에 직접 명시 표현 데이터 크기 ⬆️ 하지만 유효 주소 제한 有

    - 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장하고 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

⏩속도: 즉시 주소 지정 방식 > 레지스터 주소 지정 방식 > 직접 주소 지정 방식 > 레지스터 간접 주소 지정 방식 > 직접 주소 지정 방식 

 

❗선택 미션
스택과 큐의 개념을 정리하기

스택: LIFO(후입선출)
큐: FIFO(선입선출)