728x90

프로세스와 스레드를 이해하기 전에 메모리 구조에대해 한 번 이해하고 오는 것을 추천한다.(아래 링크 클릭)

 

https://jfbta.tistory.com/106

 

CS개념잡기 1탄 ] 메모리의 구조 및 프로그램 실행 과정 알기

1. 메모리의 데이터가 쌓이는 과정 우리는 컴퓨터를 사용할 때 많은 프로그램을 사용한다. 프로그램을 실행하면 메모리에 쌓이면서 프로세스가 수행하게 된다. 이 때 메모리는 무슨역할을 하는

jfbta.tistory.com


1. 프로세스(Process)

 ① 프로세스란?

   - 이해를 돕기 위해 예시를 들겠다. 우리는 컴퓨터를 하면서 두 가지 이상의 프로그램을 자주 사용한다. 이때 CPU에서는 시분할로 굉장히 짧게 반복하면서 실행한다.(아래 컨텍스트 스위칭 이미지 참고)

 

 ② 컨텍스트 스위칭

CPU에서 두 개의 프로세스 컨텍스트 스위칭

  - 두 개의 프로그램을 실행할 때 2개의 프로세스가 실행되는 경우 하나가 실행되면 다른 하나는 준비 상태가 된다. 이를 '컨텍스트 스위칭' 이라고 한다. 그런데 이렇게 되면 비효율적인 부분이 있는데 뭐냐하면 자원을 공유하지 않는 것이다.

 

 ③ 자원을 공유하지 않는다는 것은 뭘까?

  - 만약 회의실에서 두팀이 번갈아가면서 회의를 하는데 회의용 '모니터', '마우스', '리모컨' 등을 공유하지 않고 가져가는 것과 같다.

  - 그렇기 때문에 경우에 따라 이런 치명적인 단점을 커버할 수 있는 '경량화된 프로세스'인 스레드가 필요한 것이다.

 

2. 스레드(Thread)

 ① 스레드란?

  - 프로세스내에 '작은 프로세스'이다. 프로세스내의 자원(메모리)를 공유하기 때문에 효율적이며 '캐싱 적중률'이 높다. 두 개의 프로그램이 실행될 때 공통으로 사용할 만한 것들을 공유하는 것이다.

3. 처리방식

 ① 멀티 프로세스(Multi-process)

    - 멀티 프로세스는 프로그램을 실행할 때 독립적인 메모리를 확보한 '자식 프로세스'를 fork하여 처리하는 것이다.

 

 ② 멀티 스레드(Multi-thread)

    - 멀티 스레드는 프로세스내에서 여러 스레드로 나뉘어서 실행하는 것이다.

 

 ③ 멀티 프로세스와 멀티 스레드의 차이

멀티 프로세스 멀티 스레드
메모리 영역이 독립적 메모리를 공유
IPC를 사용한 통신 자원 공유로 통신 비용 절감
자원 소모적, 개별 메모리 차지 자원 공유로 메모리가 효율적
컨텍스트 스위칭 비용이 큼 컨텍스트 스위칭 비용이 적음
동기화 작업이 필요하지 않음 공유 자원 관리

  - 멀티 프로세스는 독립적이기 때문에 IPC를 사용한 통신이 필요하다.( 공유하기 위함 )

    반면에 독립적이어서 동기화 작업이 필요하지 않다.

 

  - 멀티 스레드는 자원이 공유되어 동기화에 신경을 써야한다. ( 실행 시 같은 업무를 중복해서 작업할 수 있음 )

    공유가 빨라서 컨텍스트 스위칭 비용이 적다.

728x90
TOP