Process & Thread

💀LeeSY·2021년 11월 21일
0

Computer Science

목록 보기
1/1
post-thumbnail

🤔 Process?? Thread??

  • 컴퓨터 관련 서적을 읽거나 공부를 하다보면 자주 볼 수 있는 단어, 프로세스와 스레드. 그에 대한 정의 및 특징을 가볍게 알아보자.

1. Process

  • 메모리에 올라와 현재 실행되고 있는 프로그램의 인스턴스
  • 운영체제로부터 독립된 메모리를 할당받는다.
  • 프로세스들은 독립적이기 때문에 통신을 위한 IPC가 요구된다.

    IPC : 프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다.

  • 각 프로세스는 최소 1개의 Thread를 가지고 있다.

2.Thread

  • 프로세스 내에서 할당받은 자원을 이용해 동작하는 흐름의 실행 단위
  • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.

    Stack을 분리하는 이유 : Stack에는 함수의 호출 정보가 저장되는데, Stack을 공유하면 LIFO(후입선출) 구조에 의해 실행 순서가 복잡해지기 때문에 실행 흐름을 원활하게 하기 위함이다.

  • 스레드는 프로세스의 자원을 공유하기 때문에 다른 스레드에 의한 결과를 즉시 확인 가능하다.
  • 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행된다.

🤔 Multi Process?? Multi Thread??

1. Multi Process

  • 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(Task)을 처리하도록 하는 것이다.
  • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.
  • 독립된 구조로서 안정성이 높다.
  • 독립된 구조이다보니 작업량이 많을 시 오버헤드가 발생해 시스템 성능에 영향을 끼칠 가능성이 있다.

2. Multi Thread

  • 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것이다.
  • 시스템 자원 소모 감소, 시스템 처리율 향상, 프로그램 응답 시간 단축의 장점이 있다.
  • 하지만 자원 공유 시 동기화 문제 발생 가능성이 있고, 설계와 디버깅이 난해하다. 또한 하나의 프로세스에 문제가 생기면 전체가 영향을 받는다는 단점이 있다.

profile
A little strange but passionate, sincere hard worker.

0개의 댓글

관련 채용 정보