백엔드 부트캠프/TIL

[TIL] DAY-2 컴퓨터의 이해, 웹 클라이언트와 웹 서버

o_b:us 2022. 4. 27. 09:30

💻컴퓨터란?

컴퓨터는 프로그램을 이용해 결과를 도출하기 위해 만들어진 기계이다. 과거 컴퓨터는 주로 연산을 하는 ‘계산기’를 뜻했다.

오늘날의 컴퓨터는 20세기 천재들인 앨런 튜링(Alan Turing)의 논문을 시작으로 존 폰 노이만(John von Neumann)이 설계한 프로그램 저장 방식과 존 바딘(John Bardeen), 월터 브래튼(Walter Brattain), 윌리엄 쇼클리(William Shockley) 등 노벨상 트리오가 발명한 트랜지스터로 개발을 거듭한 결과물이라 할 수 있다.

컴퓨는 방대한 양의 데이터를 입력, 처리, 저장, 출력할 수 있는 전자 기기(electronic machine or device)다. 즉, 산술이나 논리셈을 자동으로 수행하도록 프로그래밍할 수 있는 범용장치(programmable machine)이다.



💻컴퓨터의 구성 요소



🧠소프트웨어

  "소프트웨어"라는 용어는 1957년에 존 터키(John W. Tukey)가 처음 사용한 용어이다. 일상적으로 이 용어는 응용 소프트웨어의 의미로 자주 쓰인다. 컴퓨터 과학과 컴퓨터 공학에서 "컴퓨터 소프트웨어"는 컴퓨터 시스템, 프로그램, 데이터에 의해 처리된 모든 정보를 말한다. 소프트웨어는 기본적으로 시스템 소프트웨어와 응용 소프트웨어라는 두 가지 범주로 분류됩니다. 시스템 소프트웨어는 응용 소프트웨어와 컴퓨터의 하드웨어 사이의 인터페이스 역할을합니다. 응용 프로그램 소프트웨어는 사용자와 시스템 소프트웨어 간의 인터페이스 역할을합니다. 우리는 그들의 목적에 따라 시스템 소프트웨어와 응용 소프트웨어를 구별 할 수 있습니다. 시스템 소프트웨어 는 시스템 자원을 관리하도록 설계되었으며 응용 프로그램 소프트웨어를 실행할 수있는 플랫폼도 제공합니다. 반면 응용 소프트웨어 는 사용자가 특정 작업을 수행 할 수 있도록 설계되었습니다.


1. 시스템 소프트웨어 (System Software)

  응용 소프트웨어가 작동하는 환경을 만들거나 컴퓨터를 유지, 관리하는데 사용되는 소프트웨어. 때문에 "플랫폼"이라고도 부른다. 예를 들어 윈도 플랫폼 컴퓨터로 비디오게임을 플레이하는데, 이 비디오게임이 언리얼 게임 엔진 기반이라고 해 보자. 이 게임은 언리얼 게임 엔진 위에 게임 코드(스크립트 등)와 각종 자산(애셋, 예를 들어 사운드, 텍스처 등등)을 얹은 물건이다. 즉 게임 엔진이 시스템 소프트웨어다. 게임 엔진 또한 컴퓨터의 운영체제(시스템 소프트웨어)인 윈도라는 플랫폼 위에서 구동되고 있다.

이 예에서는 윈도 위에 언리얼 엔진으로 시스템 소프트웨어가 두 층을 이루고 있지만, 극단적인 경우 세 층, 네 층의 시스템 소프트웨어가 쌓여서 돌아갈 수 있다.

  • 응용 소프트웨어의 실행 환경이다.
    • Ex. Mac, Windows, Linux와 같은 운영체제 및 Node.js, JRE와 같은 런타임 환경
  • 하드웨어 장치를 관리한다.
    • Ex. 키보드 드라이버, 마우스 드라이버, USB 드라이버와 같은 각종 장치 드라이버들

2. 응용 소프트웨어 (Application Software)

응용 소프트웨어는 어떤 목적을 달성하기 위해서 만들어진 프로그램이다. 그 대부분을 소프트웨어 업체에서 여러 가지 일을 효율적으로 처리할 수 있는 프로그램들을 미리 만들어 제공하며, 사용자는 목적에 맞는 것을 골라 사용한다. 줄여서 애플리케이션(Application) 및 앱(App)이라고도 하며, 일반적으로 프로그램이라고도 불립니다. 종류는 사무용, 교육용, 멀티미디어, 통신용, 게임 등 매우 다양합니다.

  • Ex .Microsoft Office, Photoshop, 애니메이션 소프트웨어 등


💪🏼하드웨어

  입력, 연산, 제어, 기억, 출력 등 다섯 가지 기능을 구현하기 위해 컴퓨터는 여러 가지 부품들로 구성되어 있다. 중앙처리장치, 기억장치, 입력장치, 출력장치로 분류됩니다. 그리고, 각 장치는 시스템 버스로 연결되어져 있습니다.

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

  CPU는 프로그램의 실행과 데이터 처리를 담당하는 컴퓨터의 핵심 장치로, 프로세서라고도 합니다. CPU는 제어장치, 연산장치, 레지스터로 구성되는데, 각 요소의 동작이 어우러져 CPU의 기능을 수행합니다.

  • 제어장치
    • CPU의 모든 동작과 데이터 흐름을 통제하고 관리합니다.
    • 운영체제와 소통하며 컴퓨터의 자원을 관리합니다.
  • 연산장치
    • 프로그램에 기술되어져 있는 명령어를 수행합니다.
    • 코드를 실질적으로 실행시키는 장치입니다.
  • 레지스터
    • CPU 내에 존재하는 작고 빠른 기억장치입니다.
    • 연산장치의 동작에 필요한 데이터들을 임시적으로 보관하며 제공합니다.

2. 기억장치 (Memory Device)

기억장치는 저장장치라고도 하며, CPU의 동작에 필요한 데이터들을 장기적으로 또는 단기적으로 보관합니다. 여기에서 장기적으로 저장하는 장치를 보조기억장치라고 하며, 단기적으로 데이터를 저장하는 장치를 주기억장치라고 합니다.

  • 주기억장치
    • 컴퓨터가 프로그램을 수행하는 동안 필요한 모든 데이터들을 저장합니다.
    • 큰 용량의 데이터를 저장할 수 없지만, 데이터를 읽고 쓰는 속도가 빠릅니다.
    • CPU의 연산 속도를 어느 정도 따라 잡을 수 있을 정도로 빠르기 때문에 CPU는 주기억장치와 직접적으로 소통합니다.
    • Ex. RAM(Random Access Memory), ROM (Read Only Memory)
  • 보조기억장치
    • 컴퓨터에게 필요한 모든 정보를 반영구적으로 저장합니다.
    • 큰 용량의 데이터를 저장할 수 있지만, 데이터를 읽고 쓰는 속도가 느립니다.
    • CPU의 연산 속도는 엄청나게 빠른 반면, 보조기억장치는 느리기 때문에 CPU는 보조기억장치와 직접적으로 소통하지 않습니다.
    • Ex. SSD(Solid State Drive), HDD (Hard Disk Drive)

RAM과 ROM에 대하여...

  1. RAM과 ROM의 주요차이점은 RAM은 기본적으로 읽기 - 쓰기 메모리 인 반면, ROM은 읽기 전용 메모리이다.
  2. RAM(휘발성)은 현재 처리해야하는 데이터를 임시로 저장합니다. 반면에 ROM(비휘발성)에는 부트 스트랩 중에 필요한 지침이 저장되어 있습니다.
  3. 한편으로는 RAM의 데이터를 쉽게 수정할 수있는 곳에서는 ROM의 데이터를 거의 수정하지 않을 수 있습니다 .
  4. RAM과 ROM은 모두 컴퓨터에 필요한 메모리입니다. ROM은 컴퓨터를 부팅하는 데 필요합니다. RAM은 CPU 처리에 중요합니다.

캐시 메모리 (Cache Memory)
캐시 메모리는 한 번 CPU가 사용한 데이터와 관련된 데이터 중, 재사용 가능성이 높은 데이터를 주기억장치로부터 미리 불러와서 대기시켜놓는 역할을 합니다.

기억장치의 계층 구조

3. 입력장치 (Input Device)

  말 그대로, 입력장치는 사용자로부터 컴퓨터 내부로 데이터를 입력 받는 장치입니다. 키보드, 마우스, 마이크, 트랙패드 등이 입력장치에 속합니다.

4. 출력장치 (Output Device)

  입력장치와 반대로, 출력장치는 컴퓨터 내부로부터 사용자에게 사람이 감각할 수 있는 형태로 데이터를 출력해주는 장치입니다. 모니터, 스피커, 프린터 등이 출력장치에 해당합니다.

5. 시스템 버스 (System Bus)

  시스템 버스는 CPU를 포함한 각 하드웨어 장치 간의 통로입니다. 즉, 각 하드웨어 장치를 물리적으로 연결한 전선을 의미하기 때문에 시스템 버스 또한 하드웨어에 포함됩니다. 시스템 버스는 다음과 같이 이루어져 있습니다.

  • 데이터 버스 - CPU와 기타 장치 사이에서 데이터를 전달하는 통로
  • 주소 버스 - CPU가 주기억 장치나 I/O 장치로 기억장치 주소를 전달하는 통로
  • 제어 버스 - 데이터 버스와 주소 버스를 제어하기 위해 제어 신호들을 전송하는 통로

Ex) 시스템 버스는 컴퓨터 시스템의 교통 시스템이라고 생각하면 된다. 당신이 하드 디스크에 저장되어 있는 MP3 파일의 음악을 듣을려고 한다고 상상을 해보자. 이때 MP3 파일 자체를 데이터라고 보면 된다. 이 데이터는 스피커를 통해 소리를 내기 위해서는 사운드 카드로 전송되어 아날로그 시그널로 변환 되어야 한다. 여기서 MP3 파일이 위치한 하드 디스크와 사운드 카드가 주소 정보라고 생각하면 된다. 마지막 컨트롤 정보는 앞의 데이터와 주소 정보가 언제, 어디로 가야 하는지를 알려 준다. 이 모든 것들이 컴퓨터의 두뇌인 CPU에 의해서 관리가 되지만, 실제 데이터를 전송하는것은 시스템 버스이다.



웹서버와 웹클라이언트란?

웹 클라이언트 : 서비스를 제공받는 쪽을 뜻하며, 프로그램을 지칭한다.

웹 브라우저 : 웹 브라우저는 사용자가 원하는 정보를 요청하고, HTML 언어를 해독하여 웹 서버가 제공하는 웹 서비스를 사용자가 볼 수 있게 바꾸어주는 클라이언트 프로그램이다.(크롬,파이어폭스,익스플로러)

웹 서버 : 서비스를 제공하는 쪽을 뜻하며, 구체적으로 컴퓨터나 프로그램을 뜻한다.

2티어 아키텍처 구조 (클라이언트-서버)
3티어 아키텍처 구조 (클라이언트-서버-DB)



WSL2 개념과 설치 방법

WSL이란

리눅스에 대해 평소에 들어보기만 하다가 오늘 처음으로 관련 내용을 공부해 보았다.

윈도우즈 10과 윈도우즈 서버군에 새롭게 포함된 WSL은 윈도우즈에서 리눅스 명령을 cmd, powershell 등을 통해 직접 실행할 수 있는 새로운 기능이다. 다시말하면 리눅스용으로 제공되는 각종 프로그램과 편리한 도구들을 윈도우용으로 포팅하거나 윈도우용 버전을 구할 필요가 없어지는 것이다. 특히나 IT쪽 개발자들은 윈도우에서 개발을 진행하면서 각종 가상머신과 에뮬레이터를 통해 불필요한 자원을 소모해가며 대체해오던 많은 것들을 실제 리눅스에서 개발하듯 윈도우에서 리눅스를 넘나들수 있게 된 것이다.


Virtual Machine과 같은 도구를 쓰지 않고 리눅스를 사용할 수 있게 해주는 프로그램이라고 이해했다.



설치하기

  1. Microsoft Store에서 Windows Terminal 설치
  2. 터미널 관리자 권한으로 실행
  3. 터미널에서 명령어 입력
  4. 터미널에서 dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart 명령어 입력

실행결과

  1. 64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 다운로드 받고 실행

  2. 터미널에서 wsl --set-default-version 2 명령어 입력(wsl2로 세팅)

  3. Microsoft Store에서 ubuntu를 검색한 후, 다운로드하고 실행.

  4. 사용자의 이름과 비밀번호를 입력합니다.

  5. 우분투 터미널에서 wsl -l -v 입력 후 VERSION이 2인지 확인. 만약, 버전이 1이라면 wsl --set-version Ubuntu 2를 입력하여 2로 바꿔줍니다



일기 - 글 쓰다가 임시 저장을 분명 해놨는데 다시 쓰려고 보니까 날라갔다.. 분명 해놨는데 분명 해놨는데 분명 해놨는데

출처: 코드스테이츠 ,https://bit.ly/37HKtSo , https://bit.ly/398P7Jq , https://bit.ly/3kdhit1 , https://richong.tistory.com/92 , https://conatuseus.tistory.com/29