-
Notifications
You must be signed in to change notification settings - Fork 0
학습 기록 | w1 지현
#문제해결 #성능/용량/비용
성능, 용량, 비용을 고려한 개발
#데이터 #명령어 #메모리 #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)
-
메모리
- 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
- 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
- 메모리에 저장된 값의 위치는 주소로 알 수 있다.
-
CPU
- 메모리에 저장된 명령어를 읽어들이고, 해석하고, 실행하는 부품
내부 구성 요소
- 산술논리연산장치
ALU;Arithmetic Logic Unit- 계산기
- 레지스터register
- 임시 저장 장치
- 제어장치
CU;ControlUnit- 제어신호라는 전기 신호를 내보내고 명령어를 해석
-
보조기억장치
메모리보다 크기가 크고 전원이 꺼져도 내용을 잃지 않는 저장 장치
- 하드 디스크, SSD, USB 메모리, DVD, CD-ROM
-
입출력장치
컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 마이크, 스피커, 프린터, 마우스, 키보드
메인보드와 시스템 버스
- 메인보드; 마더보드
- 시스템버스
- 컴퓨터의 네가지 핵심 부품을 연결하는 버스
- 주소 버스, 데이터 버스, 제어 버스
#비트 #바이트 #이진법 #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ⁿ에서 뺀 값
= 모든 0과 1을 뒤집고, 거기에 1을 더한 값
💡 0이나 2ⁿ 형태의 이진수에 2의 보수를 취하면 원하는 음수값을 얻을 수 없음
15₍₁₆₎
0x15
십육진수와 이진수의 변환
십육진수 → 이진수
- 십육진수 중 한 글자를 4비트의 이진수로 간주
이진수 → 십육진수
- 이진수 숫자 4개씩 끊어 변환
#문자집합 #아스키코드 #EUC-KR #유니코드
문자 집합
- 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
문자 인코딩
- 문자를 0과 1로 변환하는 과정
문자 디코딩
- 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정
; 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 등으로 구분
#고급 언어 #저급 언어 #기계어 #어셈블리어 #컴파일 언어 #인터프리터 언어
고급언어 high-level programming language
- 사람을 위한 언어
저급언어 low-level programming language
-
컴퓨터가 직접 이해하고 실행할 수 있는 언어
-
기계어, 어셈블리어
기계어 machine code
- 0과 1로 이루어진 명령어 모음
어셈블리어 assembly language
- 0과 1로 표현된 명령어(기계어)를 읽기 편하게 번역한 언어
-
고급언어 (
컴파일 언어) — (컴파일) —> 저급언어 -
고급언어 (
인터프리터 언어) — (인터프리트) —> 저급언어
컴파일 언어
-
컴파일러에 의해
소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 -
C
컴파일 compile
- 컴파일 언어로 작성된 코드 전체가 저급 언어로 변환되는 과정
컴파일러 compiler
- 컴파일을 수행해주는 도구
- 문법적 오류, 실행가능성, 불필요한 코드를 판단하여 컴파일
- 오류를 하나라도 발견하면 실패
인터프리터 언어
- 인터프리터에 의해
소스 코드가 한 줄 씩실행되는 고급언어 - Python
인터프리터
- 소스 코드를 한 줄 씩 저급 언어로 변환하여 실행해 주는 도구
- 소스 코드 전체를 변환하는 시간을 기다리지 않아도 됨
- 문제가 있는 코드 전까지 수행
- 컴파일 언어보다 느림
목적 코드 object code
- 컴파일 수행 후 변환된 컴퓨터가 이해할 수 있는 저급언어
목적 파일
- 목적 코드로 이루어진 파일
- .exe
목적 파일 — (링킹 linking) —> 실행파일
.c → .o → .exe
링킹
- 저급 언어를 기능과 연결하는 과정
#명령어 #연산 코드 #오퍼랜드 #주소 지정 방식
명령어 = 연산 코드 + 오퍼랜드
연산 코드 operation code
- 연산자
- 명령어가 수행할 연산
오퍼랜드 operand
- 피연산자
- 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치
주소 필드
- 오퍼랜드 필드
- 메모리 주소나 레지스터 이름
오퍼랜드의 개수에 따른 명령어의 구분
- 0-주소 명령어
- 1-주소 명령어
- 2-주소 명령어
- 3-주소 명령어
연산 코드
- 데이터 전송
- MOVE
- STORE
- LOAD(FETCH)
- PUSH
- POP
- 산술/논리 연산
- ADD / SUBTRACT / MULTIPLY / DIVIDE
- INCREMENT / DECREMENT
- AND / OR / NOT
- COMPARE
- 제어 흐름 변경
- JUMP
- CONDITIONAL JUMP
- HALT
- CALL
- RETURN
- 입출력 제어
- READ(INPUT)
- WRITE(OUTPUT)
- START IO
- TEST IO
하나의 오퍼랜드 필드로 표현할 수 있는 정보가 한정되어 있으므로 데이터의 주소를 넘김
유효 주소 effective address
- 연산의 대상이 되는 데이터가 저장된 위치
주소지정 방식 addressing mode
- 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법
| 주소 지정 방식 | 오퍼랜드 필드 내용 | 장점 | 단점 |
|---|---|---|---|
| 즉시 주소 지정 방식 | 연산에 사용할 데이터 | 빠름 | 데이터 크기 작음 |
| 직접 주소 지정 방식 | 유효 주소(메모리 주소) | 데이터 크기 조금 큼 | 데이터 크기 조금 작음 |
| 간접 주소 지정 방식 | 유효 주소의 주소 | 데이터 크기 큼 | 느림(두 번 접근) |
| 레지스터 주소 지정 방식 | 유효 주소(레지스터 이름) | 메모리 접근보다 빠름 | 데이터 크기 작음 |
| 레지스터 간접 주소 지정 방식 | 유효 주소를 저장한 레지스터 | 간접 주소 지정 방식보다 빠름 |
스택 stack
- 한쪽 끝이 막혀있는 통과 같은 저장 공간
- LIFO(Last In First Out)
큐 queue
- 양쪽이 뚫려 있는 통과 같은 저장 공간
- FIFO(First In First Out)
- 컴퓨터의 4가지 핵심 부품을 그려보고 간단하게 설명해보세요. (1장)
- 컴파일 언어와 인터프리터 언어의 차이점 (3장)
- 주소 지정 방식 설명 (3장)