글을 쓰게된 계기
2학년 때 컴퓨터 구조를 수강했다.
원서를 번역한 책이었는데 이해하기 어려웠다.
이번 여름 방학 때 부스트코스 코딩뉴비챌린지를 참여하게 되었는데, 2학년 때 배웠던 과목들이 중요하다는 것을 느꼈다.
그래서 책을 보면서 정리하며 이해해보려고 한다.
컴퓨터 시스템
하드웨어 : 물리적 장치
ex) 컴퓨터 자체, 본체 등
하드웨어는 크게 3가지로 나뉜다.
중앙처리장치, 기억장치, 입출력장치
시스템 소프트웨어 : 어디에서나 필요한 프로그램
ex) OS, Complier 등
응용 소프트웨어 : 시스템 소프트웨어를 사용한 프로그램
ex) 게임, 계산기 등
소프트웨어는 전기적 신호(0과 1)로 이루어졌다.
또한, 하드웨어에 의존적이다.
왜냐하면 소프트웨어는 하드웨어가 제공하는 기능을 이용하여 결과를 얻기 때문이다.
컴퓨터의 기본 구조
컴퓨터는 프로그램 코드들을 정해진 순서대로 실행한다.
그 과정을 3가지로 나눠보자.
- 필요한 데이터를 읽고 (Read)
- 처리한다. (Processing)
- 결과는 저장한다. (Store)
3가지 과정은 하드웨어가 수행한다.
하드웨어는 그림과 같이 여러 요소들이 상호 연결되어 있다.
그렇다면 하드웨어에 대해 살펴보자.
하드웨어(H/W)
중앙처리장치 (CPU) (Central Processing Unit)
CPU : 프로그램 실행을 실행하고 데이터를 처리한다.
CPU는 Processer라고도 불리며, 데이터의 길이와 비트 수에 따라 32-bit, 64-bit 컴퓨터 등으로 분류된다.
또한, CPU의 속도에 따라 처리 속도가 결정된다.
기억 장치 (Memory)
Memory : CPU가 처리할 프로그램 코도와 데이터를 저장한다.
기억 장치는 특성과 속도에 따라 나뉜다.
주기억장치는 CPU와 가까이 위치했다.
RAM을 예로 들 수 있다.
또한, 가격이 높고 영구 저장이 되지 않아 일시적이다.
보조기억장치는 주변 장치로 분류되기도 한다.
왜냐하면 CPU에 의해 직접 access가 안되며, 별도의 제어기로 access하기 때문이다.
Harddisk를 예로 들 수 있다.
또한, 가격이 낮고 속도도 느리며 영구 저장이 가능하다.
입출력장치 (I/O)
I/O : 사용자와 컴퓨터 간의 대화를 위한 도구이다.
키보드, 모니터, 프린터 등을 예로 들 수 있다.
CPU와 직접 데이터 교환을 하지 않고, 장치마다 별도의 제어기를 가지고 있다.
컴퓨터가 받고, 처리하는 정보
컴퓨터가 받아드리고 처리하는 정보가 따로 있다.
- 프로그램 코드 (Program Code)
- 데이터 (Data)
위 2가지는 2진수를 나타내는 비트(bit)로 표현된다.
고급 언어 & 저급 언어
고급 언어 : 컴퓨터 프로그램을 만들기 위해 쓰여지며, 컴퓨터가 이해하기에는 어렵고 사람이 이해하기 쉽다.
ex) C, JAVA 등
고급 언어를 컴퓨터가 이해하기 위해서는 컴파일러 (Compiler)가 쓰인다.
컴파일러는 고급언어를 컴퓨터가 이해할 수 있는 기계어로 변환한다.
저급 언어 : 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어이다.
ex) 기계어, 어셈블리어 등
고급 언어는 어느 컴퓨터에서든 동일하다.
하지만 저급 언어인 기계어는 CPU마다 다르다.
CPU마다 다르기 때문에, CPU 고유의 중간 언어인 어셈블리어로 먼저 번역된다.
니모닉스 (Mnemonics) : 어셈블리 명령어가 지정하는 동작을 개략적으로 짐작할 수 있게 사용된 기호
ex) LOAD, ADD, STOR
어셈블리 명령어는 CPU가 수행해야 할 동작, 처리할 데이터가 저장되어 있는 기억장치의 주소 또는 레지스터 번호를 구체적으로 지정해준다.
어셈블러가 기계어 프로그램으로 번역해준다.
저의 주관적인 생각이 담긴 글입니다.
이 글을 보신 분들에게 도움이 되고자 글을 썼지만 부족한 부분이 많을 수 있습니다.
그 점 양해 부탁드리며, 추가했으면 하는 부분이나 잘못된 부분은 댓글로 알려주시면 감사하겠습니다!
'CS' 카테고리의 다른 글
[네트워크] TCP/IP 프로토콜 (0) | 2021.04.16 |
---|
댓글