프로세스 & 스레드: 두 판 사이의 차이
기술노트
(CS 용어 정리 - 프로세스 & 스레드 추가) |
(Gemini 벌크 업로더로 자동 업로드) |
||
1번째 줄: | 1번째 줄: | ||
== 프로세스 & 스레드 == | == ⚙️ 프로세스 (Process) & 스레드 (Thread) == | ||
'''프로세스'''와 '''스레드'''는 운영체제에서 프로그램을 실행하는 데 사용되는 핵심 개념입니다. 둘 다 작업을 수행하는 실행 단위이지만, 자원 공유 방식에서 큰 차이를 보입니다. | |||
---- | |||
=== 🧱 프로세스 (Process) === | |||
프로세스는 '''실행 중인 프로그램의 인스턴스'''입니다. 운영체제로부터 독립적인 메모리 공간(Code, Data, Heap, Stack)과 자원(파일 핸들, 네트워크 연결 등)을 할당받아 실행됩니다. 각 프로세스는 다른 프로세스와 독립적으로 동작합니다. | |||
* '''독립적인 메모리 공간''' : 다른 프로세스의 메모리 영역을 침범할 수 없습니다. | |||
* '''무거운 생성/소멸''' : 프로세스를 생성하고 제거하는 데 많은 자원과 시간이 소요됩니다. | |||
* '''프로세스 간 통신 (IPC)''' : 프로세스 간에 데이터를 주고받으려면 별도의 IPC(Inter-Process Communication) 메커니즘(파이프, 소켓, 공유 메모리 등)을 사용해야 합니다. | |||
---- | |||
=== 🧵 스레드 (Thread) === | |||
스레드는 '''프로세스 내에서 실행되는 작업의 최소 단위'''입니다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 각 스레드는 독립적인 실행 흐름을 가집니다. | |||
* '''메모리 공유''' : 같은 프로세스 내의 다른 스레드와 Code, Data, Heap 영역을 공유합니다. 각 스레드는 자신만의 독립적인 Stack과 프로그램 카운터(PC) 레지스터를 가집니다. | |||
* '''가벼운 생성/소멸''' : 프로세스보다 생성 및 소멸이 훨씬 가볍고 빠릅니다. | |||
* '''스레드 간 통신''' : 메모리를 공유하므로, 별도의 통신 메커니즘 없이 직접 데이터를 주고받을 수 있어 효율적입니다. | |||
---- | |||
=== 💡 정보처리기사 핵심 Point === | |||
* | * 정보처리기사 시험에서는 '''프로세스와 스레드의 개념, 그리고 자원 공유 방식의 차이점'''을 묻는 문제가 자주 출제됩니다. | ||
* '''멀티태스킹(Multitasking)'''은 여러 프로세스를 동시에 실행하는 것이고, '''멀티스레딩(Multithreading)'''은 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 것입니다. | |||
* 스레드 간의 메모리 공유는 효율적이지만, 여러 스레드가 공유 자원에 동시에 접근할 때 '''동기화 문제(경쟁 상태, 교착 상태)'''가 발생할 수 있습니다. 이를 해결하기 위한 동기화 기법(뮤텍스, 세마포어 등)에 대한 이해가 중요합니다. | |||
''' | |||
''' | |||
''' | |||
''' | |||
2025년 9월 6일 (토) 05:54 기준 최신판
⚙️ 프로세스 (Process) & 스레드 (Thread)
프로세스와 스레드는 운영체제에서 프로그램을 실행하는 데 사용되는 핵심 개념입니다. 둘 다 작업을 수행하는 실행 단위이지만, 자원 공유 방식에서 큰 차이를 보입니다.
🧱 프로세스 (Process)
프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제로부터 독립적인 메모리 공간(Code, Data, Heap, Stack)과 자원(파일 핸들, 네트워크 연결 등)을 할당받아 실행됩니다. 각 프로세스는 다른 프로세스와 독립적으로 동작합니다.
- 독립적인 메모리 공간 : 다른 프로세스의 메모리 영역을 침범할 수 없습니다.
- 무거운 생성/소멸 : 프로세스를 생성하고 제거하는 데 많은 자원과 시간이 소요됩니다.
- 프로세스 간 통신 (IPC) : 프로세스 간에 데이터를 주고받으려면 별도의 IPC(Inter-Process Communication) 메커니즘(파이프, 소켓, 공유 메모리 등)을 사용해야 합니다.
🧵 스레드 (Thread)
스레드는 프로세스 내에서 실행되는 작업의 최소 단위입니다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 각 스레드는 독립적인 실행 흐름을 가집니다.
- 메모리 공유 : 같은 프로세스 내의 다른 스레드와 Code, Data, Heap 영역을 공유합니다. 각 스레드는 자신만의 독립적인 Stack과 프로그램 카운터(PC) 레지스터를 가집니다.
- 가벼운 생성/소멸 : 프로세스보다 생성 및 소멸이 훨씬 가볍고 빠릅니다.
- 스레드 간 통신 : 메모리를 공유하므로, 별도의 통신 메커니즘 없이 직접 데이터를 주고받을 수 있어 효율적입니다.
💡 정보처리기사 핵심 Point
- 정보처리기사 시험에서는 프로세스와 스레드의 개념, 그리고 자원 공유 방식의 차이점을 묻는 문제가 자주 출제됩니다.
- 멀티태스킹(Multitasking)은 여러 프로세스를 동시에 실행하는 것이고, 멀티스레딩(Multithreading)은 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 것입니다.
- 스레드 간의 메모리 공유는 효율적이지만, 여러 스레드가 공유 자원에 동시에 접근할 때 동기화 문제(경쟁 상태, 교착 상태)가 발생할 수 있습니다. 이를 해결하기 위한 동기화 기법(뮤텍스, 세마포어 등)에 대한 이해가 중요합니다.