01 컴퓨터 시스템의 구성
컴퓨터는 하드웨어와 소프트웨어로 구성됨
컴퓨터의 기본 구성도
[1] 하드웨어
; 컴퓨터에서 각종 정보를 입력하여 처리하고 저장하는 동작이 실제 일어나게 해주는 물리적인 실체
- 컴퓨터의 성능은 하드웨어에 의해 결정됨
구성
중앙 처리 장치, 주기억 장치, 보조 기억 장치, 입력 장치, 출력 장치, 시스템 버스로 구성됨
(1) 중앙 처리 장치(CPU)
; 인간의 두뇌에 해당하는 부분으로, 프로그램 실행과 데이터 처리를 담당
- 프로세서 또는 마이크로프로세서라고도 부름cf) 마이크로프로세서 : CPU를 IC 칩 1개에 집적한 반도체 소자
- 산술 논리 연산 장치(ALU) : 산술 연산, 논리 연산, 보수 연산, shift 연산 수행
- 제어 장치(CU) : 1) 프로그램의 명령어 해독, 2) 명령어 실행에 필요한 제어 신호를 발생, 3) 컴퓨터의 모든 장치를 제어
- 레지스터 : 중앙 처리 장치 내부에 있는 데이터를 일시적으로 보관하는 임시 기억 장치(빠른 access 가능)
- CPU 내부 버스 : 구성 요소 간의 데이터 및 제어 신호의 이동이 이루어짐
(2) 기억 장치
; 중앙 처리 장치가 처리할 프로그램과 데이터가 저장되는 곳
- 주기억 장치
반도체 칩으로 구성되어 고가, 고속 액세스 가능(중앙 처리 장치 가까이 위치)
휘발성 메모리가 저장됨
- 보조 기억 장치
비휘발성 메모리가 저장됨
저장 밀도가 높고 저가, 속도가 느림
(3) 입출력 장치
; 입력 장치와 출력 장치를 합친 말
- 입력 장치(ex. 키보드, 마우스)
데이터를 전자적인 2진 형태로 변환하여 컴퓨터 내부로 전달
- 출력 장치(ex. LCD 모니터, 프린터, 스피커)
전자적인 형태의 데이터를 사람이 이해할 수 있는 데이터로 변환하여 출력
- 전원 공급 장치 : 하드웨어 구성 요소에 전기를 공급하기 위한 장치
(4) 시스템 버스
; 중앙 처리 장치와 기억 장치 및 입출력 장치 사이에 정보를 교환하는 통로
버스의 종류
비고 | 주소 버스 | 데이터 버스 | 제어 버스 |
---|---|---|---|
역할 | 기억 장치나 입출력 장치의 주소 정보 전송 | 기억 장치나 입출력 장치 사이의 데이터 전송 | 중앙 처리 장치가 시스템 내의 각종 요소의 동작을 제어 |
통신 | 단방향 통신 | 양방향 통신(읽기, 쓰기 지원) | 단방향 통신 |
궁금한 점 : 제어 버스도 읽기와 쓰기를 모두 지원하는데, 왜 단방향성일까?
⇒ 읽기와 쓰기가 동시에 일어나는 것이 아니기 때문이다.
(5) 컴퓨터 시스템의 구성
Case 1: 중앙 처리 장치가 주기억 장치로부터 데이터를 읽는 경우
1) 데이터가 저장되어 있는 기억 장소의 주소를 주소 버스를 통해 보내면서 읽기 신호 활성화
2) 기억 장치로부터 읽힌 데이터가 데이터 버스에 실림
3) 중앙 처리 장치가 데이터 버스에 실린 데이터 읽기
Case 2: 중앙 처리 장치로 데이터를 쓰는 경우
1) 중앙 처리 장치는 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통해 전송
2) 1을 수행하는 동시에 쓰기 신호를 활성화(제어 버스 해제?)
수행 가능한 기능과 구성 요소를 연관 시킨 결과
- 프로그램 실행 : 중앙 처리 장치가 주기억 장치에서 프로그램 코드를 읽어서 실행
- 데이터 저장 : 프로그램 실행 결과를 주기억 장치에 저장
- 데이터 이동 : 하드 디스크 같은 보조 기억 장치에 저장되어 있는 명령어와 데이터 블록을 주기억 장치로 이동
- 데이터 입출력 : 사용자가 키보드나 마우스를 통해 입력하는 명령어나 데이터를 입력하거나 중앙 처리 장치가 처리한 결과를 모니터나 프린터로 출력
- 제어 : 프로그램에서 정해진 순서에 따라 실행되도록 각종 제어 신호 발생
cf) 보조 기억 장치와 입출력 장치는 중앙 처리 장치와 직접 연결 되지 않기 때문에 속도가 느림
[2] 소프트웨어
; 정보 처리의 종류를 지정하고 정보의 이동 방향을 결정하는 동작이 일어나는 시간을 지정해주는 명령들의 집합(프로그램)
- 하드웨어가 제공하는 기능들을 이용하여 최종 결과를 얻을 수 있게 도와줌→ 소프트웨어의 질에 따라 하드웨어의 사용 효율이 일부 향상되거나 사용 환경이 편리해질 수 있음
시스템 소프트웨어
; 하드웨어를 관리하고 응용 소프트웨어를 실행하는 데 필요한 프로그램
- 운영체제 : 컴퓨터 하드웨어 자원인 중앙 처리 장치, 기억 장치, 입출력 장치, 네트워크 장치 등을 제어 및 관리
- 언어 번역 프로그램 : 고급 언어로 작성한 소스 프로그램을 기계어로 변환하는 프로그램
인터프리터 : 소스 프로그램을 한 줄씩 기계어로 번역하여 실행 (스크립트 언어 - python, html, basic, sql, 자바스크립트)
컴파일러 : 전체 소스 프로그램을 한 번에 기계어로 번역하여 실행 (C, C#, C#, java)
- 장치 드라이버 : 컴퓨터에 온라인으로 연결된 주변 장치를 제어하는 운영체제 모듈
- 링커 : 여러 개로 분할해 작성된 프로그램에 의해 생성된 목적 프로그램 또는 라이브러리 루틴을 결합하여 실행 가능한 하나의 프로그램으로 연결하는 프로그램(==연결 편집기)컴파일러를 어셈블러로 연결해주는 것이 링커
- 로더 : 하드 디스크 같은 저장 장치에 보관된 프로그램을 읽어 주기억 장치에 적재한 후 실행 가능한 상태로 만드는 프로그램
응용 소프트웨어
; 컴퓨터 시스템을 일반 사용자들이 특정한 용도에 활용하기 위해 만든 프로그램(앱, 어플)
[3] 프로그램 처리 과정
프로그램 : 특정 결과를 위해 컴퓨터가 받아들일 수 있는 형태의 명령어를 나열하여 구성한 문장
1) 고급 언어로 작성(C, C++) - 명령문
2) 어셈블리어로 변환 - 명령문 + 주소 + 레지스터 번호
3) 기계어로 변환 - 0과 1로만
이 과정을 컴파일 과정이라고 한다. 이걸 수행해주는 것이 컴파일러!
- 니모닉 : 어셈블리 명령어의 동작을 이해할 수 있도록 사용된 기호(LOAD, ADD, STOR)
- 어셈블러 : 어셈블리어를 기계어로 번역해주는 프로그램
- 기계어
연산 코드 : 수행할 연산을 지정하는 코드(비트 수가 3이면, 최대 연산 수 2^3) ex) 001 = LOAD, 011 = ADD, 010 = STOR
오퍼랜드 : 명령어가 사용할 데이터가 저장되어 있는 기억 장소의 주소(최대 수 계산법 위와 동일)
워드 : CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
cf) cpu와 os에 따른 bit 수 처리 가능 유무
(1) cpu 32 / os 32 → 가능
(2) cpu 32 / os 64 → 가능
(3) cpu 64 / os 32 → 가능 (32로 잘라서 보내달라고 함 - 하위호환 해서 처리함)
(4) cpu 64 / os 64 → 가능
[4] 컴퓨터 시스템의 계층 레벨
레벨 0 - 디지털 논리 레벨 (논리 게이트와 이를 연결하는 와이어로 구성됨 - 0과 1 같은 2진 표현)
레벨 1 - 제어 레벨 (제어 장치가 명령어들을 해독하고 실행 + 데이터들이 이동할 시간과 장소를 결정)
레벨 2 - 명령어 세트 아키텍처 (컴퓨터 시스템의 특정 구조에 의해 인식되는 기계어)
레벨 3 - 시스템 소프트웨어 레벨 (운영체제와 라이브러리 - 다중 프로그래밍, 메모리 할당, 프로세스 관리)
레벨 4 - 어셈블리어
레벨 5 - 고급 언어
레벨 6 - 사용자
레벨이 높아질수록 고급 언어가 됨
02 컴퓨터의 역사
무어의 법칙
; 반도체 집적 회로의 트랜지스터 수가 24개월마다 2배로 증가한다는 법칙
- 한계에 다다름 : 기술적 + 경제적
기술적인 한계 : 트랜지스터를 작게 만드는 것
경제적인 한계 : 공장 설비를 재설치 하는 데 드는 비용에 비해 실익이 없음
- 오차가 존재
황의 법칙
; 메모리의 발전으로 인해 1년에 2배씩 메모리의 용량이 증가할 것이라고 주장한 것
- 8년만에 깨짐
04 폰 노이만, 비 폰 노이만, 하버드 구조
[1] 폰 노이만 구조와 비 폰 노이만 구조
폰 노이만 구조
; 주기억 장치에 프로그램과 데이터를 넣고 차례로 인출하여 처리하는 방식
- 명령어 메모리 영역과 데이터 메모리 영역의 물리적 구분이 없음
- 중앙 처리 장치는 하나의 시스템 버스를 통해 메모리로부터 명령어나 데이터를 읽거나 씀
- 시스템 병목 현상이 발생
절차
(1) 프로그램 카운터를 이용해 메모리에서 실행할 명령어 인출(fetch)
(2) 제어 장치를 통해 명령어를 해독(decode)
(3) 명령어를 실행하는 데 필요한 데이터를 메모리에서 인출 후 레지스터에 저장
(4) 산술 논리 연산 장치(ALU)는 명령을 실행(execute)
(5) 실행한 명령의 결과를 레지스터나 메모리에 저장(store)
비 폰노이만 구조
; 폰 노이만 구조가 아닌 컴퓨터를 통틀어 이르는 말
- 데이터 처리의 고속화와 고도화를 위해 프로그램 일부를 하드웨어화, 병렬 처리 기능, 추론 기구를 택한 컴퓨터
하버드 구조
; 병목 현상이 발생하는 폰 노이만 구조를 개선한 것
- 명령어 메모리 영역과 데이터 메모리 영역을 물리적으로 분리 후 각각 다른 시스템 버스로 중앙 처리 장치에 연결 ⇒ 명령과 데이터를 메모리로부터 읽는 것을 동시에 처리할 수 있음
- 공간을 많이 차지하고, 설계가 복잡하며 비쌈
- 메모리를 순차적으로 실행하는 근본적 구조는 폰 노이만 구조와 동일