-
[OS] Process와 ThreadFrontend/Computer Science 2022. 3. 31. 19:18
우리가 다양한 프로그램을 한 번에 실행할 수 있는 것은 OS를 통해 CPU가 작업하는데 필요한 자원을 프로세스 또는 스레드 간에 나누는 멀티태스킹이 가능하기 때문이다. 여기에서 나오는 프로세스와 스레드의 개념에 대해 알아보자.
Process와 Thread의 정의
Program: 어떤 작업을 위해 실행 할 수 있는 파일
Process: 운영체제로부터 자원을 할당받은 작업의 단위, 메모리에 적재되고 CPU자원을 할당받아 실행되고 있는 프로그램
Thread: 프로세스가 할당받은 자원을 이용하는 실행의 단위메모리 영역
code: 실행 명령을 포함하는 코드들
data: static 변수 혹은 global 변수
heap: 동적 메모리 영역
stack: 지역변수, 매개변수, 변환값 등 일시적 데이터Context Switching
CPU에서는 여러 프로세스가 동시에 실행되고 관리되는 것으로 보이지만 CPU는 한 번에 한 가지 밖에 처리하지 못하기 때문에 프로세스를 번갈아가며 실행하고 관리한다. 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.
Process의 구조
- 하나의 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
- 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다.
Thread의 구조
- 스레드는 한 프로세스 내에서 동작되는 흐름으로 프로세스 내에서 Stack 영역만 별도로 할당받고, 부모 프로세스의 Code, Data, Heap 영역은 공유한다.
- 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(힙 공간 등)을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.
multi-process와 multi-thread
multi-process란 하나의 애플리케이션을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.
장점
- 하나의 프로세스에 문제가 발생해도 다른 프로세스는 동작한다.
- 구현이 비교적 간단하고, 각 프로세스들이 독립적으로 동작하며 자원의 서로 다르게 할당된다.
단점
- 메모리 사용량이 많다.
- 스케쥴링에 따른 Context Switch이 많아지고, 성능 저하의 우려가 있다.
multi-thread란 하나의 애플리케이션을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다.
장점
- 프로세스를 할당하는 것보다 스레드를 할당하는 것이 비용이 적다.
- 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 된다.
단점
- 구현 및 테스트, 디버깅이 어렵다.
- 자식 스레드 중 하나에 문제가 생긴 경우 전체 프로세스에 영향을 줄 수 있다.
참고자료
https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
반응형'Frontend > Computer Science' 카테고리의 다른 글
[자료구조] Array와 Linked List (0) 2022.03.30 [네트워크] HTTP와 HTTPS (0) 2022.03.29 [네트워크] REST API와 RESTful (0) 2022.03.26 [네트워크] CORS에 대해 (0) 2022.03.24 [네트워크] same-site와 same-origin 그리고 cross-origin (0) 2022.03.23