사용자 수준 스레드와 커널 수준 스레드에 관하여
·
OS
사용자 수준 스레드와 커널 수준 스레드는 운영체제에서 스레드를 관리하는 두 가지 방식으로, 각각의 관리 방법과 장단점에 따라 적절한 활용 사례가 다릅니다.1. 사용자 수준 스레드(User-Level Threads)사용자 수준 스레드는 커널의 개입 없이 사용자가 작성한 스레드 라이브러리에 의해 관리됩니다.특징커널이 스레드를 인지하지 못함스레드의 생성, 관리, 스케줄링을 사용자 프로그램이 직접 수행빠른 스레드 전환 속도장점커널 호출 없이 빠른 컨텍스트 스위칭(context switching)운영체제 독립적이며 이식성이 높음효율적인 자원 관리 가능단점다중 프로세서를 활용할 수 없음한 스레드가 블록되면 전체 프로세스가 블록될 수 있음2. 커널 수준 스레드(Kernel-Level Threads)커널 수준 스레드는..
뮤텍스와 세마포어에 관하여
·
카테고리 없음
뮤텍스 (Mutex) 와 세마포어 (Semaphore) 는 멀티스레딩 및 병렬 프로그래밍에서 사용되는 동기화 도구로, 자원 접근 시 발생할 수 있는 경쟁 상태(race condition)를 방지하는 데 사용됩니다.1. 뮤텍스(Mutex)란?뮤텍스(Mutual Exclusion)는 상호 배제를 뜻하는 동기화 도구로, 한번에 단 하나의 스레드만 공유 자원에 접근할 수 있도록 보장합니다.바이너리 락(Binary lock)의 형태를 가짐.락을 소유한 스레드만 해제 가능.주로 임계 구역(Critical Section) 보호에 사용됨.2. 세마포어(Semaphore)란?세마포어는 카운팅 기반의 동기화 도구로, 특정 개수의 스레드가 자원에 접근할 수 있도록 허용하는 방식입니다.자원의 허용 개수를 지정하여 관리.허용 ..
MST 에 관하여
·
algorithm
최소 신장 트리(MST, Minimum Spanning Tree)는 그래프 내의 모든 정점을 연결하는 최소 비용의 간선 집합으로 이루어진 트리를 의미합니다. 즉, 그래프의 모든 노드를 최소 비용으로 연결하는 것입니다.1. MST의 특징모든 정점이 연결되어 있어야 합니다.사이클을 포함해서는 안 됩니다.최소한의 비용으로 구성됩니다.2. MST 알고리즘 종류최소 신장 트리를 구하는 대표적인 알고리즘은 다음과 같습니다.2-1. 크루스칼(Kruskal) 알고리즘시간 복잡도: O(ElogE)간선의 비용을 기준으로 오름차순으로 정렬한 후, 사이클을 형성하지 않도록 최소 비용 간선을 순차적으로 선택합니다.2-2. 프림(Prim) 알고리즘시간 복잡도: O(ElogV)시작 정점에서부터 시작하여 연결된 정점들 중 최소 비용..
LCA 에 관하여
·
algorithm
최소 공통 조상(LCA, Lowest Common Ancestor) 이란 트리에서 두 노드의 가장 가까운 공통 조상을 의미합니다. 이는 트리 구조에서 두 노드 간의 관계를 파악하거나 최단 거리 등을 찾을 때 유용하게 사용됩니다.1. 최소 공통 조상의 필요성트리에서 두 노드 간의 관계 파악효율적인 최단 경로 탐색2. LCA 알고리즘의 종류LCA를 구현하는 대표적인 방법은 다음과 같습니다.1. 단순 탐색시간 복잡도: O(N)가장 간단한 방법으로, 루트에서부터 탐색하여 두 노드의 공통 조상을 찾습니다.2. 이진 트리에서의 재귀적 탐색시간 복잡도: O(N)트리를 한 번 순회하면서 두 노드의 공통 조상을 찾습니다.3. Sparse Table (희소 테이블)시간 복잡도: 전처리 O(NlogN), 쿼리 O(logN)..
세그먼트 트리에 관하여
·
algorithm
세그먼트 트리는 구간 쿼리를 효율적으로 처리하기 위한 트리 형태의 자료구조로, 배열 내 특정 범위의 합, 최소값, 최대값 등의 연산을 빠르게 수행할 수 있습니다. 1. 세그먼트 트리의 구조세그먼트 트리는 배열을 구간 단위로 나누어 트리 형태로 표현합니다. 트리의 각 노드는 배열의 특정 구간을 나타내며, 노드의 값은 해당 구간의 연산(합, 최소값 등) 결과를 저장합니다.장점: 구간 연산을 효율적으로 수행 가능단점: 메모리 사용량이 높음2. 세그먼트 트리의 동작 원리세그먼트 트리는 크게 다음 두 가지 연산을 지원합니다.구간 질의(Query)특정 구간에 대한 합, 최소값, 최대값 등의 값을 빠르게 얻을 수 있습니다.값 갱신(Update)특정 위치의 값을 변경하면 연관된 모든 노드의 값을 갱신합니다.3. 시간 ..
트라이(Trie) 알고리즘에 관하여
·
algorithm
트라이는 문자열을 효율적으로 저장하고 탐색하기 위한 트리 자료구조로, 특히 접두사를 공유하는 문자열 집합에서 강력한 성능을 발휘합니다. 1. 트라이의 개념과 구조트라이(Trie)는 트리 형태의 자료구조로, 문자열의 각 문자를 노드로 저장하여 문자열을 효율적으로 탐색할 수 있도록 구성됩니다. 트라이의 각 노드는 문자의 존재 여부를 나타내며 자식 노드를 통해 문자열이 이어집니다.장점: 빠른 문자열 탐색, 자동완성 기능 지원단점: 공간 복잡도가 상대적으로 높음2. 트라이 알고리즘의 동작 원리트라이 알고리즘은 크게 세 가지 연산으로 이루어집니다.문자열 삽입 (insert)문자열을 노드 단위로 삽입하며, 마지막 문자 노드에 문자열의 끝을 표시합니다.문자열 검색 (search)트리를 순회하며 문자열이 존재하는지 확..
이분 탐색 + 휴리스틱 기법에 관하여
·
algorithm
이분 탐색(Binary Search) 은 정렬된 데이터에서 빠르게 원하는 값을 찾는 알고리즘입니다. 하지만 이분 탐색만으로는 실전 문제 해결에서 최적의 성능을 내기 어려운 경우가 많습니다. 이럴 때, 추가적인 휴리스틱(Heuristic) 기법을 적용하면 탐색 속도를 높이고 효율적으로 문제를 해결할 수 있습니다. 1. 이분 탐색(Binary Search) 개요이분 탐색은 데이터가 정렬되어 있을 때, 탐색 범위를 절반씩 줄여가며 원하는 값을 찾는 방법입니다. 일반적으로 시간 복잡도는 O(logN) 이며, 빠른 탐색이 가능합니다.2. 휴리스틱 기법이란?휴리스틱(Heuristic)은 완전한 최적해를 찾는 것이 아니라, 근사적인 최적해를 빠르게 찾는 방법입니다. 이는 문제의 특성을 이용하여 탐색 범위를 줄이거나,..
랜덤 액세스 링크드 리스트에 관하여
·
algorithm
랜덤 액세스 링크드 리스트(Random Access Linked List)는 기존의 연결 리스트(Linked List)의 단점인 느린 인덱스 접근(Random Access 불가능) 을 보완하기 위해 설계된 자료구조입니다.일반적인 연결 리스트는 특정 인덱스에 접근하기 위해 O(n) 시간이 소요되는 반면, 랜덤 액세스 링크드 리스트는 O(log n) 혹은 O(1) 수준의 빠른 접근이 가능하도록 최적화된 구조를 가집니다.1. 기존 연결 리스트의 문제점일반적인 단일/이중 연결 리스트는 연속적인 메모리 공간이 아니라, 노드들이 포인터를 통해 연결된 형태이기 때문에 특정 위치의 데이터를 찾기 위해 항상 순차 탐색(Sequential Access) 해야 합니다.배열(Array)의 경우 O(1) 시간 복잡도로 즉시 원..
OS 에 관하여
·
OS
운영체제(OS, Operating System)는 컴퓨터 하드웨어와 소프트웨어를 관리하고, 사용자와 컴퓨터 간의 인터페이스를 제공하는 중요한 시스템 소프트웨어입니다. 이 글에서는 운영체제의 정의, 필요성, 역할 및 구조를 살펴보겠습니다.1. 운영체제 소개운영체제는 컴퓨터 시스템을 효율적으로 관리하고, 응용 프로그램이 하드웨어를 원활하게 사용할 수 있도록 지원하는 핵심 소프트웨어입니다. 대표적인 운영체제로는 Windows, macOS, Linux, Android, iOS 등이 있습니다.  컴퓨터 시스템의 자원을 관리하고, 사용자와 응용 프로그램이 하드웨어를 효율적으로 사용할 수 있도록 지원하는 시스템 소프트웨어입니다. 운영체제는 다양한 하드웨어 구성 요소를 제어하고, 사용자와의 상호작용을 담당합니다.2. ..
Sharding 에 관하여
·
database
데이터베이스 샤딩(Sharding)은 대량의 데이터를 보다 효율적으로 관리하고, 성능을 향상시키기 위해 데이터를 여러 개의 작은 데이터베이스(Shard)로 나누어 저장하는 기법입니다. 대규모 시스템에서 확장성을 높이고, 데이터 처리 속도를 개선하기 위한 핵심적인 전략 중 하나입니다.1. 데이터베이스 샤딩이란?샤딩(Sharding)은 하나의 데이터베이스를 여러 개의 작은 데이터베이스(샤드)로 분할하는 기술입니다. 이는 단일 데이터베이스의 성능 한계를 극복하고, 트래픽이 증가하는 환경에서 **수평적 확장(Scale-Out)**을 가능하게 합니다.1.1 샤딩의 필요성대량의 데이터 처리: 데이터 양이 급증하는 경우 단일 데이터베이스로 감당하기 어려움.성능 향상: 쿼리 처리 속도를 개선하고 병목현상을 방지.부하 ..