반응형
프로세스와 스레드
1. 프로세스(Process)란?
프로세스는 실행 중인 프로그램을 의미하며, 운영체제에서 독립적으로 실행되는 작업 단위이다. 각 프로세스는 자신만의 메모리 공간(주소 공간)을 가지며, CPU 스케줄링에 의해 실행된다.
프로세스의 특징
- 독립적인 실행 단위: 각 프로세스는 별도의 메모리 공간을 가짐.
- 고유한 주소 공간 할당: 코드, 데이터, 힙, 스택 등의 영역을 포함.
- 자원(메모리, 파일, 네트워크 등)을 독립적으로 관리.
- 멀티 프로세싱을 활용하면 여러 프로세스를 병렬 실행 가능.
프로세스의 메모리 구조
영역 | 설명 |
코드(Code) | 실행할 명령어 저장 |
데이터(Data) | 전역 변수 및 정적 변수 저장 |
힙(Heap) | 동적 할당된 메모리 공간 |
스택(Stack) | 함수 호출 및 지역 변수 저장 |
프로세스 생성 방법
- 운영체제가 프로그램을 실행할 때 프로세스를 생성
- 부모 프로세스가 자식 프로세스를 생성 (예: fork() 시스템 호출)
- 사용자가 명령어를 입력하여 직접 실행
2. 스레드(Thread)란?
스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 같은 프로세스 내에서 여러 개의 스레드가 실행될 수 있다. 스레드는 코드, 데이터, 힙을 공유하지만, 스택은 독립적으로 할당된다.
스레드의 특징
- 한 프로세스 내에서 다수의 스레드가 실행 가능.
- 메모리 공간(Code, Data, Heap)을 공유하여 빠른 데이터 교환이 가능.
- 각 스레드는 독립적인 Stack을 가지며, 개별 실행 흐름을 가짐.
- 멀티스레딩을 활용하면 하나의 프로세스에서 여러 작업을 동시에 수행 가능.
스레드의 메모리 구조
영역 | 공유 여부 |
코드(Code) | 공유 |
데이터(Data) | 공유 |
힙(Heap) | 공유 |
스택(Stack) | 개별 할당 |
3. 프로세스와 스레드의 차이
비교 항목 | 프로세스(Process) | 스레드(Thread) |
실행 단위 | 독립적인 프로그램 | 프로세스 내의 작업 단위 |
메모리 공유 | 독립적인 메모리 공간 사용 | 코드, 데이터, 힙을 공유, 스택만 독립적 |
실행 속도 | 상대적으로 느림 (문맥 교환 오버헤드) | 상대적으로 빠름 (같은 주소 공간 활용) |
통신 방식 | IPC(Inter-Process Communication) 필요 | 같은 메모리 내에서 데이터 공유 가능 |
안정성 | 하나의 프로세스가 종료되어도 다른 프로세스 영향 없음 | 하나의 스레드가 오류 발생 시, 같은 프로세스의 다른 스레드도 영향을 받을 수 있음 |
4. 프로세스와 스레드의 활용
멀티프로세싱 (Multi-Processing)
- 여러 개의 프로세스를 동시에 실행하는 방식.
- CPU 코어가 많을수록 성능이 향상됨.
- 예제: 웹 서버에서 여러 요청을 개별 프로세스로 처리.
멀티스레딩 (Multi-Threading)
- 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 방식.
- 프로세스 간 전환보다 스레드 간 전환이 빠름.
- 예제: 웹 브라우저에서 여러 탭을 동시에 로딩, 게임에서 여러 캐릭터 동시 제어.
5. 프로세스와 스레드의 장단점
구분 | 장점 | 단점 |
프로세스 | 안정성이 높음, 독립적인 실행 | 메모리 사용량이 많음, 프로세스 간 통신 비용이 높음 |
스레드 | 실행 속도가 빠름, 자원 공유로 메모리 효율적 사용 | 동기화 문제 발생 가능, 한 스레드 오류 시 전체 프로세스 영향을 받을 수 있음 |
- 프로세스는 독립적인 실행 단위로, 서로 영향을 받지 않고 실행됨.
- 스레드는 프로세스 내에서 실행되는 단위로, 빠르고 효율적이지만 하나의 스레드 오류가 전체 프로세스에 영향을 줄 수 있음.
- 멀티프로세싱과 멀티스레딩은 각각 장점과 단점이 있으므로, 상황에 맞게 선택하여 사용해야 한다.
반응형
'기록 > 부트캠프' 카테고리의 다른 글
새로운 개발 패러다임, 바이브 코딩(Vibe Coding) (2) | 2025.04.02 |
---|---|
Javascript 계산기 프로젝트 (3) | 2025.03.27 |
터미널, CLI란? (0) | 2025.02.14 |
IDE와 코드에디터, Visual Studio Code와 확장 프로그램 추천 (0) | 2025.02.14 |
미션7. 웹 개발의 두 가지 포지션 (0) | 2025.02.14 |