스레드 7

데드락(Deadlock, 교착상태)이란?

데드락(Deadlock)이란?**데드락(Deadlock)**은 둘 이상의 프로세스(또는 스레드)가 서로가 소유한 자원을 기다리며 무한 대기 상태에 빠지는 현상을 의미합니다. 이 상태에서는 어떤 작업도 더 이상 진행되지 않으며, 외부 개입 없이는 복구가 불가능합니다.즉,"A 프로세스는 B의 자원을 기다리고 있고, B는 A의 자원을 기다리는 경우"→ 서로 영원히 기다리게 되는 현상 = 데드락데드락 예시(Java)public class DeadlockExample { private static final Object LockA = new Object(); private static final Object LockB = new Object(); public static void main(Stri..

CS 2025.05.23

멀티태스킹, 멀티프로세싱, 멀티스레딩 차이점

여러 작업을 동시에 수행하는 개념은 다양한 방식으로 구현될 수 있습니다. 대표적인 방식으로는 멀티태스킹(Multitasking), 멀티프로세스(Multiprocessing), 멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)이 있습니다. 이 글에서는 각각의 개념을 명확히 구분하고 차이점을 살펴보겠습니다.1. 멀티태스킹(Multitasking)멀티태스킹은 하나의 CPU에서 여러 작업을 동시에 수행하는 것처럼 보이도록 만드는 기술입니다. 현대 운영체제에서는 프로세스 스케줄러가 매우 빠르게 여러 프로세스를 전환(Switching)하여 실행하는 방식으로 멀티태스킹을 구현합니다.특징하나의 CPU에서 여러 작업을 처리하는 것처럼 보임 (시간 분할 방식)실제로는 여러 작업을 매우 빠..

CS 2025.04.03

컨텍스트 스위칭(Context Switching)이란?

1. 컨텍스트 스위칭이란?컨텍스트 스위칭(Context Switching) 은 CPU가 하나의 작업(프로세스 또는 스레드)에서 다른 작업으로 전환될 때 발생하는 과정입니다.운영체제는 멀티태스킹을 위해 여러 프로세스를 빠르게 전환해야 하며, 이를 위해 현재 실행 중인 프로세스의 상태(Context)를 저장하고, 새롭게 실행할 프로세스의 상태를 불러오는 작업이 필요합니다.2. 프로세스와 스레드의 차이컨텍스트 스위칭을 이해하려면 프로세스(Process) 와 스레드(Thread) 의 개념을 먼저 살펴볼 필요가 있습니다.구분프로세스(Process)스레드(Thread)정의실행 중인 프로그램의 인스턴스프로세스 내에서 실행되는 경량 프로세스주소 공간독립적인 주소 공간 가짐같은 프로세스 내에서 주소 공간 공유자원독립적인..

CS 2025.04.03

멀티스레드(Multi-threading)란?

멀티스레드(Multi-threading)는 하나의 프로세스 내에서 여러 개의 스레드를 실행하는 기술을 의미합니다. 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위로, 멀티스레드를 활용하면 하나의 프로그램이 동시에 여러 작업을 수행할 수 있습니다.1. 멀티스레드의 개념1.1 스레드(Thread)란?스레드는 운영체제에서 프로세스의 실행 단위를 의미하며, 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다. 모든 스레드는 같은 프로세스 내에서 메모리를 공유하며 독립적인 실행 흐름을 가집니다.1.2 멀티스레드의 동작 방식멀티스레드는 하나의 프로세스 내에서 여러 개의 작업을 동시에 수행하는 방식입니다. 운영체제는 스케줄러를 통해 CPU 시간을 각 스레드에 분배하며, 이를 통해 병렬 실행이 가능합니다.2..

CS 2025.03.11

자바(Java)에서 스레드를 구현하는 방법

Java에서 스레드를 구현하는 방법은 여러 가지가 있으며, 대표적으로 다음과 같은 방식이 있습니다.Thread 클래스를 상속받아 구현Runnable 인터페이스를 구현Callable과 Future를 활용ExecutorService를 이용한 스레드 풀(Thread Pool) 활용 1. Thread 클래스를 상속받아 구현Thread 클래스를 직접 상속하여 run() 메서드를 오버라이딩하는 방식입니다.class MyThread extends Thread { @Override public void run() { for (int i = 0; i 특징Thread 클래스를 상속받으면 다른 클래스를 상속받을 수 없음 (단일 상속 문제)단순한 구현이 필요할 때 적합2. Runnable 인터페이스를 ..

Back_End/Java 2025.02.03

프로세스(Process)와 스레드(Thread)

[ 프로세스란 무엇인가? ]프로세스는 실행 중인 프로그램을 의미합니다. 운영 체제에서 메모리, CPU와 같은 시스템 자원을 할당받아 독립적으로 실행됩니다. 프로세스는 각자의 메모리 공간을 가지며, 다른 프로세스와 메모리 공간을 공유하지 않습니다.프로세스의 주요 특징독립성: 각 프로세스는 고유의 메모리 영역(코드, 데이터, 힙, 스택)을 가지며, 다른 프로세스와 분리되어 실행됩니다.운영 체제의 관리: 프로세스는 운영 체제에 의해 생성, 관리, 종료됩니다.비용: 프로세스 간 문맥 전환(Context Switching)은 많은 시스템 자원을 소모합니다. 프로세스의 구성 요소Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령)Data : 전역 변수, 정적 변수, 배열 등 초기화된 ..

CS 2025.01.21

Blocking vs Non-Blocking

Blocking과 Non-Blocking은 프로세스나 스레드가 작업을 처리하는 방식에서 중요한 개념으로, 동기적 처리와 비동기적 처리와도 밀접하게 연관되어 있다.1. BlockingBlocking은 작업이 완료될 때까지 해당 프로세스나 스레드가 기다리는 방식입니다. 즉, 작업이 끝날 때까지 다음 작업으로 진행하지 못하고 멈춘 상태로 대기합니다.특징동기적 처리: 대부분의 Blocking 작업은 동기적으로 이루어집니다.대기 상태: 작업이 완료될 때까지 다른 작업을 수행하지 못함.단순한 구현: 구현이 간단하며 디버깅이 용이.장점예측 가능한 동작 방식.구현 및 유지보수가 쉬움.단점대기 시간 동안 자원이 낭비됨.시스템의 응답 속도가 저하될 가능성.예시파일 읽기/쓰기: read() 또는 write() 호출이 완료될..

CS 2024.12.26