IT/CS

[CS] Multi-Process vs Multi-Thread

어린이개발자 2023. 5. 7. 22:26

멀티 프로세스와 멀티 스레드에 대한 개념 정리를 위해 포스팅 한다.

0. Process 와 Thread 란?

- Process

  • 운영체제 로부터 시스템 자원을 할당 받는 작업의 단위
  • Code, Data, Stack, Heap 의 메모리 영역 구성

 

- Thread

  • Process 내에서 실행되는 작업의 단위
  • CPU 이용의 기본 단위
  • Code, Data, Heap 영역 공유
  • 각 Thread 는 별도의 Stack 영역을 가짐

1. Multi-Process

- 개념

  • 2개 이상의 프로세스가 동시에 실행되는 것, 이 때 프로세스 들은 CPU 와 메모리를 공유함
  • 여러 프로세스가 동시에 메모리에 적재된 경우, 각 프로세스가 자신의 메모리 영역에만 접근하도록 운영체제가 관리

2. Multi-Thread

- 개념

  • 하나의 프로세스 내에서 2개 이상의 스레드가 동시에 작업을 수행하는 것

3. Multi-Process 와 Multi-Thread 의 비교

- Multi-Process 의  Advantage

  • 스레드 간의 자원 공유 시 동기화 문제가 발생할 수 있어서 프로그램 설계 시 주의가 필요하고, 하나의 스레드에 문제가 생기면 프로세스 내의 다른 스레드에도 문제가 생길 수 있다. 반면 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높다.

- Multi-Thread 의  Advantage

    • 멀티 프로세스를 이용하던 작업을 멀티 스레드로 구현할 경우, 메모리 공간과 시스템 자원 소모가 줄어들게 된다. 또한 프로세스를 생성하고 자원을 할당하는 등의 System Call 생략할 있기 때문에 자원을 효율적으로 관리할 있다. 뿐만 아니라 Context Switching 캐시 메모리를 초기화 필요가 없어서 속도가 빠르다. 데이터를 주고 받을 때를 비교해 보면, 프로세스 간의 통신(IPC) 보다 멀티 스레드 간의 통신 비용이 적기 때문에 통신으로 인한 오버헤드가 적다. (통 별도의 자원을 이용하지 않고, 프로세스에 할당된 영역 등을 이용하여 데이터를 주고 받기 때문이다.) 

4. 파생 개념

- Process 에서 Context 란?

  • Process 가 현재 어떤 상태로 수행되고 있는지에 대한 정보. 해당 정보는 PCB (Process Control Block) 에 저장을 한다.

- PCB (Process Control Block, 운영체제가 Process 에 대해 필요한 정보를 모아 놓은 자료구조) 에 저장되는 것들은 무엇이 있는가?

      • Process number
      • Process state
      • Program Counter (PC), 레지스터
      • CPU 스케줄링 정보, 우선 순위
      • 모리 정보 (해당 Process 주소 공간 등)

- Context switch 란?

  • 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것이다. 이 때 이전의 프로세스의 상태를 PCB 에 저장하여 보관하고 새로운 프로세스의 PCB 를 읽어서 보관된 상태를 복구하는 작업이 이루어진다.

- Process 의 State 에는 어떤 것들이 있는가?

  • 실행(running), 준비(ready), 봉쇄(wait, sleep, blocked) 세 가지 상태로 구분된다.
    • 실행: 프로세스가 CPU 점유하고 명령을 수행 중인 상태
    • 준비: CPU 할당 받으면 즉시 명령을 수행할 있도록 준비된 상태
    • 봉쇄: CPU 할당 받아도 명령을 실행할 없는 상태 - ex. I/O 작업을 기다리는 경우

- Volatile 변수

    • Volatile 선언된 변수의 값을 바꿨을 다른 스레드에서 항상 최신 값을 읽어갈 있도록 해줌
      • 수의 값을 읽을 CPU Cache 저장된 값이 아닌 Main 메모리에서 읽음
        • 존에는 CPU Cache 에만 반영되고, 실제 Main 메모리에는 반영되지 않음

5. 출처

  • https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%A0%84%EA%B3%B5%EB%A9%B4%EC%A0%91-cs-%EC%99%84%EC%A0%84%EC%A0%95%EB%B3%B5
  • http://www.tcpschool.com/java/java_thread_multi

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

[CS] Web Socket  (0) 2023.05.16
[CS] TCP vs UDP  (0) 2023.05.15
[CS] Hash Table  (2) 2023.05.14
[CS] Index  (0) 2023.05.13
[CS] OSI 7 Layer  (0) 2023.05.10