기본 미션
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(선입선출)
'Computer Science > Computer Architecture, Operating System' 카테고리의 다른 글
[혼공컴운] 4주차_Chapter 09~11 (1) | 2024.02.09 |
---|---|
[혼공컴운] 3주차_Chapter 06~08 (0) | 2024.01.21 |
[혼공컴운] 2주차_Chapter 04~05 (0) | 2024.01.14 |