OS 기술 면접 대비
·
Computer Science/Operating System
프로세스와 스레드의 차이프로세스는 실행중인 프로그램을 말한다. 메모리 영역을 다른 프로세스와 공유하지 않습니다.스레드는 프로세스 내에서 Stack만 따로 할당 받아 사용한다. 그 외의 메모리 영역을 다른 스레드와 공유합니다.스레드는 프로세스 내에 존재하며, 프로세스가 할당받은 자원을 이용합니다.멀티 프로세스와 멀티 스레드의 특징멀티 프로세스는 두 개 이상의 프로세스가 실행되는 환경을 말합니다.각 프로세스는 독립적인 메모리를 할당 받으므로, 서로 영향을 미치지 않습니다.멀티 스레드는 두 개 이상의 스레드가 실행되는 환경을 말합니다.멀티 스레드는 서로 자원을 공유할 수 있기 때문에 동기화에 주의를 기울여야 합니다.한 스레드에 문제가 생기면 다른 프로세스에도 영향을 미칠 수 있습니다.멀티 스레드의 동시성과 병..
URI와 웹 브라우저 요청 흐름
·
Computer Science/Network
URI(Uniform Resource Identifier)URI란?URI란 인터넷에서 자원을 식별하기 위한 문자열을 의미한다.웹 상의 특정 자원(파일, 페이지, API 등)을 식별하거나 위치를 지정하는 방식이다.URI는 URL과 URN을 포함한다.URL: 리소스가 있는 위치(Locator)를 지정URN: 리소스에 이름(Name)을 부여  URI 구성 요소 schema://[userinfo@]host[:port][/path][?query][#fragment]  https://www.google.com:443/search?q=hello&hl=ko  - schema주로 프로토콜을 정의. 어떤 방식으로 자원에 접근할 것인가 - userinfoURL에 사용자 정보를 포함해서 인증해야될 때 사용. (거의 사용 안함..
포트(PORT)와 DNS
·
Computer Science/Network
PORT 클라이언트에서 게임도 하고 화상통화도 하고 웹 브라우저도 사용하고 있다면 여러개의 서버랑 통신해야한다.클라이언트 IP에서 온 패킷이 게임/화상통화/웹 브라우저 중 어디에서 온 패킷인지 구별하려면?  PORT는 프로그램(컴퓨터 네트워크 프로세스) 간 통신을 구분하기 위한 논리적 번호이다.IP 주소와 함께 사용되고, 하나의 장치에서 여러 어플리케이션이 동시에 작동할 수 있도록 돕는다. 즉, IP는 목적지 서버를 찾는 용도이고, 서버 안에서 돌아가는 애플리케이션을 구분하는게 PORT이다.  DNS(Domain Name System)DNS란 도메인 이름을 IP 주소로 변환해주는 시스템이다.예: `www.google.com` → `200.200.200.2` 도메인을 사용하는 이유는?- 사람들이 IP주소(..
TCP/UDP
·
Computer Science/Network
TCP / UDP란?TCP/UDP는 OSI 7 계층 모델의 전송계층에서 동작하는 프로토콜.IP와 함께 사용되어 데이터를 송수신한다.둘의 주된 차이는 데이터 전송 방식과 신뢰성이다.  TCP(전송 제어 프로토콜, Transmission Control Protocol)의 특징1. 연결지향 : 3 way HandsahkeTCP의 논리적 연결 과정을 말한다. * SYN : 접속 요청 / ACK : 요청 수락(ACK와 함께 데이터 전송 가능)1. 클라이언트가 서버에게 접속을 요청함.2. 서버가 클라이언트의 요청을 수락하고, 클라이언트에게 접속을 요청함.3. 클라이언트가 서버의 요청을 수락함.  2. 신뢰성 : 순서 보장먼저, TCP 프로토콜을 이용한 메시지 전달 과정을 살펴보자.1. HTTP: 프로그램이 메시지 ..
IP(인터넷 프로토콜)
·
Computer Science/Network
IP(인터넷 프로토콜, Internet Protocol) 란?IP는 인터넷에서 데이터를 송수신하기 위한 기본 프로토콜.네트워크 상의 장치들이 서로 데이터를 교환할 수 있도록 규칙과 구조를 정의한다.OSI 7 계층 모델의 네트워크 계층에 속한다. 역할지정된 IP 주소로 데이터를 전달.패킷 단위로 데이터를 전달.네트워크 계층에서 host의 주소 지정과 패킷 분할/조립을 담당. 패킷 전달 과정1. 패킷 구성하기출발지 IP와 목적지 IP, 전송 데이터 등을 담은 패킷을 구성한다.이는 IP 프로토콜에 의해 서버들이 규약을 따르고 있다. 2. 클라이언트 패킷 전달패킷을 통해 인터넷 망에서 노드들이 출발지/목적지를 확인하고 목적지 IP(200.200.200.2)까지 전달한다. 3. 서버 패킷 전달서버도 마찬가지로 새..
깊이우선탐색(DFS;Depth-First Search)
·
Computer Science/Algorithm
DFS 란?깊이우선탐색(DFS;Depth-First Search) 알고리즘은 그래프나 트리구조에서 깊이를 우선으로 탐색하는 알고리즘이다.즉 한 경로를 끝까지 다 탐색한 후에 다음 경로로 넘어가 탐색을 이어간다.주로 스택(Stack)이나 재귀함수를 사용하여 구현하고, 더이상 탐색할 노드가 없으면 이전 분기점으로 돌아간다(=백트래킹).  DFS의 동작 방식0. 탐색이 필요한 노드를 저장할 스택과 방문 처리를 위한 visited 변수가 필요하다.1. 시작노드를 스택에 넣는다2. 스택이 비어있지 않다면 아래 내용을 반복한다.스택 최상단 노드를 현재 노드로 지정한다.현재 노드에 인접한 미방문 노드가 있으면 그 노드를 스택에 넣고 방문처리한다.인접한 미방문 노드가 없으면 스택에서 노드를 꺼낸다.   BFS 구현 ..
너비우선탐색(BFS;Breadth-First Search)
·
Computer Science/Algorithm
BFS 란?너비우선탐색(BFS;Breadth-First Search) 알고리즘은 그래프에서 시작 노드에 인접한 노드부터 탐색하는 알고리즘이다.주로 선입선출 방식은 큐(Queue) 자료구조를 활용하여 구현된다.모든 간선의 비용이 동일한 조건에서 최단거리를 구하는 문제에 효과적이다.  BFS의 동작 방식0. 다음 방문 노드를 저장할 큐와 방문 처리를 위한 visited 변수가 필요하다.1. 시작 노드를 큐에 삽입하고 방문 처리 한다.2. 큐가 비어있지 않다면(= 다음 방문 노드가 남아 있다면) 아래 내용을 반복한다.큐의 첫 번째 노드를 꺼내어 현재 노드로 설정.현재 노드 방문 처리.인접 노드를 확인하고, 인접 노드가 아직 방문 되지 않았다면 큐에 삽입.   BFS 구현 예제[백준/Silver II] 알고리즘..
최장 공통 부분 수열 (LCS; Longest common subsequence problem) - DP 해결법
·
Computer Science/Algorithm
최장 공통 부분 수열 (LCS; Longest common subsequence problem)부분 수열(subsequence)은 시퀀스의 원소를 순서를 유지한 채 몇 개를 골라낸 것을 말한다.최장 공통 부분 수열은 두 시퀀스(문자열 또는 배열)간 공통된 부분 수열 중 가장 긴 것을 찾아내는 문제이다. 예시) 문자열 `ABCBDAB`와 `BDCABA`의 LCS는 `BCBA`이다. 보통 LCS 문제를 해결하기 위해 주로 동적 계획법(DP;Dynamic Programming)을 사용한다.이 글에서도 DP를 이용한 LCS 알고리즘을 설명하고자 한다.  LCS 길이 구하기동작 원리동적 계획법은 문제를 작은 부분 문제로 나누고 그 해를 이용해서 전체 문제를 해결하는 방식이다.때문에 문제 정의와 점화식, 초기 조건..
벨만-포드 알고리즘(Bellman-Ford Algorithm)
·
Computer Science/Algorithm
벨만-포드 알고리즘이란?벨만-포드 알고리즘(Bellman-Ford Algorithm)은 그래프에서 한 정점에서 다른 모든 정점까지의 최단 경로/최소 비용를 찾는 알고리즘이다.다익스트라 알고리즘과 차별되는 점은 음수 가중치를 처리할 수 있다는 점과 음수 사이클을 탐지할 수 있다는 점이다.때문에, 음수 가중치가 포함된 그래프에서 유용하게 사용된다. 동작 원리벨만-포드 알고리즘은 크게 세가지의 과정을 거친다.1. 초기화시작 정점에서 다른 모든 정점까지의 거리를 무한대로 설정한다.시작 정점의 거리를 0으로 설정한다. 2. 간선 반복모든 간선에 대해 그 간선을 따라 가는 거리가 기존에 기록된 거리보다 짧으면, 해당 거리를 업데이트 한다.이 과정을 그래프에 있는 `정점의 수 - 1`번 반복한다.왜냐하면, 최단 ..