학습목표
- 컴퓨터와 프로그래밍의 이해
- 컴퓨터의 구성 요소
- 프로그래밍과 관련된 개념
- 웹 클라이언트 & 웹 서버
- 개발환경 세팅
- IntelliJ
배운 내용
1. 컴퓨터와 프로그래밍의 이해
- 프로그램은 소프트웨어 또는 애플리케이션이라고도 불린다.
- 컴퓨터란, 입력 받은 데이터를 정해진 규칙대로 처리해서 처리 결과를 저장하고 출력하는 전자 장치이다.
소프트웨어
- 소프트웨어는 물리적인 형태가 존재하지 않는 컴퓨터의 구성 요소, 하드웨어가 어떻게 동작해야 하는지 규정해놓은 명령어의 집합
시스템 소프트웨어(System Software)
-
응용 소프트웨어의 실행환경
-
하드웨어 장치 관리
응용 소프트웨어(Application Software)
-
애플리케이션 & 앱 &프로그램 지칭
-
시스템 소프트웨어 제외한 모든 소프트웨어
하드웨어
중앙처리장치 (CPU)
- 프로그램의 실행과 데이터 처리를 담당
- 제어장치
- CPU의 모든 동작과 데이터 흐름을 통제하고 관리
- 운영체제와 소통하며 컴퓨터의 자원을 관리
- 연산장치
- 프로그램에 기술되어져 있는 명령어를 수행
- 코드를 실질적으로 실행시키는 장치
- 레지스터
- CPU 내에 존재하는 작고 빠른 기억장치
- 연산장치의 동작에 필요한 데이터들을 임시적으로 보관하며 제공
기억장치(Memory Device)
- CPU의 동작에 필요한 데이터들을 장기적(HDD)으로 또는 단기적(RAM)으로 보관
- 보조기억장치
- 큰 용량의 데이터저장, but 데이터를 읽고 쓰는 속도 느림
- CPU의 연산 속도는 엄청 빠른 반면, HDD는 느리기 때문에 CPU는 HDD와 직접적으로 소통 X → 중간에 RAM을 통해서 소통
- 주기억장치
- 컴퓨터가 프로그램을 수행하는 동안 필요한 모든 데이터 저장
- 큰용량 X , but 데이터를 읽고쓰는 속도가 빠름
- CPU 와 직접적으로 소통 → HDD와 CPU의 중간다리 역할
- 캐시 메모리
- 한 번 CPU가 사용한 데이터와 관련된 데이터 중, 재사용 가능성이 높은 데이터를 주기억장치로부터 미리 불러와서 대기시켜놓는 역할(RAM과 CPU의 중간에위치)
**입력장치**
출력장치
시스템 버스
- 하드웨어 장치간의 통로
- 각 하드웨어 장치를 물리적으로 연결한 전선을 의미
- 데이터버스
- 주소버스
- 데이터가 어디에 도착해야 하는지에 대한 정보를 전달
- 제어버스
- CPU의 제어장치가 생성한 제어 신호를 다른 장치로 전달
컴퓨터 동작
- 프로그램 실행시, OS가 HDD에 저장된 프로그램을 RAM에 로드시킨다.
- 로딩 - CPU가 작업할수 있도록 HDD에서 RAM으로 프로그램 파일을 옮겨오는 과정(메모리에 적재)
- 프로세스 - 메모리에 로드되어 실행중인 프로그램
- CPU는 소스코드에 작성된 명령어를 계산하고 결과는 주기억장치에 저장
프로그래밍
- 프로그램을 만드는 과정으로서, 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 코드로 작성하는 과정
프로그램
- 어떠한 목적을 달성하기 위한 컴퓨터 명령문의 집합체
프로그래밍 언어
- 컴퓨터는 기계어를 사용
- 컴퓨터의 언어와 사람의 언어를 매개해주는 언어가 프로그램 언어
컴파일
- 프로그래밍 언어로 작성된 소스코드를 컴퓨터가 이해할 수있는 기계거 코드로 번역하는과정
빌드
- 컴파일 < 빌드
- 작성한 소스 코드를 실행할 수 있는 산출물로 변환시키는 과정
- 프로그래밍이 실행되려면 .exe / .msi 확장자를 가진 실행 파일로 만들어주는 빌드 과정이 필요
통합개발환경(IDE)
- 프로그래밍에 필요한 모든 작업(코드 작성, 편집,디버깅,빌드)을 하나의 프로그램안에서 처리할 수있도록 만들어진 프로그램
클라이언트-서버 아키텍처(2-Tier 아키텍처)
- 리소스가 존재하는 곳(서버)과 리소스를 사용하는 앱(클라이언트)을 분리시킨 것
- 리소스에 접근하는 클라이언트가 리소스를 가지고있는 점원에게 요청, 서버는 리소스를 담아 응답
클라이언트-서버+ 데이터베이스(3-Tier 아키텍처)
- 서버는 리소스를 전달해줄 뿐, 데이터베이스라는 창고에 리소스를 저장
- 프론트엔드 - 사용자가 직접 눈으로 보고 대면하는 클라이언트 앱 영역
- UI 클릭 or 터치 하는 등 상호작용할 수있는 앱 개발
- 종류 : 플랫폼에 따라 구분
- 웹사이트 (브라우저)
- 모바일 어플 (안드로이드, ios)
- 데스크탑 앱(윈도우)
- 백엔드 - 서버와 DB등 사용자 눈에 직접 보이지 않게 뒤에서 작동하는 영역
- 상품정보를 API로 노출, 로그인/로그아웃, 권한관리등의 사용자 인증을 주로 다루는 개발
- 종류 : 어떤 기능을 하느냐에 따라 구분
- 웹 서버(웹사이트에서 필요로하는 정보 제공)
- 파일 서버(파일제공)
- 메일 서버 (메일 주고받을수 있도록 지원)
- 데이터베이스 서버(데이터 제공)
어려운 내용(에러)
현상
drm:vmw_host_log [vmwgfx]] ERROR Failed to send host log message
해결
환경설정 > 디스플레이 > Graphics Controller 를 VBoxVGA로 변경