[CS] 프로세스(Process)와 스레드(Thread)
·
Computer Science
프로세스(Process)와 스레드(Thread)프로세스(Process)정의: 운영체제에서 실행 중인 프로그램의 인스턴스를 뜻한다. 코드, 데이터, 시스템 자원(메모리 영역, 파일 디스크립터 등)을 포함하는 독립적인 실행 단위다.특징:독립된 메모리 공간을 가지므로, 서로 다른 프로세스 간 메모리 침범이 불가능해 안정성이 높다.문맥 전환(Context Switch) 시 커널이 레지스터, 메모리 맵 등 전체 상태를 저장하고 복원해야 하므로 오버헤드가 크다.프로세스 간 통신(IPC)이 필요할 때는 파이프, 소켓, 공유 메모리 등을 사용해야 하며, 구현이 비교적 복잡하다.스레드(Thread)정의: 프로세스 내에서 작업 흐름의 단위를 의미하며, 같은 프로세스 자원을 공유하는 실행 단위다.특징:메모리 공간(코드, 데..
[CS] 캐시 메모리(Cache Memory)
·
Computer Science
서론컴퓨터 시스템의 성능을 높이기 위해 다양한 방법이 연구되고 있으며, 그중 하나는 메모리 계층 구조를 효율적으로 구성하는 것이다. 특히 CPU와 메인 메모리 사이의 속도 차이를 완화하는 데 중요한 역할을 하는 구성 요소가 바로 캐시 메모리(Cache Memory)다. 캐시 메모리는 자주 사용하는 데이터를 빠르게 접근할 수 있도록 도와 전체 시스템의 처리 속도를 크게 향상시킨다. 그러나 캐시에 원하는 데이터가 없을 때 발생하는 캐시 미스(Cache Miss)는 오히려 성능 저하로 이어질 수 있다. 이 글에서는 캐시 메모리의 역할과 구조를 이해하고, 캐시 미스가 시스템 성능에 미치는 영향을 살펴보자.캐시 메모리캐시 메모리(SRAM)는 집적도가 낮아 많은 데이터를 담을 수는 없지만(수 MB 단위), 속도가 ..
[C++] 백준/Gold/4179. 불!
·
C++/Algorithm
불 ! (백준 4179번)문제 개요문제 설명:미로에서 지훈이(J)가 불(F)로부터 탈출하는 최소 시간을 구하는 문제미로는 벽(#), 빈 공간(.), 불(F), 지훈이(J)로 구성됨불은 매 초마다 상하좌우 인접한 빈 공간으로 확산매 초마다 상하좌우로 한 칸 이동 가능하며, 벽이나 불이 있는 곳으로 이동 불가미로 밖으로 나가면 탈출 성공탈출이 불가능하면 "IMPOSSIBLE" 출력핵심 포인트:불의 확산과 J의 이동을 시간 단위로 동기화하며 시뮬레이션 해야 함BFS를 이용하여 J의 이동과 불의 확산을 순차적으로 처리접근 방법1. 불 확산과 지훈이 이동을 동시에 처리하는 BFS불의 현재 위치를 set에 저장해 매 시간마다 인접한 빈 공간으로 확산J의 위치를 queue에 저장해 BFS 탐색 진행J의 이동 시간이 ..
[C++] 백준/Gold/15685. 드래곤 커브
·
C++/Algorithm
드래곤 커브 (백준 15685번)문제 요약격자 위에 여러 드래곤 커브를 그린 뒤, 정사각형 네 꼭짓점이 모두 드래곤 커브에 포함되는 개수를 구하는 문제이다.1. 문제 분석드래곤 커브 정의세대 $g=0$인 드래곤 커브는 시작점 $(x,y)$에서 방향 $d$로 한 칸 이동한 두 점을 잇는 선분이다.세대가 한 번 증가할 때마다, 기존 커브의 “끝점”을 기준으로 90도 시계 회전시킨 복제 선분을 뒤에 이어 붙여 커브를 확장한다.목표주어진 $n$개의 드래곤 커브를 모두 그린 뒤,격자 $(i,j),(i+1,j),(i,j+1),(i+1,j+1)$ 네 점이 모두 드래곤 커브 상에 표시된 칸(점)인 정사각형의 개수를 세어 출력.2. 핵심 아이디어드래곤 커브 생성 (세대별)기본 세대$(g=0)$: 두 점 $(x,y)), ..
[C++] 백준/Gold/11066. 파일 합치기
·
C++/Algorithm
파일 합치기 (백준 11066번)문제 개요여러 파일을 하나의 파일로 합칠 때, 두 파일을 합치는 비용은 두 파일의 크기의 합이다.여러 개의 파일을 주어진 순서대로 합칠 때,전체 합치는 비용을 최소화하는 합치는 순서를 찾는 문제이다.접근 방법: 동적 계획법 (DP)문제는 구간 DP 문제의 대표적인 예제로,파일 $ A_i $의 크기를 배열 $ \text{arr}[i] $로 두면,구간 $[i, j]$에 있는 파일들을 합치는 최소 비용 $ dp[i][j] $는 다음 점화식으로 구할 수 있다.1. 누적 합 (Prefix Sum)연속된 파일 크기의 합을 빠르게 계산하기 위해,누적 합 배열 $ \text{subtotal} $을 사용한다.$$\text{subtotal}[k] = \sum_{l=0}^{k-1} \text..
[C++] 백준/Gold/10986. 나머지 합
·
C++/Algorithm
나머지 합 (백준 10986번)문제 개요문제 설명:길이가 $ n $인 수열이 주어지고, 정수 $ m $ 이 주어진다.수열의 연속 부분 수열의 합이 $ m $ 으로 나누어 떨어지는 경우의 수를 구하는 문제다.핵심 포인트:직접 모든 구간의 합을 구하면 시간 복잡도가 $ O(n^2) $ 가 되어 시간 초과 가능성이 높다.누적 합(presum)과 나머지 연산을 활용하면 효율적으로 $ O(n) $ 내에 해결할 수 있다.접근 방법1. 누적 합과 나머지 활용누적 합 정의:$  S_i = \text{v[0]} + \text{v[1]} + \dots + \text{v[i]} $ 그러면 구간 $ [i, j] $ 의 합은 $ S_j - S_{i-1} $ 이다.나머지 이용:구간 합이 $ m $ 으로 나누어 떨어진다는 것은$$..
[C++] 백준/Silver/1024. 수열의 합
·
C++/Algorithm
수열의 합 (백준 1024번)문제 개요문제 설명:주어진 자연수 N 과 최소 길이  L이 있을 때, 연속된 자연수들의 합이  N이 되는 수열을 찾는 문제다.조건:수열의 길이는 최소  L이상이어야 하며, 길이가 100을 초과할 수 없다.수열에 포함된 수는 음수가 될 수 없다.만약 조건을 만족하는 수열을 찾지 못하면 "-1"을 출력한다.접근 방법문제를 효율적으로 해결하기 위해 수학적 접근법을 사용한다.연속된 $\text{len}$개의 자연수의 합을 수식으로 표현하면 다음과 같다.1. 연속된 수열의 합 공식연속된 $\text{len} $개의 정수 $ x, x+1, x+2, \dots, x+\text{len}-1 $의 합은:$$\text{Sum} = \text{len} \times x + \frac{\text{l..
[C++] 백준/Silver/15549. if
·
C++/Algorithm
문제: if (백준 15549번)문제 개요문제는 주관식으로, 자바 코드 내에서 아래 조건을 만족하는 변수 x의 타입과 값을 찾는 것이다.if (x != 0 && x == -x) { System.out.println("true");} else { System.out.println("false");}조건 분석조건을 만족하려면,x는 0이 아니어야 한다.x와 -x가 같아야 한다.일반적인 수학에서는 (x = -x)이면 (x)가 0이 되어야 하지만, 여기서는 0이 될 수 없으므로 특별한 상황(오버플로우)를 고려해야 한다.두의 보수와 오버플로우자바의 정수형(int)은 두의 보수(Two's Complement) 방식으로 표현된다.int의 범위: (-2^{31}) ~ (2^{31}-1) 즉, (-2147483..
[C++] 백준/Gold/1011. Fly me to the Alpha Centauri
·
C++/Algorithm
Fly me to the Alpha Centauri (백준 1011번)문제 개요문제 설명:우주선이 $x$에서 $y$까지 이동할 때, 이동 거리에 따른 일정한 규칙을 따르는 “점프”를 사용한다.문제는 주어진 시작점 $x$와 도착점 $y$ 사이의 거리를 이동하기 위한 최소 점프 횟수를 구하는 것이다.이동 규칙 요약:첫 번째 점프는 무조건 1광년, 그 이후 점프 거리는 이전 점프 거리와 같거나 1 증가/감소할 수 있다.마지막 점프도 무조건 1광년이다.이러한 규칙을 종합하면, 거리를 이동하기 위한 점프 횟수는 일정한 패턴을 따르게 되며,(예: 거리 1→ 1회, 2→ 2회, 3→ 3회, 4→ 3회, 5,6→ 4회, 7,8→ 5회, 9→ 5회, …)접근 방법수학적 아이디어:기존의 정답 공식은 다음과 같다.$n = ..
1. [Unreal 5] Epic Online Service - 초기 설정
·
Unreal 5/EOS
Epic Online Service?언리얼 엔진에서 멀티플레이를 구현하는 방법으로 데디케이티드 서버(Dedicated Server), 리슨 서버(Listen Server) 등의 방식이 있지만, 실제로 이를 불특정 다수의 플레이어가 접속할 수 있도록 만들려면 NAT 우회, 포트 포워딩 등의 네트워크 설정이 필요하다. 이는 우리가 일반적으로 접하는 상용 멀티플레이 게임과는 차이가 있다.EOS 소개 영상규모가 큰 멀티플레이 게임은 자체 전용 서버를 구축하거나 하이브리드 방식(P2P + 매치메이킹 서버 활용)을 사용하지만, 인디 게임이나 규모가 작은 멀티플레이 게임의 경우 언리얼 엔진 개발사인 Epic Games에서 제공하는 EOS(Epic Online Services)를 활용할 수 있다.EOS는 로그인, 클라..