컴퓨터란?
- 입력받은 데이터를 정해진 규칙대로 처리하고, 처리 결과를 저장하고 출력하는 전자 장치
- 컴퓨터는 입력장치를 통해 데이터를 입력 받음
- 정해진 규칙(프로그램)에 따라 중앙처리장치에서 연산 수행
- 처리된 연산 결과물을 기억장치에 저장해고, 출력장치를 통해 출력
- 컴퓨터는 장치부를 뜻하는 하드웨어와 프로그램을 뜻하는 소프트웨어로 구분
하드웨어
- 하드웨어는 컴퓨터를 구성하는 기계적(물리적) 장치들의 집합
- 중앙처리장치, 기억장치, 입력장치, 출력장치로 분류되며 각 장치는 시스템 버스로 연결되어 있음
- 중앙 처리장치(CPU)
- 프로그램의 실행과 데이터 처리를 담당하는 컴퓨터의 핵심 장치로 프로세서라고도 함
- CPU는 제어장치, 연산장치, 레지스터로 구성됨
- 제어장치
- CPU의 모든 동작과 데이터 흐름을 통제하고 관리
- 운영체제와 소통하며 컴퓨터의 자원을 관리
- 연산장치
- 프로그램에 기술되어있는 명령어를 수행
- 코드를 실질적으로 실행시키는 장치
- 레지스터
- CPU 내에 존재하는 작고 빠른 기억장치
- 연산장치의 동작에 필요한 데이터들을 임시로 보관하며 제공
- 제어장치
- 기억장치
- 기억장치는 저장 장치라고도 하며, CPU의 동작에 필요한 데이터들을 장,단기적으로 보관함
- 장기적으로 저장하는 장치를 보조기억장치, 단기적으로 저장하는 장치는 주기억장치라고 함
- 보조기억장치
- 컴퓨터에게 필요한 정보를 반영구적으로 저장
- 큰 용량의 데이터를 저장할 수 있지만, 데이터를 읽고 쓰는 속도가 느림
- CPU의 연산 속도는 엄청나게 빠른 반면, 보조기억장치는 느리기 때문에 CPU는 보조기억장치와 직접적으로 소통하지 않음
- Ex. SSD, HDD 등의 장치가 포함
- 주기억장치
- 컴퓨터가 프로그램을 수행하는 동안 필요한 모든 데이터들을 저장
- 큰 용량의 데이터를 저장할 수 없지만, 데이터를 읽고 쓰는 속도가 빠름
- CPU의 연산 속도를 어느 정도 따라 잡을 수 있을 정도로 빠르기 때문에 CPU는 주기억장치와 직접 소통함
(Ex. RAM, ROM 등의 장치가 포함)
- 캐시메모리
- 캐시메모리는 CPU가 사용한 데이터와 관련된 데이터 중 재사용 가능성이 높은 데이터를 주기억장치로부터 미리 불러와 대기시켜놓는 역할을 함
- 메모리의 계층구조
- 기억장치는 용량이 높을 수록 가격과 속도가 낮아지고, 용량이 낮을 수록 가격과 속도가 높아지는 반비례 구조를 가지고 있음(메모리를 종류별로 구분하는 근본적인 이유)
- 보조기억장치
- 입력장치
- 사용자로부터 컴퓨터 내부로 데이터를 입력받는 장치
- 키보드, 마우스, 마이크 등
- 출력장치
- 컴퓨터 내부 데이터를 사용자에게 감각할 수 있는 형태로 출력해주는 장치
- 모니터, 스피커, 프린터 등
- 시스템 버스
- 시스템 버스는 CPU를 포함한 각 하드웨어 장치간의 통로로 각 하드웨어 장치를 물리적으로 연결한 전선을 의미
- 데이터 버스: 하드웨어간 데이터를 전달하는 통로
- 주소 버스: 데이터가 어디에 도착해야하는지에 대한 정보를 전달하는 통로
- 제어 버스: CPU의 제어장치가 생성한 제어 신호를 다른 장치로 전달하는 통로
- 시스템 버스는 CPU를 포함한 각 하드웨어 장치간의 통로로 각 하드웨어 장치를 물리적으로 연결한 전선을 의미
- 컴퓨터의 동작
- 프로그램을 켜면 운영체제가 보조기억장치에 저장되어있던 프로그램을 주기억장치인 RAM에 로드시킴
(메모리 적재) - 로딩이 완료되면 프로그램이 모니터상에 출력되어 나타나고, 입력장치를 통해 조작을 하거나 데이터를 입력받을 수 있음
(실행 중인 프로그램을 프로세스라고 함) - 동작을 명령하면 CPU는 프로그램의 소스 코드에 작성된 대로 해석하고 계산을 하여 결과값을 주기억장치에 저장하고 모니터를 통해 출력하게 됨
- 프로그램을 켜면 운영체제가 보조기억장치에 저장되어있던 프로그램을 주기억장치인 RAM에 로드시킴
- 중앙 처리장치(CPU)
소프트웨어
- 소프트웨어는 물리적인 형태가 없는 컴퓨터의 구성 요소로 하드웨어의 제어 방식을 기술한 명령어의 집합
- 크게 시스템 소프트웨어와 응용 소프트웨어로 구분할 수 있음
- 시스템 소프트웨어
- 응용 소프트웨어를 실행하기 위한 일종의 플랫폼
(ex. Mac, Win Linux 같은 운영체제 Or Node.js, JRE와 같은 런타임 환경) - 하드웨어와 직접적으로 소통하며 키보드, 마우스, 모니터 등의 하드웨어 장치들이 동작할 수 있도록 해줌
- 응용 소프트웨어를 실행하기 위한 일종의 플랫폼
- 응용 소프트웨어
- 시스템 소프트웨어를 제외한 모든 소프트웨어
- 일반적인 프로그램이며 애플리케이션(앱)이라고도 함
- 프로그래밍
- 프로그램(=소프트웨어)을 만드는 과정으로, 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 코드로 작성하는 과정
- 프로그램은 프로그래밍의 결과로 만들어진 산출물로 어떠한 목적을 달성하기 위한 컴퓨터 명령문의 집합체
- 프로그래밍 언어
- 사용자의 명령을 컴퓨터가 이해할 수 있는 언어로 설명하기 위해 필요
- 컴퓨터는 기계어를 사용하지만, 사람이 이를 이해하기 어렵기 때문에 컴퓨터의 언어와 사람의 언어를 매개해주는 프로그래밍 언어 활용
- 기계어에 가까울수록 저수준 언어, 사람의 언어에 가까울수록 고수준 언어라고 함
- 프로그래밍 용어
- 컴파일
- 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있도록 기계어 코드로 변환해주는 작업
- 빌드
- 작성한 소스 코드를 실행 할 수 있는 산출물로 변환시키는 과정을 의미
- 컴파일을 마친 코드는 기계어 코드로 변환되지만 프로그램이 실행되기 위해서는 실행 파일(exe, msi 등)로 만들어주는 빌드 과정이 필요
- 통합 개발 환경(IDE)
[Integrated Development Environment]- 코드를 작성할 때 사용하는 프로그램으로 프로그래밍에 필요한 모든 작업을 하나의 프로그램 안에서 처리할 수 있도록 만들어진 프로그램
- IDE를 사용하면 단순히 코드를 작성하고 편집하는 것 뿐만 아니라 디버깅, 빌드 등의 작업을 IDE 안에서 다 수행할 수 있음
- 컴파일
- 시스템 소프트웨어
'Computer Science > Theory of Computation' 카테고리의 다른 글
웹 기초 (0) | 2022.05.02 |
---|---|
의사 코드(슈도 코드) (0) | 2022.04.28 |