CS/*

멀티 프로세스(Multi Process) vs 멀티 스레드(Multi Thread)

닉네임생각즁 2024. 3. 31. 19:31

 

프로세스

- 정적인 프로그램이 실행되어 동적으로 작업되고 있는 상태

- 메모리에 올라가 CPU 자원을 할당받음

 

스레드

- 하나의 프로세스 내에서 동시에 진행되는 작업 흐름들

- 스레드 수가 많을수록 프로그램 성능이 올라감

 

즉, 한 프로세스 안에서 스레드가 진행되는거라고 할 수 있다.

 

 

멀티 프로세스

- 하나의 프로그램에서 여러 개의 프로세스를 실행하는 것

  → 예를 들어, 크롬을 실행시킨 후 탭을 계속 만들어서 사용할 수 있는데 이때 탭들은 각각 다른 사이트들을 실행시키고 있다. 크롬이 하나의 프로그램이고 각 탭들이 여러 개의 프로세스인것이다.

- 각 프로세스는 고유한 PID(Process ID)를 가지고 있고, 서로 독립적으로 실행되며 독립적인 메모리 공간을 가짐

  → 예를 들어, 콘서트 티켓팅을 할 때 멈출것을 대비해 여러개의 탭으로 실행시켜놓는다. 처음 시도했던 탭이 멈추면 다음 탭에 가서 시도해볼 수 있다. 각 탭다마 다른 프로세스로 동작하기 때문에 하나의 탭이 멈춰도 다음 탭은 실행이 가능한 것이다.

 

- 각 프로세스가 서로에게 영향을 주지 않으므로 안전성이 높음

그러나 각 프로세스가 독립적인 메모리 공간을 가지므로 메모리 사용량이 증가함 

 

 

 

멀티 스레드

- 하나의 프로세스 안에서 두가지 이상의 동작을 처리할 수 있도록 하는 것

  → 예를 들어, 크롬을 실행시킨 후 하나의 탭 안에서 정보를 검색했다고 해보자. 한 블로그에서 정보와 관련된 문서를 발견하여 다운받는다면 다운받는 동시에 뒤로 나와 다른 글을 확인할 수 있다. 

 

- 멀티 프로세스보다 적은 메모리 사용, Context Switching이 빠름

그러나 하나의 스레드에 문제가 생겼을 때 전체 스레드가 종료 될 위험을 갖고 있음

Context Switching
-현재 진행하고 있는 Process/Thread의 상태를 저장하고 다음 진행할 일의 상태 값을 읽어 적용하는 과정

 

 

 

 

 

 

 

혹시 틀린 정보가 있다면 댓글 부탁드립니다😎

 

'CS > *' 카테고리의 다른 글

운영체제  (0) 2024.03.28