goal
- 컴퓨터의 구성요소를 이해한다.
- 소프트웨어의 종류 / 하드웨어 종류를 이해한다.
- 시스템 소프트웨어 / 응용 소프트웨어 / 중앙 처리장기 / 기억장치 / 캐쉬메모리 / 기억장치 계층 구조
- 컴퓨터의 동작을 이해한다.
- 프로그래밍을 이해한다.
- 컴파일 / 빌드
- 서버와 클라이언트를 이해한다.
- 2티어/3티어 아키텍쳐를 이해한다.
* 들어가며....
프로그램 = 소프트웨어 & 애플리케이션
- 만약, 어떤 소프트웨어가 웹을 기반으로 구성되면 "웹 애플리케이션"
1 ] 컴퓨터 구성요소
- 컴퓨터 구성요소
- 각 요소의 상호작용 및 동작방법 (개괄적 이해)
1. 컴퓨터란?
: 컴퓨터란, 입력 받은 데이터를 정해진 규칙대로 처리해서 처리 결과를 저장하고 출력하는 전자 장치이다.
- 정해진 규칙
- 프로그램을 의미한다.
- 처리한다
- 연산처리를 의미, 중앙처리장치를 통해 연산이 수행된다.
- 처리결과의 저장
- 기억장치에 저장
- 출력한다
- 출력장치를 통해 출력한다.
[1] 크게 잘라보기
- 소프트웨어 :: 정해진 규칙대로
- 하드웨어 :: 입력 받은 데이터를 처리해서 처리 결과를 저장하고 출력한다.
2. 소프트웨어의 종류
[1] 시스템 소프트웨어
: 시스템 소프트웨어는 응용 소프트웨어를 실행하기 위한 일종의 플랫폼 역할
하드웨어와 직접적인 소통을하며 하드웨어가 동작하도록 한다.
- 즉, 응용 소프트웨어의 실행 환경
- 하드웨어 장치를 관리
[2] 응용소프트웨어
: 시스템 소프트웨어를 제외한 모든 소프트웨어
3. 하드웨어 종류
[1] 중앙처리장치
- 프로그램의 실행과 데이터 처리를 담당하는 컴퓨터 핵심 장치
- ''프로세서''라고도 한다.
- CPU는 제어장치, 연산장치, 레지스터로 구성된다. 이것들이 어우러져 CPU의 기능 수행
- 제어장치
- CPU의 모든 동작과 데이터 흐름을 통제하고 관리
- 운영체제와 소통 및 컴퓨터 자원 관리
- 연산장치
- CPU에 기술된 명령어 수행
- 코드의 실행
- 레지스터
- CPU내부의 기억장치
- 작고 빠르다
- 연산장치 동작에 필요한 데이터가 임시 저장
[2] 기억장치
- 저장장치라고도 불린다.
- 컴퓨터에 저장되는 데이터의 저장소
-보조기억장치
- 컴퓨터에게 필요한 모든 정보의 데이터가 저장된다.
- 데이터를 쓰고 읽는 속도가 느리다. (대용량)
- CPU와 보조기억장치간의 속도차로 직접소통하지 않는다. (예) ssd
- CPU : 빠름
- 보조기억장치 : 상대적 느림
-주기억장치
- 프로그램을 수행할 때, 모든 데이터를 저장
- 데이터를 쓰고 읽는 속도가 빠르다. (대용량)
- 속도가 빨라 CPU와 직접적인 소통을 한다. (예) ram
- 하지만, CPU가 더 빠르다.
- 어느 정도 따라 잡을 수 있을 뿐
[3] 캐시메모리(Cash Memory)
- 기억장치 중 하나
- 엄청 빠름
캐시메모리는 프로그램 실행에 사용된 데이터중, 재사용 가능성이 높은 데이터 및 관련 데이터를
미리 불러와서 대기 시킨다.
! 기억장치의 계층구조 !
[4] 입력/출력장치
[5] 시스템 버스(System Bus)
- 시스템 버스 또한 하드웨어에 포함
- CPU를 포함한 각 하드웨어 장치간의 통로
- 즉, 각 하드웨어 장치를 물리적으로 연결하는 전선을 의미
구성
- 데이터 버스 : 하드웨어 데이터를 전달하는 통로
- 주소 버스 : 데이터가 어디에 도착해야 하는지 대한 정보 전달
- 제어 버스 : CPU의 제어장치가 생성한 제어 신호를 다른 장치로 전달하는 통로
2 ] 컴퓨터의 동작
- 프로그램 실행
- 프로그램 실행에 필요한 정보를 주기억장치 RAM에 적재 (적재과정을 로딩)
- 로딩은 보조기억장치 데이터를 주기억장치로 가지고 오는 것
- 출력된다. (프로그램은 실행중,,)
- 실행 프로그램 : 프로세스
- 입력을 줄 수도 있다. (준다고 가정)
- CPU는 프로그램의 소스코드에 작성되어 있는대로 해석,
- 소스 코드에 작성된 명령어들을 적용하여 계산
3 ] 프로그래밍의 이해
- 알고리즘을 통해 목적성을 가진 프로그램을 만드는 것
1. 프로그램
- 목적 달성을 위한 명령문의 집합체
2. 컴파일 (번역과정)
- 자연어의 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 컴파일
- 컴파일이 완료되면 컴퓨터가 이해할 수 있다.
3. 빌드 (실행파일 만들기)
- 빌드는 컴파일보다 큰 범위 (즉, 컴파일은 빌드 과정의 일부)
- 해석된 (컴파일된) 파일을 갖고 실행파일로 만들어주는 것 (확장자가 exe등 붙은것)
4 ] 서버와 클라이언트
1. 서버
- 제공주체
- 즉 리소스 제공 주체
- 일반적으로 리소스를 전달하기만 한다.
- 보통 리소스 저장 공간은 "데이터베이스"에 둔다.
[1] 서버의 구분
- 파일 서버 : 파일 제공
- 웹 서버 : 사이트의 필요한 정보를 제공
- 메일 서버 : 메일 주고 받도록 돕는 앱
※ 데이터베이스도 "데이터 제공자"이므로 일종의 서버라고 볼 수 있다.
2. 클라이언트
- 리소스를 사용
5 ] 2티어 아키텍쳐 (Client - Server)
- 만약, A소프트웨어에서 판매 상품이 업데이트 될 때마다 어플리케이션을 업데이트하게 되면 불편하다.
- 상품 정보와 같은 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍쳐, 또는 클라이언트 서버 아키텍쳐라한다.
6 ] 3티어 아키텍쳐 (Clinet - Server - Database)
- 클라이언트 : 리소스 사용
- 서버 : 리소스 전달 (일반적으로 전달만)
- 데이터베이스 : 리소스 저장된 곳