먼저, 프로세스는 운영체제로부터 자원을 할당받은 작업의 단위이며 쓰레드는 프로세스가 할당 받은 자원을 이용하는 실행흐름의 단위입니다.
앞서 이야기했 듯 프로세스와 스레드는 개념의 범위부터 다릅니다. 스레드는 프로세스 안에 포함되어 있기 때문입니다.
운영체제가 프로세스에게 Code/Data/Stack/Heap 메모리 영역을 할당해 주고 최소 작업 단위로 삼는 반면, 스레드는 프로세스 내에서 Stack 메모리 영역을 제외한 다른 메모리 영역을 같은 프로세스 내 다른 스레드와 공유합니다.
프로세스는 다른 프로세스와 정보를 공유하려면 IPC를 사용하는 등의 번거로운 과정을 거쳐야 하지만, 스레드는 기본 구조 자체가 메모리를 공유하는 구조이기 때문에 다른 스레드와 정보 공유가 쉽습니다. 때문에 멀티태스킹보다 멀티스레드가 자원을 아낄 수 있게 됩니다. 다만 스레드의 스케줄링은 운영체제가 처리하지 않기 때문에 프로그래머가 직접 동기화 문제에 대응할 수 있어야 합니다.
프로세스: 운영체제로부터 자원을 할당받은 작업의 단위.
스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다.
프로그램은 코드 덩어리 파일, 그 프로그램을 실행한 게 프로세스.
스레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로다.
출처 : https://velog.io/@raejoonee/프로세스와-스레드의-차이
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
'공부 정리 > 면접 준비' 카테고리의 다른 글
[ 인공지능 ] Loss Surface란? (0) | 2023.03.01 |
---|---|
[ 데이터 베이스 ] RDBMS와 NOSQL의 특징에 대해서 설명해 보세요. (0) | 2023.02.26 |
[ 인공지능 ] 머신러닝과 딥러닝의 차이점은? (0) | 2023.02.24 |
[ 네트워크 ] TCP와 UDP의 특징을 설명해 보세요. (0) | 2023.02.23 |
[보이저엑스 - 인공지능] Gradient Descent란? (0) | 2023.02.21 |