컴퓨터의 정의
컴퓨터는 입력된 데이터를 정해진 규칙대로 처리하고 처리한 결과를 저장하고 출력하는 전자 장치이다.
구성요소
소프트웨어
- 시스템 소프트웨어
응용 소프트웨어가 작동하기 위한 플랫폼 역할, 하드웨어 장치와 직접 소통
ex. 운영체제, 런타임 환경, 프린터 드라이버, USB 드라이버 등
- 응용 소프트웨어
시스템 소프트웨어를 제외한 모든 소프트웨어
ex. 애플리케이션, 게임 등
하드웨어
- 중앙처리장치(CPU/프로세서)
- 제어장치: 컴퓨터의 모든 동작과 데이터 흐름, 자원 관리
- 연산장치: 프로그램에 기술된 명령어 실행 (코드를 실행하는 곳)
- 레지스터: 작고 빠른 기억 장치, 연산에 필요한 데이터를 임시 보관
- 처리 장치
- 주기억장치: ROM, RAM 같이 처리 속도가 빠른 기억 장치. 프로그램 수행시 필요한 정보를 저장(CPU 속도를 어느정도 따라가서 CPU랑 소통O)
- 보조기억장치: 용량이 커 컴퓨터에 필요한 정보를 반영구 저장하지만, 처리 속도는 느린 기억 장치(CPU와 직접 소통X, ex. SSD HDD)
- 출력 장치: 사람이 이해할 수 있는 형태로 처리 결과 출력
ex. 스피커, 모니터 등
- 입력 장치: 마이크, 키보드, 마우스 등
- 시스템 버스: CPU를 포함한 각 하드웨어 간 연결 통로
- 데이터 버스: 하드웨어 간 데이터 전달 통로
- 주소 버스: 데이터가 도착해야하는 주소 정보를 전하는 통로
- 제어 버스: 제어장치가 생성한 제어 신호를 다른 장치로 전달하는 통로
컴퓨터 동작
응용 프로그램을 실행하면 생기는 일:
1. 운영체제가 프로그램을 보조기억장치에서 주기억장치의 RAM으로 로드시킨다. (=메모리에 적재)
2. 모니터 상에 실행중인 프로그램에 출력된다.
3. 입력장치를 통해 데이터를 입력하고 처리를 누르면, CPU는 프로그램의 소스코드에 작성된 명령어 토대로 데이터를 처리한다.
4. 그 결과를 주기억장치에 저장 후 출력한다.
프로그래밍의 이해
- 프로그램: 프로그래밍으로 만들어진 결과물 ("컴퓨터 명령문의 집합체")
- 프로그래밍: 어떤 목적을 달성하기 위해 설계된 알고리즘을 "프로그래밍 언어를 사용하여" 코드를 작성하는 것
- 프로그래밍 언어: 기계어와 사람의 언어를 매개해주는 언어
- 컴파일: 소스 코드를 기계어 코드로 번역해주는 작업
- 빌드: 컴파일을 포함한 개념으로, 작성하고 번역된 코드의 집합체를 .msi, .exe 같은 "확장자를 가진 실행 파일" 형태로 만들어서 실행 가능한 프로그램으로 만드는 과정
- 통합개발환경(IDE): 코드 작성 뿐만 아니라 컴파일 등 프로그램을 만들 때 필요한 다양한 동작을 할 수 있는 환경. 이클립스, 인텔리제이 등이 여기에 해당.
클라이언트 서버 아키텍처 aka 2티어 아키텍처
소스가 존재하는 곳(서버)와 리소스를 사용하는 앱(클라이언트)를 분리시킨 것
3티어 아키텍처
2티어에 데이터베이스 추가. 보통 서버는 데이터를 전달해주고, 데이터베이스에 데이터를 저장한다.
클라이언트? 서버?
- 클라이언트: 웹사이트(웹앱), 모바일 앱, 데스크톱 앱 (플랫폼따라 구분)
- 서버: 웹 서버, 파일 서버, 메일 서버, 데이터베이스 서버
🌟학습 회고🌟
컴활1급 딸 때 공부했던 내용이라 낯선 개념은 없었다. 다만 이제는 휘발성 지식이 아니라 기초 지식으로 계속 머리에 기억해둬야겠다고 다짐하며, 개념을 꼼꼼히 이해하려고 노력했다. 기초 지식인만큼 소화하지 못한 내용은 아직 없다.