본문 바로가기
영상 후기/운영체제

영상 후기 - 코다의 Process vs Thread

by 올리브영 2023. 3. 3.
728x90
반응형

movie

키워드

  1. 실행 단위 - cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념
  2. 프로세스 - 하나의 스레드만 가지고 있는 단일 스레드 프로세스
  3. 동시성 - 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것

1. 프로그램과 프로세스

프로그램 : 피자 레시피

프로세스 : 피자

프로그램이 프로세스로 되어지는 것이다.

 

프로그램이 프로세스가 되면서 어떤일이 일어나는지?

  1. 프로세스가 필요로 하는 재료들이 메모리에 올라가야 한다.
  2. 메모리에는 Code, Data, Heap, Stack 영역으로 나누어진다.
  3. 해당 프로세스에 대한 정보를 담고 있는 PCB블럭이 프로세스 생성시 함께 만들어진다.

 

2. 프로세스 & 스레드

<전제>

사람들은 하나의 프로세스만 사용하기보다는 카카오톡, 크롬, 음악 등등 여러가지를 동시에 사용하고 싶어한다.

하지만 원래 한 프로세스가 실행되기 위해서 CPU를 점유하고 있으면 다른 프로세스는 실행 상태에 있을 수 없다.

 

  • 컨텍스트 스위칭은 다수의 프로세스를 동시에 실행하기 위해 여러 개 프로세스를 시분할(짧은 텀 반복)로 실행한다.
  • 컨텍스트 스위칭을 줄이기 위해 경화된 프로세스인 스레드가 등장했다. 하나의 프로세스 안에 다수의 스레드가 있을 때 공유되는 자원(Code, Data, Stack영역)이 있기 때문이다. 스레드는 한 프로세스에 stack 영역을 제외하고 공유하여 사용한다. 그래서 메모리에 효율적이다.

 

컨텍스트 스위칭은 CPU를 한 프로세스가 점유하는 것이 아닌 여러 개의 프로세스가 돌아가면서 사용한다.

3. 멀티프로세스 vs 멀티스레드

멀티프로세스와 멀티스레드 이 두 가지 개념이 모두 처리방식의 일종이다.

 

  • 멀티프로세스는 부모 프로세스가 fork()를 해서 자식 프로세스를 생성하고 각 프로세스는 독립된 메모리를 가진다.
  • 멀티스레드는 한 프로세스의 실행단위를 여러 개로 나눈것이다. 즉, 프로세스 내에서 분리해서 여러 스레드로 나뉘어서 실행단위가 나뉘어지면 멀티스레드가 된다.(인텔리제이를 사용하면서 코드를 작성하는 동시에 추천코드도 보여주는 등)
  • 한 어플리케이션에 대한 작업의 단위가 나누어질때가 많아서 이때 각각의 스레드가 그 작업들을 담한다. 이게 멀티 스레드이다.
멀티프로세스 멀티스레드
각 프로세스는 독립적 Thread끼리 긴밀하게 연결되어 있음
IPC를 사용한 통신 공유된 자원으로 통신 비용 절감
자원 소모적, 개별 메모리 차지 공유된 자원으로 메모리가 효율적임
컨텍스트 스위칭 비용이 큼 컨텍스트 스위칭 비용이 적음
동기화 작업이 필요하지 않음 공유 자원 관리를 해야

 

4. 멀티코어

멀티코어는 병렬처리, 물리적으로 여러 코어를 사용 해서 다수의 실행 단위를 한순간에 동시에 처리할 수 있게 해준것.

 

5. 요약

  1. 프로세스는 프로그램이 실행된 것이다.
  2. 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위이다.
  3. 한 어플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티 프로세스 멀티 스레드)이 있다.
  4. 동시에 실행이 되는 것처럼 보이기 위해서 실행 단위는 시분할로 CPU를 점유하며 context switching을 한다.
  5. 멀티 프로세스는 독립적인 메모리르 가지지만 멀티 스레드는 자원을 공유한다.
728x90
반응형