[TIL]
[TIL] 2024.03.27 프로세스와 스레드
재호링
2024. 3. 27. 22:44
프로그램 | 프로세스 |
작업을 하기 위해 실행할 수 있는 파일 | 실행되어 작업중인 컴퓨터 프로그램 |
파일이 있지만 메모리에는 공유되어 있지 않은 정적인 상태 | 메모리에 공유되고 자원을 할당받아 프로그램이 실행된 상태 |
코드 덩어리 | 코드 덩어리를 실행한 것 |
프로세스와 쓰레드
- 프로세스는 운영체제로부터 자원을 할당받아 독립적으로 실행됨.
- 총 4개의 코드, 데이터, 메모리공간, 파일 리소스를 포함하고 있고 독립적인 주소 공간을 가지고 있어 다른 프로세스 영역에 직접적으로 접근 불가
- 쓰레드는 프로세스 '내'에서 실행되는 단위. 한 프로세스 내에서 쓰레드가 동작함
- 쓰레드는 프로세스 내에서 코드, 데이터, 메모리 공간을 공유해 공유 메모리 방식으로 통신을 함
- 차이점: 프로세스는 독립적 자원공간이라 서로의 영역에 침범 불가, 쓰레드는 공유 메모리를 사용해 통신이 간단함. 비
용적인 측면에서도 쓰레드는 프로세스보다 비교적 싸다
멀티프로세스와 멀티쓰레드
- 멀티프로세스는 여러개의 '프로세스가' 동시에 실행됨을 의미함.
- 즉, 여러개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미함.
- 안정성이 높은 방면 프로세스 간의 통신이 복잡하고 느릴 수 있다.
- 멀티쓰레드는 한 프로세스 내에서 여러개의 쓰레드가 동시에 실행되는 것
- 하나의 프로그램에서 두가지 이상의 동작을 동시에 처리하도록하는 행위이며
각 스레드는 자신이 속한 프로세스의 메모리를 공유해 시스템 자원의 낭비가 적음 - 하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업이 가능해 응답성이 좋음.
- 차이점: 멀티 프로세스는 안정성이 중시하는 경우에 사용하고, 멀티쓰레드는 성능을 개선하는데 많이 사용됨