Process 와 Thread

들어가며

이번 포스트에서는 Process와 Thread에 대해 정리해봅니다.

Process?

프로세스는 하나의 작업을 의미합니다. 프로그램이 동작하는 것을 프로세스라고 부르기도합니다.

예를 들어 밥을 먹는 일련의 과정 , 게임을 하는 일련의 과정 등 작업들을 의미합니다.

 

이런 식으로 표현해 볼 수 있습니다.

그리고 하나의 컴퓨터에서 동시에 프로세스가 여러개 올라오면

Multi process라고 합니다.

그리고 이런 작업을 동시에 처리하게 되면 멀티 테스킹을 한다라고 표현합니다.

 

 

그리고 여기에는 정보가 포함되어야 합니다.

어떤 메모리를 쓰고 있고, 어디에 저장되고 있고, 어떤 환경과 연결되어있는지

해당 프로그램- 프로세스를 개발한 개발자의 의도대로 포함된 정보가 함께 들어가 있어야

컴퓨터가 이를 찾아서 연결해줄 테니까요

그리고 이런걸 PCB - Process Control Block

이를 통해 운영체제가 프로세스들을 관리하고 멀티 테스킹 - 즉 여러개의 프로세스가 동시에 실행될때 프로세스의 상태, 프로그램 카운터, 레지스터 상태, 할당된 리소스, 우선순위, 스케줄링 정보 등을 활용하게 됩니다.

 

 

Thread?

쓰레드는 프로세스의 과정중 작업의 단위를 의미합니다.

하나의 프로세스에는 최소 하나의 쓰레드가 존재하게됩니다.

각 쓰레드는 알아서 작업을 하게 됩니다. (외부 요건에 의해 동시 작업이 걸린 경우가 아니라면)

이때 쓰레드는 작업의 최소단위를 말하는데

예를 들어 밥을 먹는 과정에서 수저를 들고 , 젓가락을 들고 이런식의 최소작업단위를 말합니다.

만약 덮밥을 먹는다면 수저를 드는 작업만 해도 되고, 백반을 먹는다면 여러 작업이 필요하겠죠

그래서 이런 작업을 동시에 처리하게 된다면

이를 Multi-thread →작업 중 멀티 쓰레딩 이라고 합니다.

 

 

정리

정리하면 다음과 같습니다.

프로세스란 하나의 작업이며 프로그램이 실행중일때 운영체제로 부터 할당받고 있는 작업단위를 의마한다.

그리고 이런 프로세스가 여러개 있으면 멀티 프로세스 - 이를 동시에 실행시키며 작업하면 멀티 캐스팅 이라고 한다.

이런 멀티 캐스팅을 하기 위해서는 정보가 필요한데 이런 정보를 PCB - 프로세스 컨트롤 블록단위로 취합하여 관리한다.

그리고 프로세스의 가장 작은 작업 단위는 쓰레드 이며 최소 하나의 쓰레드가 있다.

그리고 이런 쓰레드가 여러개 있고 동시에 작업하는 경우, 멀티 쓰레드 - 작업중이면 멀티 쓰레딩

이라고 표현한다.

스프링을 사용해보면 스프링 풀 이라는 개념이 나오는데 이때 쓰레드를 적용시켜 들어오는 트래픽을 관리하는 기법이 있습니다. 생각보다 자주 나오는 개념이 이여서 정리를 해봤습니다.

여기서 더 나아가 컴퓨터 환경에서도 알아볼 수 있는데요

이것은 다음 포스트에서 다루겠습니다.

'CS' 카테고리의 다른 글

lombok AllArgsConstructor를 안쓰는 이유  (0) 2024.10.08
IP 와 Port 그리고 Socket  (0) 2024.08.08
delete method는 form-data를 못쓴다.  (0) 2024.08.07
세션과 토큰 쿠키  (1) 2024.06.10
DAO - DTO 차이점 생각해보기  (0) 2024.06.09