Chapter01. 컴퓨터 구조 시작하기
1-1 컴퓨터 구조를 알아야 하는 이유
- 컴퓨터 구조를 이해하면 문제 상황을 빠르게 진단하고, 문제 해결의 실마리를 다양하게 찾을 수 있다.
- 컴퓨터 구조를 이해하면 문법만으로는 알기어려운 성능, 용량, 비용 문제를 고려하며 개발할 수 있다.
1-2 컴퓨터 구조의 큰 그림
컴퓨터 구조는 크게 컴퓨터가 이해하는 정보와 컴퓨터의 네 가지 핵심부품으로 이루어져 있다.
- 컴퓨터가 이해하는 정보 : 데이터, 명령어
- 데이터 : 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
- 명령어 : 데이터를 움직이고, 컴퓨터를 작동시키는정보
(컴퓨터 프로그램은 명령어들의 모음이라고 정의되기도 한다.)
- 컴퓨터의 네가지 핵심부품
- 중앙처리장치(CPU)
- CPU는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치다.
- CPU 내부에는 ALU, 레지스터, 제어장치가 있다.
- ALU는 계산하는 장치, 레지스터는 임시 저장 장치, 제어 장치는 제어 신호를 발생시키고 명령어를 해석하는 장치이다.
- 주기억장치(메모리)
- 프로그램이 실행되기 위해선 반드시 메모리에 저장되어 있어야 한다.
- 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
- 메모리에 저장된 값의 위치는 주소로 알 수 있다.
- 보조기억장치
- 메모리보다 크기가 크고 전원이 꺼져도 저장된 내용을 잃지 않는 메모리를 보조할 수 있는 장치다.
- 입출력 장치의 일종으로 볼 수 있다
- 입출력장치
- 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
- 메인보드와 시스템 버스
- 주기억장치, 메모리, 보조기억장치, 입출력 장치들은 모두 메인 보드(마더 보드)라는 판에 연결된다.
- 버스(bus)라는 통로를 통해 연결된 부품들은 정보를 주고받을 수 있다.
- 시스템 버스(bus)는 네가지 핵심 부품을 연결하는 가장 중요한 버스이다.
- 시스템 버스는 주소를 주고 받을 수 있는 주소 버스, 명령어와 데이터를 주고 받는 통로인 데이터 버스,제어 신호를 주고 받는 제어 버스로 구성되어 있다.
- 중앙처리장치(CPU)
Chapter02. 데이터
2-1 0과 1로 숫자를 표현하는 방법
- 비트는 0과 1로 표현할 수 있는 가장 작은 정보 단위이다.
- 바이트, 킬로바이트, 메가바이트,기가바이트, 테라바이트는 비트보다 더 큰 정보단위이다.
- 이진법에서 음수는 2의 보수로 표현할 수 있다.
- 16진법은 15를 넘어가는 시점에 자리 올림하여 수를 표현하는 방법이다.
2-2 0과 1로 문자를 표현하는 방법
- 컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 문자 집합이라 한다.
- 문자 집합에 속한 문자를 0과 1로 인코딩하여 컴퓨터가 이해할 수 있게 만드는 행위를 문자 인코딩이라 한다.
- 0과 1로 이뤄진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정을 문자 디코딩이라 한다.
- 아스키 문자 집합에 0부터 127까지의 수가 할당되어 아스키 코드로 인코딩 된다.
- EUC-KR은 한글을 2바이트 크기로 인코딩 할 수 있는 완성형 인코딩 방식이다.
- 유니코드는 여러 나라의 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합이며, UTF-8, UTF-16, UTF-32는 유니코드 문자의 인코딩 방식이다.
Chapter03. 명령어
3-1 소스 코드와 명령어
- 고급 언어 : 사람이 이해하기 쉬운 언어
- 컴파일 언어
- 소스 코드 전체가 저급 언어로 변환되어 실행되는 과정(= 컴파일)을 가진 언어
- 컴파일러 : 컴파일을 수행해주는 도구
- 목적 코드(object code) : 컴파일러를 통해 저급 언어로 변환된 코드
- 인터프리터 언어
- 소스코드가 한 줄 씩 실행되는 고급 언어
- 소스 코드를 저급 언어로 변환하는 시간을 기다릴 필요가 없다.
- 인터프리터 언어는 컴파일 언어보다 느리다.
- 컴파일 언어
- 저급 언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어
- 기계어 : 0과 1로 이루어진 명령어 모음
- 어셈블리어 : 기계어를 읽기 편한 형태로 번역한 언어
💡 목적 파일 vs 실행 파일
목적 파일 : 목적 코드로 이루어진 파일
실행 파일 : 실행 코드로 이루어진 파일 (윈도우의 .exe 확장자 파일이 대표적인 실행 파일 중 하나)
1. 목적 코드가 실행 파일이 되기 위해서는 링킹 작업을 거쳐야한다.
2. 각각의 목적 파일들을 만들고 이 파일들을 연결짓는 작업이 링킹이다.
3. 링킹 작업까지 거친 후에 하나의 실행파일이 만들어 진다.
3-2 명령어 구조
- 명령어 : 연산코드 + 오퍼랜드(operand)로 구성
- 연산 코드(operation code) : 명령어가 수행할 연산 (=연산자)
- 오퍼랜드(operand) : 연산에 사용할 데이터, 또는 데이터가 저장된 위치(= 피연산자)
- 연산 코드 필드 : 연산 코드가 담기는 영역
- 오퍼랜드 필드(= 주소 필드) : 오퍼랜드가 담기는 영역, 메모리 주소나 레지스터 이름이 담긴다.
- 주소 지정 방식 : 연산에 사용할 데이터의 위치를 찾는 방법
왜 오퍼랜드 필드에 메모리나 레지스터의 주소를 담는 걸까? 그냥 연산 코드 + 연산 코드에 사용될 데이터 형식으로 명령어를 구성하면 안되는 걸까?
⇒ 명령의 길이 문제 때문에 오퍼랜드 필드에 주소를 담는 것.예시)명령어 n비트, 연산 코드 필드 m비트인 경우 1-주소필드의 오퍼랜드 필드 길이 : n - m비트 2-주소필드의 오퍼랜드 필드 길이 : (n-m)/2 비트 → 오퍼랜드 필드 크기가 점점 작아진다. ⇒ 오퍼랜드 필드의 크기가 작아질 수록 오퍼랜드 필드에 들어갈 수 있는 데이터의 크기도 줄어든다. ⇒ 오퍼랜드 필드 안에 메모리 주소가 담길 경우 표현 가능한 데이터 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커진다.
- 유효 주소(effective address) : 연산 코드에 사용될 데이터가 저장된 위치
- 즉시 주소 지정 방식 : 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
- 다른 주소 지정 방식보다 가장 빠르다.
- 직접 주소 지정 방식
- 오퍼랜드 필드에 유효 주소를 직접적으로 명식하는 방식
- 오퍼랜드 필드에 표현 가능한 데이터 크기는 즉시 주소 지정 방식보단 크지만, 여전히 유효 주소를 표현할 수 있는 범위가 연산 코드의 비트 수만큼 줄어든 상태
- 표현 가능한 유효 주소에 제한이 존재
- 간접 주소 지정 방식
- 유효 주소의 주소를 오퍼랜드 필드에 명시
- 앞에 두개 보다 느리다.
- 레지스터 주소 지정 방식
- 직접 주소 지정 방식과 유사
- CPU외부에 있는 메모리보다 CPU 내부에 있는 레지스터에 접근하는 속도가 더 빠르기에 직접 주소 방식보다 빠르게 데이터에 접근 가능.
- 레지스터 간접 주소 지정 방식
- 연산에 사용할 데이터를 메모리에 저장하고, 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시한 방식
- 메모리에 접근하는 횟수가 한 번으로 줄어든다는 장점이 있다.
- 간접 주소 지정 방식 보다 빠르다.
기본 숙제
- p.51의 3번
프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다. - p.65의 3번
1101(2)를 음수로 표현한 값은 0011입니다.
'책 > 혼공컴운' 카테고리의 다른 글
[혼공컴운] 6주차 - Chapter 14 ~ 15 (0) | 2025.02.27 |
---|---|
[혼공컴운] 5주차 - Chapter 12 ~ 13 (0) | 2025.02.18 |
[혼공컴운] 3주차 - Chapter 06 ~ 08 (0) | 2025.01.30 |
[혼공컴운] 2주차 - Chapter04~05 (0) | 2025.01.19 |