CS/잡다한 기초

잡다한 기초 :) 컴퓨터 구성 요소 및 동작방식, sw/hw종류, 컴파일과 빌드, 2티어/3티어 아키텍쳐

euncheol kim 2022. 4. 27. 00:40

goal

  1. 컴퓨터의 구성요소를 이해한다.
  2. 소프트웨어의 종류 / 하드웨어 종류를 이해한다.
    • 시스템 소프트웨어 / 응용 소프트웨어 / 중앙 처리장기 / 기억장치 / 캐쉬메모리 / 기억장치 계층 구조
  3. 컴퓨터의 동작을 이해한다.
  4. 프로그래밍을 이해한다.
    • 컴파일 / 빌드
  5. 서버와 클라이언트를 이해한다.
  6. 2티어/3티어 아키텍쳐를 이해한다.

 

 

* 들어가며....

프로그램 = 소프트웨어 & 애플리케이션

  • 만약, 어떤 소프트웨어가 웹을 기반으로 구성되면 "웹 애플리케이션"

 

 

1 ] 컴퓨터 구성요소


  • 컴퓨터 구성요소
  • 각 요소의 상호작용 및 동작방법 (개괄적 이해)

 

1. 컴퓨터란?

: 컴퓨터란, 입력 받은 데이터를 정해진 규칙대로 처리해서 처리 결과를 저장하고 출력하는 전자 장치이다.

  • 정해진 규칙
    • 프로그램을 의미한다.
  • 처리한다
    • 연산처리를 의미, 중앙처리장치를 통해 연산이 수행된다.
  • 처리결과의 저장
    • 기억장치에 저장
  • 출력한다
    • 출력장치를 통해 출력한다.

 

[1] 크게 잘라보기

  • 소프트웨어 :: 정해진 규칙대로
  • 하드웨어 :: 입력 받은 데이터를 처리해서 처리 결과를 저장하고 출력한다.

 

 

2. 소프트웨어의 종류


[1] 시스템 소프트웨어

: 시스템 소프트웨어는 응용 소프트웨어를 실행하기 위한 일종의 플랫폼 역할

하드웨어와 직접적인 소통을하며 하드웨어가 동작하도록 한다.

  • 즉, 응용 소프트웨어의 실행 환경
  • 하드웨어 장치를 관리

 

 

[2] 응용소프트웨어

: 시스템 소프트웨어를 제외한 모든 소프트웨어

 

 

3. 하드웨어 종류


[1] 중앙처리장치

  • 프로그램의 실행과 데이터 처리를 담당하는 컴퓨터 핵심 장치
  • ''프로세서''라고도 한다.
  • CPU는 제어장치, 연산장치, 레지스터로 구성된다. 이것들이 어우러져 CPU의 기능 수행
  1. 제어장치
    • CPU의 모든 동작과 데이터 흐름을 통제하고 관리
    • 운영체제와 소통 및 컴퓨터 자원 관리
  2. 연산장치
    • CPU에 기술된 명령어 수행
    • 코드의 실행
  3. 레지스터
    • 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)

  • 클라이언트 : 리소스 사용
  • 서버 : 리소스 전달 (일반적으로 전달만)
  • 데이터베이스 : 리소스 저장된 곳