분류 전체보기(638)
-
운영체제 락 개념과 동기화 기법 (2. 기본 락(Lock) / 2-2. 재진입 가능 락(Reentrant Lock, RLock))
📖 2-2. 재진입 가능 락(Reentrant Lock, RLock)재진입 가능 락(Reentrant Lock, RLock) 은 같은 스레드가 여러 번 Lock을 획득할 수 있도록 허용하는 락입니다.일반적인 Mutex는 한 번만 Lock을 획득할 수 있으며, 같은 스레드가 다시 Lock을 시도하면 데드락(Deadlock) 이 발생합니다.하지만, RLock을 사용하면 동일한 스레드가 여러 번 Lock을 획득해도 데드락 없이 정상적으로 실행됩니다.✅ 재진입 가능 락이란?🔹 기본 개념같은 스레드가 여러 번 Lock을 획득할 수 있도록 허용하는 락.락을 획득한 횟수만큼 Unlock을 호출해야 해제됨.PTHREAD_MUTEX_RECURSIVE 속성을 설정하여 사용할 수 있음.🔹 일반 Mutex와 RLock ..
2025.02.26 -
운영체제 락 개념과 동기화 기법 (2. 기본 락(Lock) / 2-1. 뮤텍스(Mutex))
📖 2-1. 뮤텍스(Mutex)뮤텍스(Mutex, Mutual Exclusion)는 여러 개의 스레드가 동시에 공유 자원에 접근하는 것을 방지하는 동기화 기법입니다.운영체제(OS) 내부에서 지원하는 기본적인 동기화 기법으로, 한 번에 하나의 스레드만 자원에 접근할 수 있도록 보장합니다.✅ 뮤텍스란?🔹 뮤텍스의 개념Mutex는 상호 배제(Mutual Exclusion) 를 의미하며, 한 번에 오직 하나의 스레드만 공유 자원(임계 영역)에 접근할 수 있도록 보장합니다.스레드가 Mutex를 획득(lock)하면, 다른 스레드는 Mutex가 해제(unlock)될 때까지 대기 상태에 머뭅니다.pthread_mutex_t를 사용하여 구현되며, 운영체제가 직접 제공하는 동기화 도구 중 하나입니다.🔹 뮤텍스의 특징..
2025.02.26 -
운영체제 락 개념과 동기화 기법 (1. 운영체제에서 동기화 / 1-2. 임계 영역(Critical Section)과 해결 방법)
📖 1-2. 임계 영역(Critical Section)과 해결 방법멀티스레딩 환경에서 여러 개의 스레드가 동시에 실행될 때 공유 자원(Shared Resource)에 동시에 접근하면 데이터 손상(Data Corruption) 또는 예상치 못한 동작이 발생할 수 있습니다.이러한 문제가 발생하는 코드 영역을 임계 영역(Critical Section) 이라고 하며, 이를 해결하기 위해 동기화 기법(Synchronization Techniques) 이 필요합니다.✅ 임계 영역(Critical Section)이란?🔹 정의임계 영역(Critical Section)이란 여러 개의 스레드가 동시에 실행될 경우, 충돌이나 오류가 발생할 가능성이 있는 코드 영역을 의미합니다.예제: 임계 영역이 필요한 상황데이터베이스 ..
2025.02.26 -
운영체제 락 개념과 동기화 기법 (1. 운영체제에서 동기화 / 1-1. 동기화(Synchronization)란?)
📖 1-1. 동기화(Synchronization)란?운영체제(OS)에서 동기화(Synchronization) 는 여러 개의 프로세스 또는 스레드가 공유 자원(Shared Resource)에 안전하게 접근할 수 있도록 하는 기법입니다.멀티태스킹 환경에서 경쟁 상태(Race Condition)와 데이터 무결성(Data Integrity) 문제를 해결하기 위해 필수적입니다.✅ 운영체제(OS)에서 동기화란?운영체제는 멀티태스킹(Multitasking) 기능을 지원하며, 여러 개의 프로세스 또는 스레드가 동시에 실행될 수 있는 환경을 제공합니다.하지만, 이때 여러 스레드가 동일한 자원(변수, 파일, 메모리 등)에 접근할 경우 문제가 발생할 수 있습니다.이를 방지하고 안전한 데이터 처리를 보장하기 위해 동기화(S..
2025.02.26 -
C++ STL: 4장 - STL 알고리즘
4.1 알고리즘의 기본 개념STL의 알고리즘(Algorithm)은 컨테이너의 데이터를 효율적으로 처리하기 위한 함수 템플릿 모음입니다. 데이터의 검색, 정렬, 변환 등 다양한 작업을 수행할 수 있으며, 이터레이터(iterator)를 통해 모든 종류의 컨테이너와 함께 사용할 수 있습니다.알고리즘의 주요 특징컨테이너 독립적 설계템플릿 기반의 제네릭 프로그래밍최적화된 성능 (O(1), O(log n), O(n), O(n log n) 등 다양한 시간 복잡도)4.2 알고리즘의 종류4.2.1 검색 알고리즘데이터를 찾고 검색하는 알고리즘입니다.#include #include #include int main() { std::vector numbers = {1, 2, 3, 4, 5}; // find: 값 찾기..
2025.02.25 -
GPIO 프로그래밍 개요 - 4. GPIO 핀 모드 설정 (INPUT, OUTPUT)
4. GPIO 핀 모드 설정 (INPUT, OUTPUT)GPIO 핀은 입력(Input) 모드 또는 출력(Output) 모드로 설정할 수 있으며, 이 설정에 따라 동작 방식이 달라진다.입력 모드는 센서나 버튼 등 외부 장치의 상태를 읽을 때 사용되며, 출력 모드는 LED, 모터 등의 장치를 제어할 때 사용된다.또한, 버튼 입력의 신뢰성을 높이기 위해 풀업 저항(Pull-up Resistor)과 풀다운 저항(Pull-down Resistor)을 설정할 수 있다.📌 1. 입력 모드 (Input Mode)입력 모드는 GPIO가 센서, 버튼 등의 신호를 읽을 때 사용되는 모드이다.이를 설정하면 GPIO 핀이 HIGH(1) 또는 LOW(0) 값을 읽을 수 있게 된다.✔ 입력 모드의 특징✅ 외부 신호(센서, 버튼 ..
2025.02.25