CS 42

자료 구조 - 해시 테이블(HashTable)

Key, Value 로 데이터를 저장하는 자료구조 빠르게 데이터를 검색할 수 있는 자료구조이다. 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블의 평균 시간복잡도는 O(1) 해시 테이블은 각각의 Key 값에 해시 함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용하여 값을 저장하거나 검색하게 된다. 자바스크립트 HashTable 구현하기 class HashTable { table = new Array(16); constructor() {} // key와 value를 받아 해시 테이블에 저장한다. setItem = (key, value) => { table[key] = value; }; // key를 통해 value를 가져온다..

CS/자료구조 2023.10.29

PCB (Process Control Block)

프로세스 제어 블록(PCB)은 특정한 프로세스를 관리할 필요가 있는 정보(메타데이터)를 포함하는 운영체제 커널의 자료 구조 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스를 의미 프로그램이 실행되어 메모리에 적대되었을 때 프로세스가 생기고, 프로세스 주소 공간에 코드, 데이터, 스택 공간이 생선된다. 프로세스 고유 ID PID -> 프로세스의 고유 번호 프로세스 스케줄링 상태 생성(new), 준비(ready), 실행(running), 대기(waiting), 종료(terminated)를 저장 프로세스 우선순위 스케줄링 및 프로세스 우선 순위 계정 정보 CPU 사용 시간, 실제 사용된 시간 프로그램 카운터 프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터 ..

CS/OS 2023.10.15

프로세스(Process)와 스레드(Thread)

프로세스란? 컴퓨터에서 연속적으로 실행되고 있는 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스 내부에는 최소 하나의 스레드를 가지고 있고, 스레드 단위로 스케줄링한다. 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가는데 이 순간 부터 프로세스라고 부른다. 스레드란? 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스의 특정한 수행 경로 프로세스에서 할당 받은 자원을 이용하는 실행 흐름의 단위 스레드는 OS의 스케줄러에 의해 독립적으로 관리될 수 있는 프로그래밍된 명령어의 가장 작은 시퀀스, 하나의 프로세스는 하나 이상의 스레드를 갖는다. 스레드가 독립적으로..

CS/OS 2023.10.15

프로세스의 컴파일

프로세스 컴파일 과정 컴파일(Compile) 이란? 인간이 이해할 수 있는 언어로 작성된 "소스 코드"를 CPU가 이해할 수 있는 언어로 번역(변환)하는 작업을 의미한다. (컴퓨터는 0, 1로 이루어진 기계어만 이해할 수 있기 때문) 과정 전처리 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정 으로 4 가지 단계로 나누어진다. 전처리 (Pre-Processing) 과정 소스 코드 파일을 전처리된 소스 파일로 변환하는 과정 이 과정에서 아래 세 가지 작업 수행 1. 주석 제거 👉 소스 코드에서 주석을 전부 제거 (주석은 사람이 알아보기 위해 작성한 것이므로 컴퓨터한테는 필요없다.) 2. 헤더 파일 삽입 👉 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입한다. 헤더 파일에 선언된 ..

CS/OS 2023.10.15

홉 바이 홉 통신 (Hop by Hop)

IP 주소를 통해 통신하는 과정 여러 서브 네트워크 속에서 라우터에 있는 라우팅 테이블의 IP를 기반으로 패킷을 전달하고 또 전달핸가며 라우팅을 수행하며 최종 목적까지 패킷을 전달한다. 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적까지 도달하는 통신을 의미 한 단계씩 건너뛰는 것을 홈바이홉 라우팅이라고 부르고, 이 때 인접한 라우터 Next Hop이라 부른다. 넥스트 홉 지정 방식 다음 라우터의 IP를 지정하는 방법 (Next홉 IP 주소) 라우터에서 나가는 인터페이스 지정 라우터에서 나가는 인터페이스와 다름 라우터의 IP를 동시에 지정하는 방법 라우터 동작 호스트로부터 패킷을 수신 수신처 IP 주소로부터 수신처 네트..

CS/네트워크 2023.09.24

HTTP (Hyper Text Transfer Protocol)

서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 (애플리케이션 계층으로 웹 서비스 통신에 사용된다.) 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로 80 번 포트를 사용하고 있다. HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP 구조 HTTP는 애플리케이션 계층으로 TCP / IP 위에서 동작한다. 상태를 가지고 있지 않는 Stateless 프로토콜이며, Method, Path, Version, Headers, Body 등으로 구성된다. 💡 Stateless 상태를 가지지 않는 의미, HTTP로 클라이언트와 서버가 통신을 주고 받는 과정에서 HTTP가 클라이언트나 서버의 상태를 확인하지 않는다. HTTP / 1...

CS/네트워크 2023.09.22

L4 스위치와 L7 스위치

애플리케이션 계층을 처리하는 기기 스위치 컴퓨터 네트워크에서 데이터를 전송하고 연결하는 장비 OSI 모델의 2계층인 데이터 링크 계층에서 동작하며, 주로 이더넷(Ethernet) 네트워크에서 사용된다. 스위치는 여러 개의 네트워크 장치 (컴퓨터, 서버, 프린터 등)을 연결하고 이들 간에 데이터 패킷을 전송하며 데이터의 흐름을 제어한다. (주로 MAC 주소를 사용해 연결된 장치들을 식별하고 데이터를 전달한다.) 로드밸런서 (Load Balancer) 네트워크나 서버에 분산된 작업 부하를 공평하게 분배하는 장치 여러 대의 서버나 네트워크 장치에 들어오는 요청을 받아 해당 요청을 처리할 수 있는 서버로 전달하는 역할을 한다. 로드밸런서는 주로 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등과 같은 서버 그..

CS/네트워크 2023.09.22

선언형과 함수형 프로그래밍

'무엇을' 풀어내는가에 집중하는 패러다임이며, 프로그램은 함수로 이루어진 것이다. 라는 명제가 담긴 패러다임 💡 패러다임이란? 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할 선언형 프로그래밍이란? 명령형 프로그래밍은 어떻게 할지 표현하고, 선언형 프로그래밍은 무엇을 할 건지를 표현한다. 선언적 방식으로 접근하기 위해서는 명령형 방식으로 어떻게 접근하는가가 먼저 추상화되어야 한다. 선언적 접근 방식의 기저에는 명령형이 깔려있고 추상화 된 것이다. 함수형 프로그래밍이란? 작은 문제를 해결하기 위한 함수를 작성 부수 효과가 없는 순수 함수를 1급 객체로 간주하여 파라미터나 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다. 부수 효과 (Side Effect) 변수의 값이 변경됨..

CS/디자인 패턴 2023.09.11

MVVM 패턴

MVVM 패턴은 MVC 패턴에서 C인 Controller를 빼고 ViewModel을 추가한 패턴 (Model - View - ViewModel) Data Binding을 활용한 환경에서 데이터와 프레젠테이션 로직을 분리하기 위해서 만들어진 디자인 패턴이다. 💡 Command 와 DataBining 이란? Command: 여러 요소에 대한 처리를 하나의 액션으로 처리할 수 있게 하는 것 DataBinding: Model과 UI 요소 간의 싱크를 맞춰주는 것 View와 로직이 분리되어 있더라도 한 쪽이 바뀌면 다른 쪽도 업데이트가 이루어져 데이터의 일관성을 유지할 수 있다. View 사용자가 스크린을 통해서 보는 것들에 대한 구조, 레이아웃 형태를 정의 유저 인터랙션을 받는 역할로 인터랙션을 받을 시 Vie..

CS/디자인 패턴 2023.09.11

프록시 패턴과 프록시 서버

프록시 패턴 대상 객체(Subject)에 접근하기 전 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 Subject : Proxy와 RealSubject를 하나로 묶는 인터페이스(다형성) 대상 객체와 프록시 역할을 동일하게 하는 추상 메서드 action() 정의 RealSubject : 원본 대상 객체 Proxy : 대상 객체(RealSubject)를 중계할 대리자 역할 프록시는 대상 객체를 합성(Composition)한다. 프록시는 대상 객체와 같은 이름의 메서드를 호출하며, 별도의 로직을 수행할 수 있다. (인터페이스 구현 메서드) 프록시는 흐름제어만 할 뿐 결과값을 조작하거나 변경시키면 안된다. Client : Subject 인터페이스를 이용하여 프록시 객체를 생성해..

CS/네트워크 2023.09.11