멀티프로세스와 멀티쓰레드는 각각 어떤건지 설명해주세요

멀티 프로세스, 멀티 스레드를 왜 사용할까?

| 단일 프로세스 시스템 | - 한 번에 하나의 프로그램만 실행

  • 단점 : CPU 사용률이 좋지 않음
    멀티 프로그래밍 - 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시킴
  • 단점 : 하나의 프로세스의 CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기 | | ↓ | | | 멀티 태스킹 | - 멀티 프로그래밍 + 시간을 아주 짧은 시간으로 쪼개서 프로세스들을 번갈아 가면서 실행 (→ 동시에 여러 프로그램이 실행되는 것처럼 느낌) |

  • 멀티 태스킹의 한계

    • 하나의 프로세스가 동시에 여러 작업 수행 X → 여러 프로세스 만들어야 함
      • 프로세스의 컨텍스트 스위칭은 무거운 작업
      • 프로세스끼지 데이터 공유 까다로움
    • 듀얼 코어 등장 이후 활용 방법 필요

    → 멀티 프로세스, 멀티 스레딩

멀티 프로세스, 멀티 스레드

프로그래밍에서 함께 처리하기 위해 사용하는 기술 프로그램의 둘 이상의 부분을 동시에 실행하여 CPU를 최대한 활용

멀티 프로세스

Untitled

Untitled

  • 다수의 프로세스가 서로 협력적으로 일을 처리
  • 둘 이상의 코어가 프로세스를 병렬로 분담해서 병행하여 실행
    • 병렬 처리 : 여러 작업을 동시에 실행
    • 병행 처리 : 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리
  • fork를 통해 프로세스를 다수 개로 늘려 여러 개의 프로그램들을 병렬로 처리

참고) 푸드트럭에의 비유

  • 병렬 처리 : 푸드 트럭에 네 대의 로봇이 있다면, 각각의 로봇이 한 종류의 버거를 맡아서 요리
  • 병행 처리 : 네 개의 버거를 두 대의 로봇이 만들 때 → 동시에 버거를 네 개 만드는 것처럼
    로봇1 빵 깔기 빵 깔기 패티 올리기 패티 올리기
    로봇2 야채 썰어 올리기 야채 썰어 올리기

멀티 스레드

Untitled

  • 하나의 프로세스 안에서 작업을 여러 스레드를 사용하여 동시에 처리 ex. 채팅 앱 : 사용자가 메시지 입력하는 도중에도 상대방이 새로운 메시지를 보냈는지 확인
  • 하나의 프로그램 안에서 병렬 처리

참고) 푸드트럭에의 비유

  • 한 개의 버거를 요리하는 작업이 하나의 프로세스일 때,
  • 스레드 : 빵을 데우는 작업, 패티를 굽는 작업, 야채를 써는 작업
  • 이를 병행 처리 : 빵 오븐에 → 패티 팬에 → 토마토 썰기 → 오븐에서 빵 꺼내기 → …

멀티 프로세스, 멀티 스레드의 활용

멀티 프로세스 멀티 스레드
장점 하나의 프로세스에 문제가 생겨도 다른 프로세스에 문제가 생기지 않음 컨텍스트 스위칭할 때 공유하고 있는 메모리 만큼의 메모리 자원을 아낌
자원의 효율성 증가, 응답 속도 빨라짐
단점 컨텍스트 스위칭이 무거움 자원을 공유 → 스레드 하나가 프로세스 내 자원을 망치면 모든 프로세스가 종료됨, 동기화 문제
예시 크롬 : 하나의 프로세스에 멀티 스레드를 사용하는 인터넷 익스플로러와 달리 여러 개의 프로세스를 사용
  • 크롬 : 하나의 화면에 문제 생겨도 다른 화면에 미치는 영향 적음 | 워드 프로세서 : 문서를 편집하면서 틀린 글자를 찾는 작업을 독립적인 스레드로 구현

  • 익스플로러 : 하나의 화면에 문제 생겨서 강제 종료하면 익스플로러 전체가 종료됨 |


참고 자료

comments powered by Disqus
Hugo로 만듦
JimmyStack 테마 사용 중