-
Notifications
You must be signed in to change notification settings - Fork 0
학습 기록 | w1 정민
jeongmin edited this page Feb 4, 2025
·
4 revisions
graph TD;
A[컴퓨터 구조] --> B[컴퓨터가 이해하는 정보]
B --> B1[데이터]
B --> B2[명령어]
A --> C[컴퓨터의 네 가지 핵심 부품]
C --> C1[CPU]
C --> C2[메모리]
C --> C3[보조기억장치]
C --> C4[입출력장치]
컴퓨터: 명령어를 처리하는 기계 컴퓨터 프로그램: 명령어들의 모음
[ 컴퓨터가 이해하는 정보 ]
- 데이터
- 명령어를 위해 존재하는 일종의 재료
- 명령어
- 데이터를 움직이고 작동시키는 정보
[ 컴퓨터의 네 가지 핵심 부품 ]
- CPU (= 중앙처리장치, Central Processing Unit)
- 컴퓨터의 두뇌 / 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어 해석, 실행하는 부품
- ALU: 계산기
- 레지스터: CPU 내부 작은 임시 저장 장치
- 제어장치: 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치
- 메모리 (= 주기억장치, main memory)
- 종류: RAM(Random Access Memory), ROM(Read Only Memory)
- 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
- 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 함
- 메모리에 저장된 값의 위치는 주소로 알 수 있음
- 값에 빠르게 효율적으로 접근하기 위함
- 보조기억장치 (secondary storage)
- 전원이 꺼져도 보관될 프로그램을 저장하는 부품
- 종류: 하드 디스크, SSD,
- 입출력장치 (input/output device)
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
- 시스템 버스
- 컴퓨터의 네 가지 핵심 부품들이 서로 정보를 주고받는 통로
- 주소 버스, 데이터 버스, 제어 버스
- 비트
- 0과 1을 나타내는 가장 작은 정보 단위
- n개의 bit: 2**n가지 정보 표현 가능
- 워드
- CPU가 한번에 처리할 수 있는 데이터 크기
- 이진수의 음수 표현
- 2의 보수
- 어떤 수를 그보다 큰 2**n에서 뺀 값
- -(-A) = A 를 만족
- 부가 정보인 flag를 사용하여 양수 / 음수를 표시
- n bit로는 -2n과 2n을 동시에 표현할 수 없음
- 2의 보수
- 16진수는 2진수로 변환하기 쉬움
[ 문자 집합 ]
- 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
- 문자 인코딩: 문자를 0과 1로 변환
- 문자 디코딩: 인코딩의 반대과정, 즉 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환
[ 아스키 코드 ]
- 0 ~ 127(2**7)까지의 수가 할당되어 인코딩
- 추후 1비트를 추가한 확장 아스키가 등장하였으나 문자의 수가 턱없이 부족
[ 한글 인코딩 ]
- 완성형 인코딩: 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드 부여
- EUC-KR: 대표적인 완성형 인코딩
- CP949: EUC-KR의 확장된 버전
- 조합형 인코딩: 초성, 중성, 종성에 해당하는 코드를 합하여 하나의 글자 코드를 만드는 방식
[ 유니코드 ]
- 여러 나라의 문자를 광범위하게 표현할 수 있는 통일된 문자 집합
- UTF-8, UTF-16, UTF-32
- 모든 소스 코드는 컴퓨터 내부에서 명령어로 변환됨
- 컴퓨터는 프로그래밍 언어를 이해하지 못한다.
고급 언어
: 사람이 이해하고 작성하기 쉽게 만들어진 언어
- 컴파일 언어 : 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 언어
- 인터프리터 언어 : 인터프리터에 의해 소스 코드가 한 줄씩 저급 언어로 변환되어 실행되는 언어
저급 언어
: 컴퓨터가 직접 이해하고 실행할 수 있는 언어
- 기계어 : 0과 1로 이루어진 명령어 비트
- 어셈블리어 : 기계어를 사람이 읽기 편한 형태로 번역
컴파일 언어 —- 컴파일 ——> 저급언어 인터프리터 언어 —- 인터프리트 ——> 저급 언어
명령어 : 무엇을 대상으로 어떤 작동을 수행하라는 의미를 담게 됨
- 연산 코드 (연산자)
: 명령어가 수행할 연산
- 데이터 전송
- 산술 / 논리 연산
- 제어 흐름 변경
- 입출력 제어
- 오퍼랜드 (피연산자 / 주소 필드)
: 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치를 의미
- 명령어 내부에 하나도 없을 수도 잇고 여러 개가 있을 수도 있음
- 데이터, 메모리 주소나 레지스터 이름이 담김
💡 오퍼랜드 필드 안에 메모리 주소가 담긴다면 표현할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커진다.
주소 지정 방식 : 연산에 사용할 데이터 위치를 찾는 방법
- 즉시 주소 지정 방식 : 연산에 사용될 데이터
- 직접 주소 지정 방식 : 유효 주소(메모리 주소)
- 간접 주소 지정 방식 : 유효 주소의 주소
- 레지스터 주소 지정 방식 : 유효 주소(레지스터의 이름)
- 레지스터 간접 주소 지정 방식 : 유효 주소를 저장한 레지스터