Computer Science
-
라이브락(Livelock)이란?Computer Science/OS 2024. 4. 4. 21:59
1. 라이브락이란? 라이브락은 프로세스가 '진행 중' 상태이지만 실제로는 어떠한 유용한 작업도 수행하지 않는 상태를 말합니다. 이는 프로세스가 상호작용하는 방식 때문에 발생하며, 특정 조건을 만족시키기 위해 반복적으로 상태를 변경하지만, 결국은 원하는 결과를 달성하지 못하는 경우에 발생합니다. 데드락과 달리, 라이브락 상태의 프로세스는 실행 중인 상태를 유지하지만, 유용한 일을 하지 못합니다. 2. 라이브락 예시코드 구현에 앞서 라이브락을 명확히 보여주는 코드 예시는 데드락보다 구현하기 어렵습니다. 라이브락의 상황을 설명하기 위해, 두 개의 스레드(또는 고루틴)가 서로의 상태 변경을 지속적으로 감지하고, 그에 따라 자신의 상태를 변경하는 예를 들 수 있습니다. 이 과정에서 양쪽 모두 진행을 멈추지 않고 ..
-
데드락(Deadlock)이란?Computer Science/OS 2024. 4. 3. 23:09
1. 데드락이란? 데드락이란, 두 개 이상의 프로세스나 스레드가 서로 상대방이 점유한 자원의 해제를 무한히 기다리게 되어, 아무런 진행도 할 수 없는 상태를 말합니다. 이러한 상태가 발생하면, 해당 프로세스들은 영원히 진행되지 못하고 멈춰 있는 상태가 됩니다. 2. 데드락 예시코드 Java: public class DeadlockExample { private static final Object lock1 = new Object(); private static final Object lock2 = new Object(); public static void main(String[] args) { Thread thread1 = new Thread(() -> { synchronized (lock1) { Sys..
-
스레드 세이프(Thred Safe)란?Computer Science/OS 2024. 3. 30. 14:35
스레드 세이프(Thread-Safe)란 멀티스레딩 환경에서 여러 스레드가 동시에 같은 코드 영역에 접근하거나 데이터를 공유할 때, 올바른 실행 결과를 보장하는 코드의 속성을 의미합니다. 즉, 코드가 여러 스레드로부터 동시에 호출되더라도 각 스레드의 실행 경로가 서로를 방해하지 않도록 안전하게 설계되어 있다는 것입니다. 이는 데이터 무결성과 일관성을 유지하는 데 필수적인 조건입니다. 스레드 세이프를 보장하기 위한 전략은 여러 가지가 있습니다. 가장 흔한 전략은 상호 배제(mutual exclusion), 동기화(synchronization) 기법을 사용하는 것입니다. 이 외에도 불변성(immutability), 스레드 로컬 저장소(thread-local storage), 원자적(atomic) 연산 등을 활..