초보 프로그래머를 위한 컴퓨터의 작동원리 개요
하드웨어(Hardware) | 소프트웨어(Software) |
손으로 만질 수 있는 것 | 순수한정보(information) |
컴퓨터의 구성요소들
- 입출력
사용자들 => 입력장치(input device) => 컴퓨터 본체 => 출력장치(output device) => 사용자들
* 다양한 입출력장치들이 발전중이다.
* 입력과 출력을 각 다른 컴퓨터로 할 수 있다.
- 컴퓨터 본체의 구성
1. 중앙처리장치(Cental Processing Unit)
모든 연산을 담당하는 CPU는 산술/논리 연산과 흐름제어를 한다.
2. 주 기억장치 - 메모리(Primary Storage - Computer Memory)
전원을 끄면 데이터가 사라진다.(그래서 보조기억장치가 별도로 필요하다.)
주기억장치에 모든 데이터를 저장한다면 속도가 저하되기 때문이다.
RAM(Random-Access Memory) 임의 접근 메모리
3. 그래픽스 카드(Graphics Card)
GPU(그래픽 용도의 CPU), 메모리가 들어 있다.
스펙에 따라 가격 천차만별이다.
원래는 게임분야에서 필요로 만들었지만 요즘은 딥러닝에서도 사용하는 추세다.
딥러닝 같이 특정 연산 무한반복하는 경우에 그래픽스 여러개로 계산양을 늘리면 CPU보다 빠르기 때문이다.
4. 보조 기억장치(Secondary Storage)
=> HDD(Hard Disk Drive), SSD(Solid-State Drive)
주기억장치 대비 장단점은 컴퓨터를 꺼도 정보데이터를 유지 하지만 속도는 훨씬 느리다.
HDD는 회전을 하면 돌아가는 데이터 속 정보를 찾는다.
SDD의 경우 SD카드 USB가 발전한 형태로 물리적으로 돌아가지 않아 HDD에 비해 속도가 빠르다.
데이터를 많이 다루는 빅데이터 관련 일을 할 경우 보조기억장치에도 프로그래밍을 함께 고려 할 수 있다.
=> FDD(Floppy Disk Drive)
드라이빙 하면서 데이터를 읽는 방식으로 HDD로 발전했다.(FDD에 비해 겉이 딱딱해서 하드디스크)
요즘은 사용하지 않지만 문서저장 아이콘등으로 만나 볼 수 있다.
FDD가 A,B드라이브를 사용 했다. 이것이 HDD가 A디스크 B디스크가 아닌 C디스크로 시작하는 이유이다.
=> 자기테이프(Magnetic Tape)
마그네틱 테이프를 사용해서 데이터를 저장하는 방식으로 테이프 등이있다.
컴퓨터를 켤 때 일어나는 일들
전원버튼 => 전원공급장치 => 메인보드 전기 공급
부팅절차 : 전원공급, 부트 프로그램 실행, 하드웨어 검사, 운영 체제 로드, 운영 체제 실행
운영체제(Operating System)를 작동시키는 건 CPU(주기억장치와 일 하는 친구)
보조기억 장치의 데이터 등을 실행 하는 방법 : 주기억장치가 보조기억장치에 저장 된 데이터를 복사해서 CPU가 실행하는 원리이다.
운영체제가 해주는 일들
Windows / MacOS / iOS / 안드로이드 / UNIX(개발하다 C언어가 탄생) / Linux(무료 OS, 실무 많이 사용) 등이 있다. 하드웨어(CPU, 메모리, 입출력장치...)를 하나하나 코딩을 하기엔 시간이 오래 걸려서, 기본적으로 공통된 하드웨어 코딩을 완료 해놓은 운영체제를 개발했다. 즉 컴퓨터를 켜서 수행하는 것들(응용프로그램 개발 등)은 OS없이 수행하기 힘들다.
사용자
↕
시스템프로그램, 응용프로그램
(여러개를 돌리면 CPU 차지 싸움이 난다. 이 때 우선순위를 정하는 등 중재자 역할을 하는 OS)
↕
운영체제(OS)-커널(1.핵심 2.알맹이 의 뜻으로 하드웨어를 담당)-하드웨어
컴퓨터는 왜 2진수를 사용할까?
사람 | 컴퓨터 | |
사용 숫자 | 십진법 | 이진법 |
정보전달 방법 | 봉화, 소리, 시각, 숫자, 문자 등 다양한 형태 | 다양한 형태의 데이터를 숫자로 바꿔서 처리 |
에디슨 => 초기 실험용 전구 => 에디슨 효과(리처드슨 효과, 열전자 방출) => 진공관의 원리 => 벨연구소 트랜지스터 (실리콘 등을 이용한 반도체 기술로 만듦) => 직접회로
* 진공관의 전류가 흘렀다 멈췄다를 껐다 켰다로 조절 가능. 껐다 켰다를 0과 1로 대응
* 트랜지스터의 개발로 CPU, 메모리 등을 만들 수 있게 됨. 진공관의 기능가 비슷한데 크기는 훨씬 작은게 특징
현대적 컴퓨터의 기본 구조
- Plugboard, Punched card, Enigma, ENIAC
* 옛날 메모리들은 실행 할 때마다 컴퓨터에 연결 해서 써야했다.
* 앨런튜링 : 애니그마 해독, UTM(Universal Turing Marchine)
* 폰노이만 : Manhattan Project( 핵 만들다가 컴퓨터 만듦)
내장형 프로그램 방식의 컴퓨터(Stored-program Computer)=폰노이만구조
- Example of a single system computer bus
System bus(Control bus, Adress bus, Date bus)
<==> CPU, 메모리, 입출력장치
- 입력장치 => CPU와 메모리가 분리되어 통신하며 협력 => 출력장치
컴퓨터 메모리의 기본 구조
- CPU <==> 주기억장치-메모리 (시스템버스로 각각 나뉘어서 소통하는것이 특징)
* 캐쉬메모리 : 똑같은 프로그램 반복적으로 사용 할 때 자주 가져 올 것은 캐쉬메모리에 저장해두면 속도가 빨라진다.
- 순차접근(Sequential access) : 1부터 차례대로 접근
- 임의접근(Random access) : 찾는 데이터로 바로 정확히 찾아가는 접근
- 메모리 : 셀(트랜지스터1개+컵베스터 1개)들이 모여서 구성
여러가지 셀 중 찾는 데이터로 바로 접근 할 수 있게 만들었다.(임의접근)
주소를 직접 주고 받아야 한다.(시스템 버스)
CPU의 기본 구조
- 프로그램의 시작되는 과정
CPU <==> 주기억장치-메모리(프로그램) <== 보조기억장치(프로그램)
1. 프로그램을 만들었다.
2. 보조기억장치에 저장.
3. 실행시키고 싶으면 OS에게 부탁해서 실행
4. 입력 받으면 프로그램을 주기억장치로 복사
5. CPU가 주기억장치를 읽으면서 실행
- 고수준 프로그래밍 언어 / 어셈블리 언어 / 기계어
기계어를 사람이 직접 프로그래밍 하긴 어렵다.(옛날엔 다 했지만..)
기계어는 CPU가 사용하는 언어.
- CPU 명령어 집합 : 기본적인 명령어를 조합해서 어려운 연산을 한다.
- CPU의 구성 요소들
제어장치 ==> 산술논리장치 <==> 여러가지레지스터들 <==> 제어장치
* 레지스터 = 등록부, 책상역할(작업공간)
주소레지스터, 프로그램카운터, 데이터레지스터, 명령어 레지스터, 어큐물레이터
CPU가 일하는 방법
- 제어장치 ==> 산술논리장치 <==> 여러가지레지스터들 <==> 제어장치
* 레지스터 = 등록부, 책상역할(작업공간)
주소레지스터, 프로그램카운터, 데이터레지스터, 명령어 레지스터, 어큐물레이터
정보의 단위
- 단위 비트(샤논:정보이론의 아버지)
- 데이터(Data) VS 정보(Information)
데이터 -> 처리과정 -> 정보
* 디지털 정보의 단위는 디지털 데이터의 단위이기도 합니다.
비트(bit=binary digit) 0 또는 1 정보의 기본 단위
1바이트(byte)=8비트 01010101 메모리 주소의 기본 단위
16(32)비트 = 워드(Word) CPU가 데이터를 다루는 기본 단위=레지스터의 크기
*워드는 고정된 숫자비트가 아니고 CPU나 컴퓨터에 따라 달라진다
이진수
- 10진수와 2진수 연산 결과 똑같아
- 사람이 10진수 입력하면 내부에선 2진수로 바꿔서 계산 후 10진수로 출력
- 부호가 있는 8비트
정수는 0으로 시작하면 양수 1로 시작하면 음수
- '2의 보수' 정수 표현법에서는 -0과 0은 같다는 장점이 있다.
- 8비트 정수의 범위
부호가 있는 정수 10000000~01111111(2진법) -128~127(10진법)
부호가 없는 정수 00000000~11111111(2진법) 0~255(10진법)
'개발 기초' 카테고리의 다른 글
[Internet] 웹서버와 웹브라우저의 통신(feat. http) (0) | 2020.11.16 |
---|---|
[Internet] 웹호스팅 Github (0) | 2020.11.14 |
[Internet] Web과 Internet(feat.서버와 클리이언트) (0) | 2020.11.13 |
명령 프롬포트의 기본적인 사용법 (0) | 2020.11.05 |
통합개발환경(IDE) 소개 (0) | 2020.11.02 |