컴퓨터 공학 기초 상식

Written by Tejay
on 

컴퓨터 공학 기초 상식

1. 프로그래머란

  • 프로그래머란 프로그램을 만드는 사람이다. 즉, 프로그래머가 프로그래밍을 해서 어떠한 기능을 하는 프로그램을 만드는 것이다. 요즘은 프로그래머라고 포괄적으로 얘기하지 않고 특정 분야 뒤에 개발자를 이름을 붙여서 불린다.

  • 프로그래머의 종류는 매우 다양하며 앞으로 더 늘어날 것이다. 그리고 프로그램을 만들기 위해서는 프로그래밍을 하기 위한 언어가 필요한데 이것도 점차 늘어나고 있다.

    Image


2. 컴퓨터의 구성

  • 컴퓨터의 기본적인 구성은 직접 손으로 만질 수 있는 하드웨어(Hardware), 그리고 물리적으론 존재하지 않지만 컴퓨터를 이용하기 위한 필요한 프로그래 및 관련 데이토를 가리키는 소프트웨어로 구성 되어 있다.

      1. 하드웨어

        • 중앙처리 장치 (Central Processing Unit, CPU)

          입력장치 및 기억장치로부터 데이터를 받아 분석하고 처리하는 역할을 한다. 컴퓨터의 두뇌에 해당하는 핵심 부품이고 분석하고 처리하는 속도가 빠를수록 비싸다.

        • 주기억 장치 (Main Memory Unit)

          중앙처리가 처리할 데이터를 보관해 두는 장치이다. 램은 데이터 처리 속도가 빠르지만 전원이 꺼지면 모든 데이터가 사라진다는 단점이 있다.

        • 보조기억장치 (Secondary Memory Unit)

          보조기억장치는 속도가 느린 편이지만, 전원이 꺼져도 데이터를 안전하게 보관할 수 있고 용량도 크다. 예로는 HDD, SSD, CD-ROM, USB 등이 있따.

        • 입력장치 (Input Device)

          컴퓨터를 활용하기 위해 각종 자료나 명령어를 입력할 때 쓰는 장치이다. 키보드나 마우스 등이 있다.

        • 출력장치 (Output Device)

          중앙처리 장치(CPU)에서 처리한 정보를 실체화하여 사용자에게 전달하는 역할을 하는 장치이다. 모니터나 프린터, 스피커 등이 출력장치로 쓰인다.


3. 운영체제

  • 운영체제는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다. 시스템 하드웨어를 관리할뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다.

4. HTTP, GET, POST, HTTPS

- HTTP

  • HTTP는 Hypertext Transfer Protocol의 약자이고 이것은 문서를 웹브라우저가 웹 서버에 요청하는 프로토콜
  • 프로토콜이라는 것은 일종의 대화 규칙이며 이 프로토콜을 통해 원하는 것을 서로 교환 가능

- GET

  • HTTP 프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식(메서드)
  • 주소줄 뒤에 ?가 붙어져 데이터를 보낸다. GET은 URL에 이어붙기 때문에 길이 제한이 있어 많은 양의 데이터를 보내기 어려움
  • GET은 선택적인 성향을 가지고 있기 때문에 데이터를 가져와 보여주는 용도로만 사용

- POST

  • HTTP 프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식(메서드)
  • 주소줄에 붙지 않고 숨겨져서 보내지기 때문에 용량 제한 내에 데이터를 보내기에 적합
  • POST는 서버의 값이나 상태를 바꾸기 위해 사용

- HTTPS

  • HTTPS는 HTTP처럼 프로토콜이지만 모든 통신 내용을 암호화하는 것에 차이가 있다. 뒤에 붙는 s는 secure socket으로 안전한 통신망
  • 페이지 암호화 키가 그 페이지를 보는 특정 사용자에게만 알려져야 할 경우 이 프로토콜을 사용

5. IPv4, IPv6, DNS

- IPv4

  • 32비트의 부소체계로 구성된 첫번째 인터넷 프로토콜

- IPv6

  • 128비트의 주소체계를 가지는 인터넷 프로토콜
  • IPv4의 고갈로 인해 제정

- DNS

  • 도메인 네임 시스템(DNS)은 어떠한 사이트 접속을 하기 위해선 해당 사이트에 대한 정보를 가지고 있는 서버의 주소.즉, IP를 알아야 한다. 하지만 전 세계적으로 무수히 많은 도메인에 연결된 IP를 알아내기 어려워 등장했다. 따라서 IP를 특정 이름에 연결을 해 어디서든지 이 특정이름을 입력하면 IP를 입력하지 않더라도 해당 사이트로 접속을 할 수 있다. 이 사이트와 IP를 연결해주는 것이 바로 DNS이다.

6. 자료 구조

- 연결 리스트(Linked List)

  • 각 노드가 데이터와 포인터가 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조

  • 연결 리스트의 장점

    • 중간 지점에서도 자료의 추가와 삭제가 언제나 가능하다
  • 연결 리스트의 단점

    • 특정 위치의 데이터를 검색하는데 시간이 걸리는 단점이 있다
  • 연결 리스트의 종류

    • 단일 연결 리스트

      단일 연결 리스트는 각 노드에 자료 공간과 한개의 포인터 공간이 있고, 각 노드의 포인터는 다음 노드를 가리킨다.

    • 이중 연결 리스트

      이중 연결 리스트의 구조는 단일 연결 리스트와 비슷하지만, 포인터 공간이 두 개가 있고 각각의 포인터는 앞의 노드와 뒤의 노드를 가리킨다.

    • 원형 연결 리스트

      원형 연결 리스트는 일반적인 연결 리스트에 마지막 노드와 처음 노드를 연결시켜 원형으로 만든 구조이다.

- 스택 (Stack)

  • 제한적으로 접근할 수 있는 나열의 구조이다. 예를 들어 물건들이 쌓여있고 그것을 쌓거나 뺄수 있다.
  • 데이터를 넣는 것을 PUSH라고 하고 데이터를 꺼내는 것을 POP이라고 한다.
  • 꺼내지는 자료는 가장 최근에 보관한 자료부터 나오게 된다.
  • LIFO(Last-in First-out) 구조

- 큐 (Queue)

  • 먼저 들어온 데이터가 먼저 처리된다.
  • FIFO(First-in First-out) 구조

7. 데이터

- 데이터와 정보의 차이

  • 데이터는 현실 세계에서 어떠한 측정과 관찰을 통해 얻은 단순한 값이고, 자료는 데이터를 처리해서 얻은 값이다.

- DB(데이터베이스)

  • 체계화된 데이터들의 집합으로 정보들을 저장하여 운영하기 때문에 대부분 보조기억장치에 저장하여 사용된다.
  • 데이터베이스의 특징
    • 실시간 접근성
    • 지속적인 변화
    • 동시 공유
    • 내용에 대한 참조
    • 데이터 노리적 독립성
  • 데이터베이스의 장점
    • 데이터 중복 최소화
    • 데이터 공유
    • 일관서, 무결성, 보안성 유지
    • 최신의 데이터 유지
    • 데이터 표준화 가능
    • 데이터의 논리적, 물리적 독립성
    • 용이한 데이터 접근
    • 데이터 저장 공간 절약
  • 데이터베이스의 단점
    • 데이터베이스 전문가 필요
    • 많은 비용 부담
    • 데이터 백업과 복구가 어려움
    • 시스템의 복잡함
    • 대용량 디스크로 엑세스가 집중되면 과부화 발생

- RDB (관계형 데이터베이스)

  • 관계형 데이터베이스는 키와 값들을 간단한 관계를 테이블화 시킨 것으로 간단한 원칙의 전산정보 데이터베이스이다.

- DBMS (데이터베이스 관리 시스템)

  • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트 웨어 도구의 집합이다.
  • 데이터베이스 관리 시스템의 장점
    • 자료의 통합성 증진
    • 데이터 접근성 용이
    • 데이터 통제 강화
    • 응용 프로그램 개발과 관리 용이
    • 보안 강화

- SQL

  • DBMS의 데이터를 관리하기 위해 만들어진 특수한 프로그래밍 언어이다. 현재 데이터베이스 관련 프르그램들이 SQL을 표준으로 채택해서 사용하고 있다.

- NoSQL

  • 전통적인 관계형 데이터베이스보다 덜 제한적인 것에 이용하는 데이터 저장 및 검색을 위한 매커니즘이다. 이것은 빅데이터와 실시간 웹 애플리케이션의 상업적 이용이 쓰인다.

8. 서버와 클라이언트

- 서버

  • 서버란 어떠한 서비스를 네트워크를 통해 클라이언트들에게 제공하는 컴퓨터를 가리킨다.

- 클라이언트

  • 클라이언트는 서비스를 사용하는 사용자를 가리킨다.

9. 프론트엔드와 백엔드

PreStudy_11

- 프론트엔드

  • 프론트엔드는 사용자가 어떠한 프로그램을 접할 때 가장 처음 접하게 되는 부분이며 위의 그림과 같이 사용자가 눈으로 확인이 가능한 부분을 가리킨다.

- 백엔드

  • 프론트엔드가 가장 처음이라면 백엔드는 마지막이라고 볼 수 있다. 위에 그림을 보면 사용자는 눈으로는 프론트엔드만 보이기 때문에 백엔드는 추측은 할 수 있지만 유저의 눈으로는 확인이 불가능하다.