컴퓨터시스템은 크게 하드웨어(Hardware)와 소프트웨어(Software) 두 가지로 나눌 수 있다.
- 하드웨어: 컴퓨터의 물리적 부품들을 통칭하는 말로, 손에 잡히는 컴퓨터 기기 그 자체 및 주변 부품등을 뜻함
- 소프트웨어: 하드웨어 즉, 컴퓨터 기기를 통제하고, 명령하고, 구동하는 무형의 프로그램을 통칭하는 말
컴퓨터 하드웨어는 크게 3가지 중앙처리장치(CPU), 기억장치(Memory), 입/출력장치(I/O)로 구성되어 있다.
CPU(Central Processing Unit, 중앙처리장치)
: 사람으로 치자면 뇌에 해당하는 부분으로, 컴퓨터 시스템을 통제하고, 프로그램의 연산을 실행하고 처리하는 가장 핵심적인 컴퓨터의 제어장치이다.
CPU를 제조하는 대표적인 회사는 intel과 AMD
가 있다.
Memory(기억장치)
: 프로그램, 데이터 등을 저장하는 장치이다. 주기억장치와 보조기억장치로 나뉜다.
주기억장치 : 현재 CPU가 처리하고 있는 내용이 가져와지는 곳을 말한다.
주기억장치는 크게 ROM과 RAM으로 나뉜다.
보조기억장치 : 보조기억장치는 주기억장치보다는 느리지만, 많은 양의 데이터를 전원이 꺼져도 사라지지 않고 영구적으로 보관할 수 있는 장치이다.
따라서 컴퓨터의 데이터를 저장하는 창고라고 불리며, 외부의 데이터를 이곳에 저장한다.
보조기억장치는 크게 HDD와 SDD가 있다.
그 밖에 CD, USB, 플로피디스크, DVD, SD카드, 플래시 메모리카드 등이 있다.
ROM(Read Only Memory)
ROM은 오직 기억된 데이터를 읽기만 가능한 장치를 말한다.
따라서 제조 단계에서 시스템에서 기억시키고 변환시키면 안되는 BIOS와 같은 데이터가 이 장치에 저장된다.
ROM은 비휘발성 장치로, 장치에 존재하는 데이터는 컴퓨터의 전원이 꺼져도 사라지지 않고 그대로 유지된다.
RAM(Random Access Memory)
RAM은 ROM과 달리 기억된 데이터를 읽을 수도 있고, 다른 데이터를 기억시킬 수도 있는 메모리를 말한다.
응용 프로그램, 운영체제 등을 불러와 CPU가 작업할 수 있도록 하는 공간을 말한다.
RAM은 휘발성 장치이기 때문에, 전원이 꺼지면 가지고 있던 데이터가 전부 사라진다.
따라서 실행하고 있는 파일을 보조기억장치에 수시로 저장한다.
HDD(Hard Disk Driver)
물리적인 디스크를 고속으로 회전시켜 데이터를 저장하는 장치이다. 디스크에 물리적으로 저장하기 때문에 충격에 약하며, 소음이 발생한다.
SSD(Solid State Driver)
갈수록 발전하여 빨라지는 CPU와 RAM에 비해, 발전 속도가 더딘 물리적인 HDD의 느린 속도와 소음 등과 같은 단점을 해결하고자 개발된 장치로, 반도체 기반의 저장 장치이다.
SSD는 물리적으로 데이터를 저장하지 않고 전기적으로 데이터를 저장하여 속도가 HDD에 비해 월등히 빠르며, 소음도 발생하지 않는다. 대신, HDD에 비해 가격이 높다.
I/O(Input/Output,입출력)장치
컴퓨터의 시스템이나 주변기기 등의 하드웨어를 작동시켜 원하는 작업 결과를 얻기 위한 프로그램 또는 명령어의 거대 집합이다.
시스템 소프트웨어
응용 소프트웨어를 실행하기 위한 플랫폼을 제공하고, 컴퓨터 하드웨어를 동작, 접근할 수 있도록 설계된 컴퓨터 소프트웨어
응용 소프트웨어
넓은 의미에서는 운영체제에서 실행되는 모든 소프트웨어를 뜻함
좁은 의미에서는 OS위에서 사용자가 직접 사용하게 되는 소프트웨어
프로그래밍 언어는 저급언어와 고급언어가 있다.
기계어(Machine code)
기계어는 저급언어로 컴퓨터가 사용하는 언어이다.
컴퓨터의 CPU가 명령을 처리할 때 사용하는 언어이며 아래와 같이 이진화된 숫자(2진법)로 구성되어 있다.
1000 1011 0100 0101 1111 1000
1000 0011 1100 0100 0000 1100
0000 0011 0100 0101 1111 1100
어셈블리어(Assembly language)
어셈블리어는 기계어와 1대1로 대응이 되는 저급언어이다.
숫자로 나열된 문장의 의미를 사람이 바로 알아볼 수 있는 명령어로 바꾸기만 해도 작업이 훨씬 편해진다.
하지만, 이렇게 되면 컴퓨터는 이해할 수 없게 되기 때문에 어셈블리어로 작업한 것을 기계어로 번역하는 과정이 필요해지는데 이 기능을 하는 프로그램을 어셈블러라고 한다.
고급언어
현재 주로 사용되는 대부분의 언어는 고급언어이다.
사람들이 이해하기 편리하게 만들어졌기 때문이다.
이 고급언어는 크게 컴파일 언어와 인터프리터 언어
로 구분할 수 있다.
컴파일 언어 : 내가 작성한 소스 코드 전체를 컴퓨터가 이해할 수 있는 기계어로 번역한 후, 이 번역된 코드를 한번에 실행하는 단계를 걸쳐 진행된다.
즉, 번역과 실행이 완전히 따로 이루어진다는 의미이다.
번역은 컴파일러를 통해 수행되며, 대표적으로는 C, C++, Go 등이 있다.
인터프리터 언어 : 소스코드를 한 줄씩, 번역과 실행을 동시에 진행한다. 번역은 인터프리터를 통해 수행되며, 대표적으로는 Python, R, JavaScript가 있다.
참조 링크
https://coding-factory.tistory.com/355
https://ko.gadget-info.com/difference-between-system-software