:프로세스와 스레드
프로세스(process)
운영체제로부터 자원을 할당받은 작업의 단위이다. 기본적으로 프로세스당 최소1개의 스레드(메인스레드)를 가지고 있다.
주요 특징
- 독립된 메모리 공간: 각 프로세스는 고유한 주소 공간을 가지고 있어 다른 프로세스와 메모리 공간을 공유하지 않음
- 자원 소유: 프로세스는 CPU시간, 메모리, 파일핸들 등과 같은 자원을 소유한다
- 고립성: 한 프로세스의 실패는 다른 프로세스에 영향을 미치지 않는다.
- 운영체제의 관리: 운영체제는 프로세스의 생성, 실행, 대기, 종료 등을 관리한다.
스레드(Thread)
스레드는 프로세스 내에서 실행되는 더 작은 실행 단위.한 프로세스는 여러 스레드를 가질 수 있으며, 이 스레드들은
프로세스의 자원을 공유한다.
주요 특징
- 공유 메모리 공간: 동일한 프로세스 내의 스레드들은 메모리 공간을 공유한다. 이를 통하여 스레드 간의 데이터 공유가빠르고 효율적
- 독립된 실행 흐름: 각 스레드는 독립적으로 실행흐름을 가지고 있다. 한 스레드가 차단되거나 대기 상태에 있어도 다른스레드는 계속 실행될 수 있다.
- 경량성: 스레드는 프로세스 보다 생성과 종료에 필요한 자원이 적다.
- 동기화 문제: 여러 스레드가 동일한 자원에 접근할 수 있으므로 동기화 문제가 발생할 수 있다. 이를 해결하기 위하여뮤텍스, 세마포어 같은 동기화 기법이 사용된다.
특징
특징 | 프로세스 | 스레드 |
메모리 공간 | 독립석인 주소 공간 | 같은 프로세스 내에서 메모리 공간을 공유 |
실행단위 | 독립적인 실행단위 | 프로세스 내의 독립적인 실행단위 |
자원 소유 | CPU시간, 메모리 등 고유 자원 소유 | 프로세스의 자원을 공유 |
생성 및 종료 비용 | 상대적으로 큼 | 상대적으로 작음 |
상호통신 | ICP(Inter-Process Communication)필요 | 메모리 공유를 통해 빠르게 통신가능 |
독립성 | 한 프로세스의 실패가 다른 프로세스에 영향없음 | 한 스레드의 실패가 프로세스의 다른 스레드에 영향 |
멀티프로세스(Multiprocessing)
멀티프로세싱은 여러개의 프로세스를 사용하여 동시에 여러 작업을 수행하는 방식.
특징
- 독립된 메모리 공간: 각 프로세스는 독립된 메모리 공간을 가지며, 다른 프로세스와 메모리 공유하지 않음
- 높은 안정성: 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않는다.
장점
- 안정성: 프로세스 간의 독립성으로 인해 한 프로세스의 오류가 전체 시스템에 영향을 미치지 않는다.
- 간단한 디버깅: 프로세스가 독립적이므로 디버깅이 비교적 간단하다.
단점
- 높은 오버헤드: 프로세스 간의 전환이 느리고 더 많은 메모리와 시스템 자원을 소비한다.
- 복잡한 통신: 프로세스 간 통신이 복잡하고 이를 위해 IPC메커니즘이 필요하다
멀티스레드(Multithreading)
멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 사용하여 동시에 여러 작업을 수행하는 방식
특징
- 공유 메모리: 같은 프로세스 내에서 실행되는 여러 스레드는 메모리와 자원을 공유
- 효율적인 자원사용: 메모리 및 시스템 자원을 효율적으로 사용한다.
장점
- 높은 성능: 스레드 간의 통신이 빠르고 효율적이다.
- 낮은 오버헤드: 스레드 간 전환이 빠르고 자원소모가 적다.
- 자원 공유: 데이터 공유가 쉽고 효율적이다.
단점
- 동기화 문제: 자원 공유로 인한 동기화 문제가 발생할 수 있으며, 이를 해결하기 위하여 추가적인 동기화 기법이 필요
- 안정성: 하나의 스레드 오규가 전체 프로세스에 영향을 미칠 수 있다.
[결과]
프로세스는 운영체제로부터 자원을 할당받은 작업의 단위이다. 각 프로세스는 고유한 메모리 공간과 자원을 가지고 있다.
스레드는 프로세스 내에서 실행되는 더 작은 단위이다 같은 프로세스 내의 다른 스레드와 메모리 공간을 공유한다.
[느낀 점]
프로그램은 명령어들의 집합이고 프로세스는 실행 중인 프로그램이다. 프로그램이 메모리에 올라가고 CPU 자원을 할당받은 상태
참조사이트
https://velog.io/@hyojhand/OS-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-vs-%EC%8A%A4%EB%A0%88%EB%93%9C
[OS] 프로세스 vs 스레드 (Process vs Thread)
프로세스는 각각 독립된 메모리영역 (Code, Data, Stack, Heap 의 구조)을 할당 받는다. 기본적으로 프로세스당 최소 1개의 스레드( 메인 스레드)를 가지고 있다.
velog.io
https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37
Process와 Thread 이야기
프로세스(Process)
charlezz.medium.com