[ Chapter 1 ] 컴퓨터 구조 시작하기
1. 컴퓨터 구조를 알아야 하는 이유
🍀 컴퓨터 구조를 알면 문제 해결 능력이 향상된다.
🍀 성능/용량/비용을 고려하며 개발할 수 있다.
01-1 확인문제 풀이 인증
2. 컴퓨터 구조의 큰 그림
🍀 컴퓨터 구조
☘️ 컴퓨터가 이해하는 정보
◾️0과 1로만 표현되어 있음
◾️데이터
: 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
◾️명령어
: 컴퓨터를 작동 시키는 정보
☘️ 컴퓨터의 4가지 핵심 부품
◾️중앙 처리 장치 (CPU: Central Processing Unit)
: 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행함
◾️주기억장치(메모리: Main Memory)
: RAM(Random Access Memory)과 ROM(Read Only Memory)이 있다.
: 보통 별말없으면 RAM이 곧 주기억 장치
: 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
◾️보조기억장치 (secondary storage)
: 전원이 꺼져도 보관할 프로그램을 저장
◾️입출력장치 (Input/Output device)
: 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환
추가: 시스템 버스: 컴퓨터의 4가지 핵심 부품들이 서로 정보를 주고 받는 통로
핵심내용
🟣 메모리 🟣
- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 함
- 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장
- 메모리에 저장된 값의 위치는 주소로 알 수 있음
🟣 CPU 🟣
- 산술논리연산장치(ALU)
- 계산기
- 레지스터(register)
- 임시 저장 장치
- CPU에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가진다.
- 제어장치(control unit)
- 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치
- 메모리 읽기
- 메모리 쓰기
- 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치
- 메모리에 저장된 값을 읽고 해석하고 실행
🟣 시스템 버스 🟣
- 주소 버스
- 데이터 버스
- 제어 버스
- 제어 버스로 "메모리 읽기", "메모리 쓰기" 제어 신호를 보내고,
주소 버스로 읽고자 하는 주소 및 저장할 주소를 내보낸다. 저장할 주소
데이터 버스로 CPU가 요청한 주소에 있는 내용과 메모리에 저장할 값을 보낸다.
01-2 확인문제 풀이 인증
[ Chapter 2 ] 데이터
1. 0과 1로 숫자를 표현하는 방법
1) 정보단위
- 비트(bit): 가장 작은 정보 단위
- 바이트(byte): 8bit
- 킬로바이트(kB): 1000byte
- 메가바이트(MB): 1000kB
- 기가바이트(GB): 1000MB
- 테라바이트(TB): 1000GB
- word: CPU가 한 번에 처리할 수 있는 데이터 크기
- 하프워드
- 풀워드
- 더블워드
2) 이진수의 음수표현
- 2의 보수 + 플래그(flag)
- 2의 보수 = 1의 보수 + 1
02-1 확인문제 풀이 인증
2. 0과 1로 문자를 표현하는 방법
핵심내용
🟣 문자 집합 🟣
- 컴퓨터가 인식할 수 있는 문자의 모음, 인코딩하여 0,1로 표현할 수 있음
🟣 아스키 코드 🟣
- 아스키 문자 집합에 0부터 127까지의 수가 할당되어 아스키 코드로 인코딩된다.
🟣 EUC-KR 🟣
- 한글을 2바이트 크기로 인코딩할 수 있는 완성형 인코딩 방식
🟣 유니코드 🟣
- 여러 나라 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합
- UTF-8, UTF-16, UTF-32
02-2 확인문제 풀이 인증
[ Chapter 3 ] 명령어
1. 소스 코드와 명령어
1) 고급 언어와 저급 언어
고급 언어
사람이 사용하는 언어
저급 언어
컴퓨터가 이해하고 실행하는 언어
기계어 + 어셈블리어
- 기계어: 0과 1로만 이루어진 언어
- 어셈블리어: 기계어를 번역한 형태
- 어셈블리어를 많이 쓰는 직종
: 임베디드 개발자, 게임 개발자, 정보 보안 분야 등의 개발자
2) 컴파일 언어와 인터프리터 언어
컴파일 언어: 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어
- 소스코드가 컴파일러에 의해 컴파일되면 목적코드가 됨
- 오류 발생 시 전체가 실행되지 않음
인터프리터 언어: 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
- 오류 발생 시 오류 직전 코드까지 실행됨
3) 목적 파일 vs 실행 파일
목적 파일: 목적 코드로 이루어진 파일
실행 파일: 실행 코드로 이루어진 파일
목적 코드가 실행 파일이 되기 위해서는 링킹이 선행되어야 함.
소스코드를 컴파일하여 목적코드가 되고 그 목적 코드와 외부 기능을 연결 짓는 링킹 작업 후에
비로소 실행 파일이 완성이 됨
03-1 확인문제 풀이 인증
2. 명령어의 구조
1) 연산 코드와 오퍼랜드
명령어는 연산 코드와 오퍼랜드로 구성됨
연산코드(연산자): 명령어가 수행할 연산
오퍼랜드(피연산자): 연산에 사용할 데이터 / 연산에 사용할 데이터가 저장된 위치
연산 코드 필드: 연산코드가 담기는 영역
오퍼랜드 필드: 오퍼랜드가 담기는 영역, 메모리나 레지스터의 주소를 담기도 함
2) 주소 지정 방식
명령어의 크기는 정해져 있기 때문에 쓸 수 있는 정보의 양이 한정되어 있다.
그런데 만약 오퍼랜드 필드 안에 메모리 주소가 담기하면 표현가능한 데이터의 크기가
하나의 메모리 주소에 저장할 수 있는 공간만큼 커지게 됨
그래서 오퍼랜드 필드에 주소를 담는다.
유효 주소: 연산 코드에 사용할 데이터가 저장된 위치, 연산의 대상이 되는 데이터가 저장된 위치
주소 지정 방식
: 오퍼랜드 필드에 주소가 담겼을 때 연산에 사용할 데이터의 위치를 찾는 방법
- 즉시 주소 지정 방식
- 가장 간단한 형태
- 연산에 필요한 데이터를 오퍼랜드 필드에 직접 명시
- 연산에 사용할 데이터의 크기가 작아짐
- 가장 빠름
- 직접 주소 지정 방식
- 유효 주소를 직접적으로 명시
- 유효 주소에 제한이 생김
- 간접 주소 지정 방식
- 유효 주소의 주소를 오퍼랜드 필드에 명시
- 표현 가능한 유효 주소의 범위 확장
- 두 번의 메모리 접근 필요하기 때문에 좀 느림
- 레지스터 주소 지정 방식
- 연산에 사용할 데이터를 저장한 레지스터 주소를 오퍼랜드에 담음
- CPU 내부에 있는 레지스터에 접근하는 것이 외부의 메모리에 접근하는 것보다 빠름
- 표현할 수 있는 레지스터 크기에 제한 생김
- 레지스터 간접 주소 지정 방식
- 연산에 사용할 데이터를 메모리에 저장하고
- 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
- 레지스터 간접 주소 지정 방식이 간접 주소 지정 방식 보다 빠름
3) 스택과 큐
스택: 한쪽 끝이 막혀 있는 총과 같은 저장 공간
한쪽 끝이 막혀 있어서 막혀있지 않은 쪽으로 데이터를저장하고,
저장한 자료를 빼낼 때는 역순으로 데이터를 빼냄
후입선출 LIFO(Last In First Out)
PUSH: 새로운 데이터 저장
POP: 저장된 데이터 꺼냄
큐: 양쪽이 뚫려있는 통
한쪽으로는 데이터를 저장하고 한쪽으로는 순서대로 빼냄
선입선출 FIFO(First In First Out)
03-2 확인문제 풀이 인증
'혼공 스터디 > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[ 혼공컴운 ] 3주차 공부 4: Nested RAID 종류 (0) | 2023.07.28 |
---|---|
[ 혼공컴운 ] 3주차 공부 3: RAID의 정의와 종류 (0) | 2023.07.23 |
[ 혼공컴운 ] 3주차 공부 2: 보조기억장치 (0) | 2023.07.22 |
[ 혼공컴운 ] 3주차 공부 1: 메모리와 캐시 메모리 (0) | 2023.07.18 |
[ 혼공컴운 ] 2주차 공부: CPU의 작동원리 (1) | 2023.07.13 |