본문 바로가기
Developer/웹개발 교육 프로그램

[에이블런] TIL(24.05.09): 컴퓨터 구조

by 청량리 물냉면 2024. 5. 18.
반응형

오늘 배운 내용

컴퓨터 구조

block: 데이터를 그룹화 해놓은 것

페이지: 여러 개의 데이터를 한번에 묶어서 옮김. 이 단위를 페이지라 함. 페이지의 사이즈는 유동적.

버퍼: 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역. 데이터를 이동시키는 바가지 개념. 버퍼의 사이즈는 유동적. 개발자가 정할 수 있음. 보통 8k 단위.

⇒ 메모리를 적게 사용하기 때문에 메모리 입장에서는 버퍼를 사용하는 것이 유리하다.

여러 개의 버퍼를 지칭하는 용어로도 페이지를 사용한다.

데이터의 순서가 무조건 선입선출은 아니지만 어떻게든 데이터가 이동하기는 함 ⇒ 스트리밍

스트리밍 방식을 사용하지 않고 한번에 데이터를 받는 것 ⇒ 다운로드

 

TCP/IP

  • 이동하는 데이터의 순서 보장(넘버링을 통해). 실제 순서대로 데이터가 도착하지 않기 때문에 라벨링이 필요
  • 데이터가 도착했는지 아닌지 확인까지 한다.

UDP

  • 요청한 데이터를 전송해 주고, 대신 상대방이 데이터를 받았는지 아닌지 확인하지는 않는다.
  • 가볍기는 하지만 신뢰성은 보장되지 않는다.

웹 서버 파이프?? ⇒ 알아만 두기

스트리밍할 때…

인덱스를 이용한 데이터 서치: 빠르다 ⇒ call by reference

프로그램 언어의 구성 요소

  • sync: -
  • async: -

(OS가 io장치의 동작을 제어한다.)

  • block : 동작을 하지 못하게 막는다, a의 업무를 모두 마칠 때까지 b의 업무는 일시 정지
  • non-block i/o: 병렬적으로 처리를 할 수 있고 서로 의존성이 없기 때문에 기다릴 필요가 없음 (다른 스레드 또는 프로세스에게 일을 맡기고 나는 다른 일을 처리한다. 스레드 또는 프로세스가 일을 마치면 나에게 일의 결과물을 보내준다(callback)) ⇒ 작업물을 저장하기 위한 접시를 제공한다. (task queue, queue이기 때문에 먼저 끝난 작업은 먼저 삭제할 수 있다.)
  • 모든 이벤트의 이벤트가 발생하면 이벤트 큐에 쌓인다.(이벤트 루프, 이벤트 리스너), 이벤트 루프가 이벤트를 확인하고 처리해준다.
  • transaction: 업무를 수행하는 시점의 수행내역 (블로킹 일어남)
  • commit : 파일에 결과를 작성하는 것
  • rollback: 과정 취소

스택: LIFO

큐: FIFO

콜스택: 어떤 순서대로 코드를 실행할 지 컴파일한다. 먼저 실행될 연산을 스택의 가장 위쪽에 쌓음.

함수와 메소드

메소드: 함수에 있는 function

클래스와 객체

  • 원시 타입 값을 제외한 모든 값이 객체임
  • 객체는 all call by reference
  • 클래스는 object를 상속받는다.

실행 컨텍스트 = 실행환경

실행 컨텍스트: 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로, 자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념

렉시컬 스코프: 렉시컬을 나누는 단위

jvm: 자바 컨텍스트 실행시킬 수 있는 런타임

런타임

WAS(Web Application Servier)

실제 코드 돌림. 게시판 데이터 읽어오기, 실제 연산을 하는 프로그램

IP: 스위치의 ip를 사용함. (ex.강의장의 wifi → ip는 모두 동일함)

클라우드

컨테이너 (도커) ⇒ 서버를 여러 개로 나누어서 각자 사용한다.

하드웨어가 허용하는 한에서 컨테이너를 무한히 만들어 낼 수 있다. ⇒ 컨테이너가 많아지면 n명에게 서버를 제공할 수 있다. ⇒ 클라우드

  • onDemand: 개인이 서버를 구매해서 사용
  • onPremise: 은행권, 대기업 → 자체적인 서버실. 클라우드 구성

라이브러리와 프레임워크

라이브러리: 단순 함수들의 집합

프레임워크: 라우팅 가능

  • 프론트: 컴포넌트 기능, 라우팅 기능 없음(react-router-dom 라이브러리로 라우팅 기능 대체)
  • 백엔드: db, log, filter(악성코드 등), … 등 여러개의 기능을 갖추고 있어야 프레임워크

Messaging Queue

바로 처리하지 못하는 작업은 큐에 쌓아놓는다.

ex: 콘서트 티켓팅

ex: 화면에서는 +1을 증가시키고, 나머지는 큐에 담아놓고 나중에 한번에 서버에 요청을 보내 이벤트 처리

*쿠버네티스: 도커들을 조율하는 tool

*kafka: 메세징큐 솔루션

반응형