CS/컴퓨터구조
컴퓨터 구조 이해하기
삶_
2023. 2. 20. 10:42
컴퓨터 구조를 알아야하는이유
- 성능을 고려한 개발을 할수있어서
컴퓨터 구조 이해하기
CPU
- 컴퓨터의 두뇌
- 메모리에 저장된 값(명령어)을 읽고 해석하고 실행
- 내부 구성 부품
- ALU
- 계산하는 회로들의 모임
- 메모리에서 불러온 명령어의 수식을 계산
- 제어장치
- 제어 신호(명령)라는 전기 신호를 내보내고 명령어를 해석하는 장치
- 메모리 읽기 : 명령을 해석
- 메모리 쓰기
- 레지스터
- CPU 내부의 작은 저장 장치
- 메모리에서 명령어를 불러와 저장함
- ALU
메모리
- 보통 램을 의미함
- 전원이 꺼지면 저장된 내용을 잃는다
- 따라서 보조기억장치에 보관할 정보를 저장함
- 실행할 정보를 저장함
- 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품
- 프로그램이 실행되기 위해서 메모리에 저장되어 있어야 함
- 메모리는 실행되는 프로그램의 명령어나 데이터를 저장
- 메모리에 저장된 값의 위치는 주소로 알수있음
보조 기억장치
- SSD 등 백업용으로 쓸수있는 장치
- 전원이 꺼져도 저장할수있고 보관할 정보를 저장함
입출력 장치
- 컴퓨터와 정보를 주고받는 장치. (메모리를 보조하는 용도라고 생각하기)
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품
마더보드(메인보드)
- 네가지 핵심 부품을 연결해줄 수 있는 판
시스템 버스
- 컴퓨터의 핵심 부품을 연결하는 버스
- 내부구성
- 주소 버스 : 주소를 주고받는 통로
- 데이터 버스 : 명령어와 데이터를 주고받는 통로
- 제어 버스 : 제어 신호를 주고받는 통로
0과 1로 숫자를 표현하는 법
정보 단위
- 비트 : 0과 1을 표현하는 가장 작은 정보 단위
- 프로그램은 수많은 비트로 이루어짐
- 비트보다 큰 단위 : 바이트, 킬로바이트, 메가바이트 …
- 1byte(8bit), 1kB(1000byte), 1MB(1000kB), 1GB(1000MB)
- 워드
- CPU가 한 번에 처리할 수 있는 정보의 크기 단위
- 하프 워드 : 워드의 절반 크기
- 풀 워드 : 워드 크기
- 더블워드 : 워드의 두 배 크기
- 이진법 (binary) : 0과 1로 수를 표현하는 법
- 표기 : 1000(2), 0b
- 십육진법 : 이진법으로는 숫자의 길이가 길기 때문에 사용
- 이진수 ↔ 십육진수 변환 방식이 편리해서 잘 쓰임
- 10~15가 A~F로 표현됨
- 표기 : 1000(16), 0x
0과 1로 문자를 표현하는 법
문자집합과 인코딩
- 문자집합 : 컴퓨터가 이해할 수 있는 문자의 모음
- 인코딩 : 코드화하는 과정. (문자 → 0과 1로 이루어진 문자 코드)
- 디코딩 : 코드를 해석하는 과정 (0과 1로 이루어진 문자 코드 → 문자)
아스키코드
- 알파벳, 일부 특수문자 및 제어문자
- 7비트로 하나의 문자 표현, 1비트는 오류검출을 위한 비트
한글 인코딩
- 초성, 중성, 종성의 조합으로 이루어진 한글.
- 아직은 모든 한글을 표현하기엔 턱없이 부족
- 완성형 인코딩 방식
- 초성, 중성, 종성을 다 합쳐 완성된 형태에 코드를 부여
- ex) 홍,길,동…
- EUC-KR
- 조합형 인코딩 방식
- 초성, 중성, 종성 따로 나뉘어진 형태에 코드를 부여
- ex) ㅎ,ㅗ,ㅇ…
유니코드 문자집합
- 유니코드
- 모든 언어, 특수문자, 이모티콘까지 통일된 문자 집합
- 유니코드 인코딩 방식
- utf-8
- 가변길이 인코딩 : 인코딩 결과가 1바이트~4바이트
- utf : 유니코드 인코딩 방법
- utf-8
컴파일 언어 및 고급 언어
고급언어와 저급언어
- 고급언어 : 개발자가 이해하기 쉬운 언어 (ex. 파이썬, 자바 소스 코드)
- 저급언어 : 컴퓨터가 이해하고 실행하기 위해 만들어진 언어 (= 명령어)
- 고급언어에서 저급언어로 변환되어 컴퓨터로 전달됨
- 기계어 : 이진수로 표현.
- 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 저급언어 (고급 언어와 기계어 사이)
컴파일 언어와 인터프리트 언어
- 고급언어가 저급언어로 변환되는 대표적인 두 방식
- 컴파일 언어
- 컴파일 : 컴파일러에 의해 한번에 전체를 스캔하고 실행파일을 만들어서 실행 후 저급언어로 변환하는 과정
- 컴파일 결과로 저급 언어인 목적코드가 생성됨
- 훑고 중간에 오류가 있으면 실행하지 않고 컴파일이 알려줌
- 초기 스캔 과정이 오래 걸리고 메모리가 많이 듬
- 컴파일 : 컴파일러에 의해 한번에 전체를 스캔하고 실행파일을 만들어서 실행 후 저급언어로 변환하는 과정
- 인터프리터 언어
- 인터프리터에 의해 위에서 아래로 한 줄씩 읽어 번역 후 실행함
- 오류가 나올때까지 실행함
- 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음
- 효율적인 메모리 사용
- 인터프리터에 의해 위에서 아래로 한 줄씩 읽어 번역 후 실행함
명령어의 구조
- 연산 코드
- 수행할 연산
- 연산 코드의 종류
- 데이터 전송 : 데이터를 옮기거나 메모리를 저장하라 등의 명령어들 전송
- 산술/논리 연산 : 나눗셈/뺄셈/더하기
- 제어 흐름 변경 : 실행 순서를 옮기거나 멈추는
- 오퍼랜드
- 연산에 사용될 데이터
- 연산에 사용될 데이터가 저장된 위치 (=주소 필드)
- 없을 수도 있고 하나 이상일 수도 있음